diff options
author | Robin Burchell <robin+qt@viroteck.net> | 2012-09-01 13:57:32 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-09-03 23:01:06 +0200 |
commit | e5b200fa06e01a7ff7b0943b9c8bca564a7320c4 (patch) | |
tree | d3f2ad1c791d96f02a6874d646a1f94779128118 /src/declarative/util/qdeclarativeutilmodule.cpp | |
parent | 427c66394d21e004f35c349d23b02f63014eb225 (diff) |
Register Qt 4.7 import on-demand, instead of at startup.
This is a slightly less awkward approach (keeps backwards-compatibility) while
speeding up startup for applications that don't use the old import path.
Also prints a warning to let developers know they should migrate their code when
possible. Completely disabling the Qt 4.7 import is still possible by setting
QT_NO_IMPORT_QT47_QML.
This takes around 10-15ms off a very simple "hello world" on my macbook.
As an added bonus, forward-port a similar approach to 4.8's
a26f545d8e25af74fb43d16c9afa79f6e04463e7 and don't register graphical types in a
non-graphical application as someone (very naughtily) apparently forgot to get
it integrated to Qt 5 first.
Change-Id: I7821523750b3ab6770f367788725d0da70c5ec1f
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
Reviewed-by: Alan Alpert <416365416c@gmail.com>
Diffstat (limited to 'src/declarative/util/qdeclarativeutilmodule.cpp')
-rw-r--r-- | src/declarative/util/qdeclarativeutilmodule.cpp | 140 |
1 files changed, 75 insertions, 65 deletions
diff --git a/src/declarative/util/qdeclarativeutilmodule.cpp b/src/declarative/util/qdeclarativeutilmodule.cpp index 669604e6..fd301232 100644 --- a/src/declarative/util/qdeclarativeutilmodule.cpp +++ b/src/declarative/util/qdeclarativeutilmodule.cpp @@ -73,40 +73,50 @@ #ifdef QT_XMLPATTERNS_LIB #include "private/qdeclarativexmllistmodel_p.h" #endif +#include <qapplication.h> void QDeclarativeUtilModule::defineModule() { - qmlRegisterUncreatableType<QDeclarativeApplication>("QtQuick",1,1,"Application", QDeclarativeApplication::tr("Application is an abstract class")); + if (QApplication::type() != 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"); -#ifndef QT_XMLPATTERNS_LIB + 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")); qmlRegisterTypeNotAvailable("QtQuick",1,0,"XmlRole", @@ -115,47 +125,49 @@ 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); +} +void QDeclarativeUtilModule::defineModuleCompat() +{ #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 (QApplication::type() != 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"); -#ifndef QT_XMLPATTERNS_LIB + 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")); qmlRegisterTypeNotAvailable("Qt",4,7,"XmlRole", @@ -164,11 +176,9 @@ 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 } + |