diff options
author | Kevin Ottens <kevin.ottens.qnx@kdab.com> | 2012-08-08 10:53:41 (GMT) |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-08-20 06:26:54 (GMT) |
commit | a26f545d8e25af74fb43d16c9afa79f6e04463e7 (patch) | |
tree | 1f44716f53ea1bd33a73230b1462eb4c49703066 | |
parent | 2c459626fa2d5b8510e0e54fee3afda484fcb41e (diff) | |
download | Qt-a26f545d8e25af74fb43d16c9afa79f6e04463e7.zip Qt-a26f545d8e25af74fb43d16c9afa79f6e04463e7.tar.gz Qt-a26f545d8e25af74fb43d16c9afa79f6e04463e7.tar.bz2 |
Register less types for QtDeclarative/QCoreApplication
In Qt5 QtQml and QtQuick are separated so you have control on the
amount of facilities you need. It is not the case in Qt4
unfortunately so you always pay the price of those registration.
To overcome that, this patch avoids quite some of the type
registration when we detect we're not running a QApplication. In
such case all the GUI related QtQuick 1 runtime is not usable
anyway.
We keep around only a handful of convenience like Timer, Connection,
Component, etc.
Change-Id: Idf5aa935795a224ceb5bc66015282fd094b5686c
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Chris Adams <christopher.adams@nokia.com>
-rw-r--r-- | src/declarative/qml/qdeclarativeengine.cpp | 11 | ||||
-rw-r--r-- | src/declarative/util/qdeclarativeutilmodule.cpp | 132 | ||||
-rw-r--r-- | src/declarative/util/qdeclarativeutilmodule_p.h | 3 |
3 files changed, 78 insertions, 68 deletions
diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp index e735445..a787fb6 100644 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@ -87,6 +87,7 @@ #include <QStack> #include <QMap> #include <QPluginLoader> +#include <QtGui/qapplication.h> #include <QtGui/qfontdatabase.h> #include <QtCore/qlibraryinfo.h> #include <QtCore/qthreadstorage.h> @@ -354,10 +355,14 @@ QDeclarativeEnginePrivate::QDeclarativeEnginePrivate(QDeclarativeEngine *e) { if (!qt_QmlQtModule_registered) { qt_QmlQtModule_registered = true; - QDeclarativeItemModule::defineModule(); - QDeclarativeUtilModule::defineModule(); QDeclarativeEnginePrivate::defineModule(); - QDeclarativeValueTypeFactory::registerValueTypes(); + + const QApplication::Type appType = QApplication::type(); + if (appType != QApplication::Tty) { + QDeclarativeItemModule::defineModule(); + QDeclarativeValueTypeFactory::registerValueTypes(); + } + QDeclarativeUtilModule::defineModule(appType); } globalClass = new QDeclarativeGlobalScriptClass(&scriptEngine); } diff --git a/src/declarative/util/qdeclarativeutilmodule.cpp b/src/declarative/util/qdeclarativeutilmodule.cpp index ebb44e1..363decd 100644 --- a/src/declarative/util/qdeclarativeutilmodule.cpp +++ b/src/declarative/util/qdeclarativeutilmodule.cpp @@ -74,38 +74,47 @@ #include "private/qdeclarativexmllistmodel_p.h" #endif -void QDeclarativeUtilModule::defineModule() +void QDeclarativeUtilModule::defineModule(QApplication::Type appType) { - qmlRegisterUncreatableType<QDeclarativeApplication>("QtQuick",1,1,"Application", QDeclarativeApplication::tr("Application is an abstract class")); + if (appType != QApplication::Tty) { + qmlRegisterUncreatableType<QDeclarativeApplication>("QtQuick",1,1,"Application", QDeclarativeApplication::tr("Application is an abstract class")); + + qmlRegisterType<QDeclarativeAnchorAnimation>("QtQuick",1,0,"AnchorAnimation"); + qmlRegisterType<QDeclarativeAnchorChanges>("QtQuick",1,0,"AnchorChanges"); + qmlRegisterType<QDeclarativeBehavior>("QtQuick",1,0,"Behavior"); + qmlRegisterType<QDeclarativeColorAnimation>("QtQuick",1,0,"ColorAnimation"); + qmlRegisterType<QDeclarativeSmoothedAnimation>("QtQuick",1,0,"SmoothedAnimation"); + qmlRegisterType<QDeclarativeFontLoader>("QtQuick",1,0,"FontLoader"); + qmlRegisterType<QDeclarativeNumberAnimation>("QtQuick",1,0,"NumberAnimation"); + qmlRegisterType<QDeclarativePackage>("QtQuick",1,0,"Package"); + qmlRegisterType<QDeclarativeParallelAnimation>("QtQuick",1,0,"ParallelAnimation"); + qmlRegisterType<QDeclarativeParentAnimation>("QtQuick",1,0,"ParentAnimation"); + qmlRegisterType<QDeclarativeParentChange>("QtQuick",1,0,"ParentChange"); + qmlRegisterType<QDeclarativePauseAnimation>("QtQuick",1,0,"PauseAnimation"); + qmlRegisterType<QDeclarativePropertyAction>("QtQuick",1,0,"PropertyAction"); + qmlRegisterType<QDeclarativePropertyAnimation>("QtQuick",1,0,"PropertyAnimation"); + qmlRegisterType<QDeclarativeRotationAnimation>("QtQuick",1,0,"RotationAnimation"); + qmlRegisterType<QDeclarativeScriptAction>("QtQuick",1,0,"ScriptAction"); + qmlRegisterType<QDeclarativeSequentialAnimation>("QtQuick",1,0,"SequentialAnimation"); + qmlRegisterType<QDeclarativeSpringAnimation>("QtQuick",1,0,"SpringAnimation"); + qmlRegisterType<QDeclarativeSystemPalette>("QtQuick",1,0,"SystemPalette"); + qmlRegisterType<QDeclarativeTransition>("QtQuick",1,0,"Transition"); + qmlRegisterType<QDeclarativeVector3dAnimation>("QtQuick",1,0,"Vector3dAnimation"); + + qmlRegisterType<QDeclarativeAnchors>(); + qmlRegisterType<QDeclarativeStateOperation>(); + qmlRegisterType<QDeclarativeAnchorSet>(); + + qmlRegisterUncreatableType<QDeclarativeAbstractAnimation>("QtQuick",1,0,"Animation",QDeclarativeAbstractAnimation::tr("Animation is an abstract class")); + } - qmlRegisterType<QDeclarativeAnchorAnimation>("QtQuick",1,0,"AnchorAnimation"); - qmlRegisterType<QDeclarativeAnchorChanges>("QtQuick",1,0,"AnchorChanges"); - qmlRegisterType<QDeclarativeBehavior>("QtQuick",1,0,"Behavior"); qmlRegisterType<QDeclarativeBind>("QtQuick",1,0,"Binding"); - qmlRegisterType<QDeclarativeColorAnimation>("QtQuick",1,0,"ColorAnimation"); qmlRegisterType<QDeclarativeConnections>("QtQuick",1,0,"Connections"); - qmlRegisterType<QDeclarativeSmoothedAnimation>("QtQuick",1,0,"SmoothedAnimation"); - qmlRegisterType<QDeclarativeFontLoader>("QtQuick",1,0,"FontLoader"); - qmlRegisterType<QDeclarativeListElement>("QtQuick",1,0,"ListElement"); - qmlRegisterType<QDeclarativeNumberAnimation>("QtQuick",1,0,"NumberAnimation"); - qmlRegisterType<QDeclarativePackage>("QtQuick",1,0,"Package"); - qmlRegisterType<QDeclarativeParallelAnimation>("QtQuick",1,0,"ParallelAnimation"); - qmlRegisterType<QDeclarativeParentAnimation>("QtQuick",1,0,"ParentAnimation"); - qmlRegisterType<QDeclarativeParentChange>("QtQuick",1,0,"ParentChange"); - qmlRegisterType<QDeclarativePauseAnimation>("QtQuick",1,0,"PauseAnimation"); - qmlRegisterType<QDeclarativePropertyAction>("QtQuick",1,0,"PropertyAction"); - qmlRegisterType<QDeclarativePropertyAnimation>("QtQuick",1,0,"PropertyAnimation"); - qmlRegisterType<QDeclarativeRotationAnimation>("QtQuick",1,0,"RotationAnimation"); - qmlRegisterType<QDeclarativeScriptAction>("QtQuick",1,0,"ScriptAction"); - qmlRegisterType<QDeclarativeSequentialAnimation>("QtQuick",1,0,"SequentialAnimation"); - qmlRegisterType<QDeclarativeSpringAnimation>("QtQuick",1,0,"SpringAnimation"); - qmlRegisterType<QDeclarativeStateChangeScript>("QtQuick",1,0,"StateChangeScript"); + qmlRegisterType<QDeclarativeTimer>("QtQuick",1,0,"Timer"); qmlRegisterType<QDeclarativeStateGroup>("QtQuick",1,0,"StateGroup"); qmlRegisterType<QDeclarativeState>("QtQuick",1,0,"State"); - qmlRegisterType<QDeclarativeSystemPalette>("QtQuick",1,0,"SystemPalette"); - qmlRegisterType<QDeclarativeTimer>("QtQuick",1,0,"Timer"); - qmlRegisterType<QDeclarativeTransition>("QtQuick",1,0,"Transition"); - qmlRegisterType<QDeclarativeVector3dAnimation>("QtQuick",1,0,"Vector3dAnimation"); + qmlRegisterType<QDeclarativeStateChangeScript>("QtQuick",1,0,"StateChangeScript"); + qmlRegisterType<QDeclarativeListElement>("QtQuick",1,0,"ListElement"); #ifdef QT_NO_XMLPATTERNS qmlRegisterTypeNotAvailable("QtQuick",1,0,"XmlListModel", qApp->translate("QDeclarativeXmlListModel","Qt was built without support for xmlpatterns")); @@ -115,46 +124,44 @@ void QDeclarativeUtilModule::defineModule() qmlRegisterType<QDeclarativeXmlListModel>("QtQuick",1,0,"XmlListModel"); qmlRegisterType<QDeclarativeXmlListModelRole>("QtQuick",1,0,"XmlRole"); #endif - - qmlRegisterType<QDeclarativeAnchors>(); - qmlRegisterType<QDeclarativeStateOperation>(); - qmlRegisterType<QDeclarativeAnchorSet>(); - - qmlRegisterUncreatableType<QDeclarativeAbstractAnimation>("QtQuick",1,0,"Animation",QDeclarativeAbstractAnimation::tr("Animation is an abstract class")); - - qmlRegisterCustomType<QDeclarativeListModel>("QtQuick",1,0,"ListModel", new QDeclarativeListModelParser); - qmlRegisterCustomType<QDeclarativePropertyChanges>("QtQuick",1,0,"PropertyChanges", new QDeclarativePropertyChangesParser); qmlRegisterCustomType<QDeclarativeConnections>("QtQuick",1,0,"Connections", new QDeclarativeConnectionsParser); + qmlRegisterCustomType<QDeclarativePropertyChanges>("QtQuick",1,0,"PropertyChanges", new QDeclarativePropertyChangesParser); + qmlRegisterCustomType<QDeclarativeListModel>("QtQuick",1,0,"ListModel", new QDeclarativeListModelParser); #ifndef QT_NO_IMPORT_QT47_QML - qmlRegisterType<QDeclarativeAnchorAnimation>("Qt",4,7,"AnchorAnimation"); - qmlRegisterType<QDeclarativeAnchorChanges>("Qt",4,7,"AnchorChanges"); - qmlRegisterType<QDeclarativeBehavior>("Qt",4,7,"Behavior"); + if (appType != QApplication::Tty) { + qmlRegisterType<QDeclarativeAnchorAnimation>("Qt",4,7,"AnchorAnimation"); + qmlRegisterType<QDeclarativeAnchorChanges>("Qt",4,7,"AnchorChanges"); + qmlRegisterType<QDeclarativeBehavior>("Qt",4,7,"Behavior"); + qmlRegisterType<QDeclarativeColorAnimation>("Qt",4,7,"ColorAnimation"); + qmlRegisterType<QDeclarativeSmoothedAnimation>("Qt",4,7,"SmoothedAnimation"); + qmlRegisterType<QDeclarativeFontLoader>("Qt",4,7,"FontLoader"); + qmlRegisterType<QDeclarativeNumberAnimation>("Qt",4,7,"NumberAnimation"); + qmlRegisterType<QDeclarativePackage>("Qt",4,7,"Package"); + qmlRegisterType<QDeclarativeParallelAnimation>("Qt",4,7,"ParallelAnimation"); + qmlRegisterType<QDeclarativeParentAnimation>("Qt",4,7,"ParentAnimation"); + qmlRegisterType<QDeclarativeParentChange>("Qt",4,7,"ParentChange"); + qmlRegisterType<QDeclarativePauseAnimation>("Qt",4,7,"PauseAnimation"); + qmlRegisterType<QDeclarativePropertyAction>("Qt",4,7,"PropertyAction"); + qmlRegisterType<QDeclarativePropertyAnimation>("Qt",4,7,"PropertyAnimation"); + qmlRegisterType<QDeclarativeRotationAnimation>("Qt",4,7,"RotationAnimation"); + qmlRegisterType<QDeclarativeScriptAction>("Qt",4,7,"ScriptAction"); + qmlRegisterType<QDeclarativeSequentialAnimation>("Qt",4,7,"SequentialAnimation"); + qmlRegisterType<QDeclarativeSpringAnimation>("Qt",4,7,"SpringAnimation"); + qmlRegisterType<QDeclarativeSystemPalette>("Qt",4,7,"SystemPalette"); + qmlRegisterType<QDeclarativeTransition>("Qt",4,7,"Transition"); + qmlRegisterType<QDeclarativeVector3dAnimation>("Qt",4,7,"Vector3dAnimation"); + + qmlRegisterUncreatableType<QDeclarativeAbstractAnimation>("Qt",4,7,"Animation",QDeclarativeAbstractAnimation::tr("Animation is an abstract class")); + } + qmlRegisterType<QDeclarativeBind>("Qt",4,7,"Binding"); - qmlRegisterType<QDeclarativeColorAnimation>("Qt",4,7,"ColorAnimation"); qmlRegisterType<QDeclarativeConnections>("Qt",4,7,"Connections"); - qmlRegisterType<QDeclarativeSmoothedAnimation>("Qt",4,7,"SmoothedAnimation"); - qmlRegisterType<QDeclarativeFontLoader>("Qt",4,7,"FontLoader"); - qmlRegisterType<QDeclarativeListElement>("Qt",4,7,"ListElement"); - qmlRegisterType<QDeclarativeNumberAnimation>("Qt",4,7,"NumberAnimation"); - qmlRegisterType<QDeclarativePackage>("Qt",4,7,"Package"); - qmlRegisterType<QDeclarativeParallelAnimation>("Qt",4,7,"ParallelAnimation"); - qmlRegisterType<QDeclarativeParentAnimation>("Qt",4,7,"ParentAnimation"); - qmlRegisterType<QDeclarativeParentChange>("Qt",4,7,"ParentChange"); - qmlRegisterType<QDeclarativePauseAnimation>("Qt",4,7,"PauseAnimation"); - qmlRegisterType<QDeclarativePropertyAction>("Qt",4,7,"PropertyAction"); - qmlRegisterType<QDeclarativePropertyAnimation>("Qt",4,7,"PropertyAnimation"); - qmlRegisterType<QDeclarativeRotationAnimation>("Qt",4,7,"RotationAnimation"); - qmlRegisterType<QDeclarativeScriptAction>("Qt",4,7,"ScriptAction"); - qmlRegisterType<QDeclarativeSequentialAnimation>("Qt",4,7,"SequentialAnimation"); - qmlRegisterType<QDeclarativeSpringAnimation>("Qt",4,7,"SpringAnimation"); - qmlRegisterType<QDeclarativeStateChangeScript>("Qt",4,7,"StateChangeScript"); + qmlRegisterType<QDeclarativeTimer>("Qt",4,7,"Timer"); qmlRegisterType<QDeclarativeStateGroup>("Qt",4,7,"StateGroup"); qmlRegisterType<QDeclarativeState>("Qt",4,7,"State"); - qmlRegisterType<QDeclarativeSystemPalette>("Qt",4,7,"SystemPalette"); - qmlRegisterType<QDeclarativeTimer>("Qt",4,7,"Timer"); - qmlRegisterType<QDeclarativeTransition>("Qt",4,7,"Transition"); - qmlRegisterType<QDeclarativeVector3dAnimation>("Qt",4,7,"Vector3dAnimation"); + qmlRegisterType<QDeclarativeStateChangeScript>("Qt",4,7,"StateChangeScript"); + qmlRegisterType<QDeclarativeListElement>("Qt",4,7,"ListElement"); #ifdef QT_NO_XMLPATTERNS qmlRegisterTypeNotAvailable("Qt",4,7,"XmlListModel", qApp->translate("QDeclarativeXmlListModel","Qt was built without support for xmlpatterns")); @@ -164,11 +171,8 @@ void QDeclarativeUtilModule::defineModule() qmlRegisterType<QDeclarativeXmlListModel>("Qt",4,7,"XmlListModel"); qmlRegisterType<QDeclarativeXmlListModelRole>("Qt",4,7,"XmlRole"); #endif - - qmlRegisterUncreatableType<QDeclarativeAbstractAnimation>("Qt",4,7,"Animation",QDeclarativeAbstractAnimation::tr("Animation is an abstract class")); - - qmlRegisterCustomType<QDeclarativeListModel>("Qt", 4,7, "ListModel", new QDeclarativeListModelParser); - qmlRegisterCustomType<QDeclarativePropertyChanges>("Qt", 4, 7, "PropertyChanges", new QDeclarativePropertyChangesParser); qmlRegisterCustomType<QDeclarativeConnections>("Qt", 4, 7, "Connections", new QDeclarativeConnectionsParser); + qmlRegisterCustomType<QDeclarativePropertyChanges>("Qt", 4, 7, "PropertyChanges", new QDeclarativePropertyChangesParser); + qmlRegisterCustomType<QDeclarativeListModel>("Qt", 4,7, "ListModel", new QDeclarativeListModelParser); #endif } diff --git a/src/declarative/util/qdeclarativeutilmodule_p.h b/src/declarative/util/qdeclarativeutilmodule_p.h index 62372fe..fd8077d 100644 --- a/src/declarative/util/qdeclarativeutilmodule_p.h +++ b/src/declarative/util/qdeclarativeutilmodule_p.h @@ -43,6 +43,7 @@ #define QDECLARATIVEUTILMODULE_H #include <qdeclarative.h> +#include <qapplication.h> QT_BEGIN_HEADER @@ -53,7 +54,7 @@ QT_MODULE(Declarative) class QDeclarativeUtilModule { public: - static void defineModule(); + static void defineModule(QApplication::Type appType); }; QT_END_NAMESPACE |