X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fdeclarative%2Fqml%2Fqdeclarativeengine.cpp;h=335eb756dcbe6fa95fbc2959f28ec4d6405ab770;hb=45b14259fc0cf704692df1c00da511527d1fba1d;hp=50b5db897cb32daa1912adafe4f102ca359ac875;hpb=f75bd7eb78759a2b708771517b5fc64fd7a75e8a;p=profile%2Fivi%2Fqtdeclarative.git diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp index 50b5db8..335eb75 100644 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@ -1,8 +1,7 @@ /**************************************************************************** ** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ ** ** This file is part of the QtDeclarative module of the Qt Toolkit. ** @@ -35,12 +34,14 @@ ** ** ** +** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "qdeclarativeengine_p.h" #include "qdeclarativeengine.h" +#include "qdeclarativecomponentattached_p.h" #include "qdeclarativecontext_p.h" #include "qdeclarativecompiler_p.h" @@ -56,6 +57,7 @@ #include "qdeclarativesqldatabase_p.h" #include "qdeclarativescriptstring.h" #include "qdeclarativeglobal_p.h" +#include "qdeclarativelistmodel_p.h" #include "qdeclarativeworkerscript_p.h" #include "qdeclarativecomponent_p.h" #include "qdeclarativenetworkaccessmanagerfactory.h" @@ -68,9 +70,13 @@ #include #include #include +#include #include "qdeclarativeincubator.h" #include +#include +#include + #include #include #include @@ -82,9 +88,7 @@ #include -#include -#include -#include +#include #ifdef Q_OS_WIN // for %APPDATA% #include @@ -102,7 +106,6 @@ void qmlRegisterBaseTypes(const char *uri, int versionMajor, int versionMinor) { QDeclarativeEnginePrivate::registerBaseTypes(uri, versionMajor, versionMinor); QDeclarativeValueTypeFactory::registerBaseTypes(uri, versionMajor, versionMinor); - QDeclarativeUtilModule::registerBaseTypes(uri, versionMajor, versionMinor); } /*! @@ -160,13 +163,14 @@ void qmlRegisterBaseTypes(const char *uri, int versionMajor, int versionMinor) \endcode */ -static bool qt_QmlQtModule_registered = false; bool QDeclarativeEnginePrivate::qml_debugging_enabled = false; void QDeclarativeEnginePrivate::registerBaseTypes(const char *uri, int versionMajor, int versionMinor) { qmlRegisterType(uri,versionMajor,versionMinor,"Component"); qmlRegisterType(uri,versionMajor,versionMinor,"QtObject"); + qmlRegisterType(uri, versionMajor, versionMinor,"ListElement"); + qmlRegisterCustomType(uri, versionMajor, versionMinor,"ListModel", new QDeclarativeListModelParser); qmlRegisterType(uri,versionMajor,versionMinor,"WorkerScript"); } @@ -174,6 +178,8 @@ void QDeclarativeEnginePrivate::defineModule() { registerBaseTypes("QtQuick", 2, 0); qmlRegisterType(); + qmlRegisterUncreatableType("QtQuick",2,0,"Application", QDeclarativeApplication::tr("Application is an abstract class")); + qmlRegisterUncreatableType("QtQuick",2,0,"Locale",QDeclarativeEngine::tr("Locale cannot be instantiated. Use Qt.locale()")); } /*! @@ -332,22 +338,14 @@ the same object as is returned from the Qt.include() call. QDeclarativeEnginePrivate::QDeclarativeEnginePrivate(QDeclarativeEngine *e) -: captureProperties(false), rootContext(0), isDebugging(false), +: propertyCapture(0), rootContext(0), isDebugging(false), outputWarningsToStdErr(true), sharedContext(0), sharedScope(0), cleanup(0), erroredBindings(0), inProgressCreations(0), workerScriptEngine(0), activeVME(0), networkAccessManager(0), networkAccessManagerFactory(0), scarceResourcesRefCount(0), typeLoader(e), importDatabase(e), uniqueId(1), - incubatorCount(0), incubationController(0), sgContext(0), mutex(QMutex::Recursive) -{ - if (!qt_QmlQtModule_registered) { - qt_QmlQtModule_registered = true; - QDeclarativeUtilModule::defineModule(); - QDeclarativeEnginePrivate::defineModule(); - QQuickItemsModule::defineModule(); - QQuickParticlesModule::defineModule(); - QDeclarativeValueTypeFactory::registerValueTypes(); - } + incubatorCount(0), incubationController(0), mutex(QMutex::Recursive) +{ } QDeclarativeEnginePrivate::~QDeclarativeEnginePrivate() @@ -425,11 +423,7 @@ void QDeclarativeEnginePrivate::init() static bool firstTime = true; if (firstTime) { - // This is a nasty hack as QNetworkAccessManager will issue a - // BlockingQueuedConnection to the main thread if it is initialized for the - // first time on a non-main thread. This can cause a lockup if the main thread - // is blocking on the thread that initialize the network access manager. - QNetworkConfigurationManager man; + qmlRegisterType("QML", 1, 0, "Component"); firstTime = false; } @@ -452,10 +446,16 @@ void QDeclarativeEnginePrivate::init() QDeclarativeEngineDebugService::isDebuggingEnabled()) { isDebugging = true; QDeclarativeEngineDebugService::instance()->addEngine(q); - QV8DebugService::instance()->addEngine(q); - QV8ProfilerService::instance()->addEngine(q); - QDeclarativeDebugTrace::addEngine(q); + QV8DebugService::initialize(v8engine()); + QV8ProfilerService::initialize(); + QDeclarativeDebugTrace::initialize(); + QDebugMessageService::instance(); } + + QString dataLocation = QStandardPaths::writableLocation(QStandardPaths::DataLocation); + offlineStoragePath = dataLocation.replace(QLatin1Char('/'), QDir::separator()) + + QDir::separator() + QLatin1String("QML") + + QDir::separator() + QLatin1String("OfflineStorage"); } QDeclarativeWorkerScriptEngine *QDeclarativeEnginePrivate::getWorkerScriptEngine() @@ -519,9 +519,6 @@ QDeclarativeEngine::~QDeclarativeEngine() Q_D(QDeclarativeEngine); if (d->isDebugging) { QDeclarativeEngineDebugService::instance()->remEngine(this); - QV8DebugService::instance()->removeEngine(this); - QV8ProfilerService::instance()->removeEngine(this); - QDeclarativeDebugTrace::removeEngine(this); } // if we are the parent of any of the qobject module api instances, @@ -718,7 +715,7 @@ QDeclarativeImageProvider::ImageType QDeclarativeEnginePrivate::getImageProvider return QDeclarativeImageProvider::Invalid; } -QSGTexture *QDeclarativeEnginePrivate::getTextureFromProvider(const QUrl &url, QSize *size, const QSize& req_size) +QDeclarativeTextureFactory *QDeclarativeEnginePrivate::getTextureFromProvider(const QUrl &url, QSize *size, const QSize& req_size) { QMutexLocker locker(&mutex); QSharedPointer provider = imageProviders.value(url.host()); @@ -969,7 +966,7 @@ Q_AUTOTEST_EXPORT void qmlExecuteDeferred(QObject *object) QString typeName = type ? type->qmlTypeName() : QString::fromUtf8(object->metaObject()->className()); QDeclarativeDebugTrace::rangeData(QDeclarativeDebugTrace::Creating, typeName); if (data->outerContext) - QDeclarativeDebugTrace::rangeLocation(QDeclarativeDebugTrace::Creating, data->outerContext->url, data->lineNumber); + QDeclarativeDebugTrace::rangeLocation(QDeclarativeDebugTrace::Creating, data->outerContext->url, data->lineNumber, data->columnNumber); } QDeclarativeEnginePrivate *ep = QDeclarativeEnginePrivate::get(data->context->engine); @@ -1114,7 +1111,7 @@ void QDeclarativeData::addNotify(int index, QDeclarativeNotifierEndpoint *endpoi Q_ASSERT(!endpoint->isConnected()); index = qMin(index, 0xFFFF - 1); - notifyList->connectionMask |= (1 << (quint64(index) % 64)); + notifyList->connectionMask |= (1ULL << quint64(index % 64)); if (index < notifyList->notifiesSize) { @@ -1548,13 +1545,13 @@ bool QDeclarativeEngine::importPlugin(const QString &filePath, const QString &ur void QDeclarativeEngine::setOfflineStoragePath(const QString& dir) { Q_D(QDeclarativeEngine); - qt_qmlsqldatabase_setOfflineStoragePath(d->v8engine(), dir); + d->offlineStoragePath = dir; } QString QDeclarativeEngine::offlineStoragePath() const { Q_D(const QDeclarativeEngine); - return qt_qmlsqldatabase_getOfflineStoragePath(d->v8engine()); + return d->offlineStoragePath; } static void voidptr_destructor(void *v) @@ -1582,10 +1579,7 @@ QDeclarativePropertyCache *QDeclarativeEnginePrivate::createCache(const QMetaObj return rv; } else { QDeclarativePropertyCache *super = cache(mo->superClass()); - QDeclarativePropertyCache *rv = super->copy(mo->propertyCount() + mo->methodCount() - - mo->superClass()->propertyCount() - - mo->superClass()->methodCount()); - rv->append(q, mo); + QDeclarativePropertyCache *rv = super->copyAndAppend(q, mo); propertyCache.insert(mo, rv); return rv; } @@ -1800,14 +1794,13 @@ void QDeclarativeEnginePrivate::registerCompositeType(QDeclarativeCompiledData * bool QDeclarative_isFileCaseCorrect(const QString &fileName) { -#if defined(Q_OS_MAC) || defined(Q_OS_WIN32) +#if defined(Q_OS_MAC) || defined(Q_OS_WIN) QFileInfo info(fileName); - - QString absolute = info.absoluteFilePath(); + const QString absolute = info.absoluteFilePath(); #if defined(Q_OS_MAC) - QString canonical = info.canonicalFilePath(); -#elif defined(Q_OS_WIN32) + const QString canonical = info.canonicalFilePath(); +#elif defined(Q_OS_WIN) wchar_t buffer[1024]; DWORD rv = ::GetShortPathName((wchar_t*)absolute.utf16(), buffer, 1024); @@ -1815,13 +1808,13 @@ bool QDeclarative_isFileCaseCorrect(const QString &fileName) rv = ::GetLongPathName(buffer, buffer, 1024); if (rv == 0 || rv >= 1024) return true; - QString canonical((QChar *)buffer); + const QString canonical = QString::fromWCharArray(buffer); #endif - int absoluteLength = absolute.length(); - int canonicalLength = canonical.length(); + const int absoluteLength = absolute.length(); + const int canonicalLength = canonical.length(); - int length = qMin(absoluteLength, canonicalLength); + const int length = qMin(absoluteLength, canonicalLength); for (int ii = 0; ii < length; ++ii) { const QChar &a = absolute.at(absoluteLength - 1 - ii); const QChar &c = canonical.at(canonicalLength - 1 - ii);