diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2019-04-10 16:03:52 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2019-05-03 06:33:49 +0000 |
commit | b56273a77872ea0516767d4fbdb846a8b5103da4 (patch) | |
tree | 6d012703f5974a6110946d5018cdf2e181c68029 /src | |
parent | 1226078daccb988f46b4049656c768360b222ecd (diff) |
Add features for the remaining QML model types
The table and object models should be configurable, too, and Package
conceptually belongs to the delegate model.
Change-Id: Id928f14c5b378b6e7ffcbb98039192fa7c375fa7
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/qmlmodels/configure.json | 13 | ||||
-rw-r--r-- | src/qmlmodels/qmlmodels.pro | 54 | ||||
-rw-r--r-- | src/qmlmodels/qqmlinstantiator_p.h | 2 | ||||
-rw-r--r-- | src/qmlmodels/qqmlinstantiator_p_p.h | 2 | ||||
-rw-r--r-- | src/qmlmodels/qqmlmodelsmodule.cpp | 31 | ||||
-rw-r--r-- | src/qmlmodels/qqmlobjectmodel_p.h | 2 | ||||
-rw-r--r-- | src/qmlmodels/qqmltableinstancemodel_p.h | 2 | ||||
-rw-r--r-- | src/qmlmodels/qqmltablemodel_p.h | 2 | ||||
-rw-r--r-- | src/qmlmodels/qqmltablemodelcolumn_p.h | 2 | ||||
-rw-r--r-- | src/qmlmodels/qquickpackage_p.h | 3 | ||||
-rw-r--r-- | src/quick/configure.json | 1 |
11 files changed, 85 insertions, 29 deletions
diff --git a/src/qmlmodels/configure.json b/src/qmlmodels/configure.json index 2aa8a50e69..bfe7d538ec 100644 --- a/src/qmlmodels/configure.json +++ b/src/qmlmodels/configure.json @@ -6,6 +6,12 @@ ], "features": { + "qml-object-model" : { + "label": "QML list model", + "purpose": "Provides the ObjectModel and Instantiator QML types.", + "section": "QML", + "output": [ "privateFeature" ] + }, "qml-list-model": { "label": "QML list model", "purpose": "Provides the ListModel QML type.", @@ -16,6 +22,13 @@ "label": "QML delegate model", "purpose": "Provides the DelegateModel QML type.", "section": "QML", + "condition": "features.qml-object-model", + "output": [ "privateFeature" ] + }, + "qml-table-model": { + "label": "QML table model", + "purpose": "Provides the TableModel QML type.", + "section": "QML", "output": [ "privateFeature" ] } }, diff --git a/src/qmlmodels/qmlmodels.pro b/src/qmlmodels/qmlmodels.pro index 84f87f8bb1..7d1d9bdf67 100644 --- a/src/qmlmodels/qmlmodels.pro +++ b/src/qmlmodels/qmlmodels.pro @@ -5,30 +5,36 @@ DEFINES += QT_NO_URL_CAST_FROM_STRING QT_NO_INTEGER_EVENT_COORDINATES QT_NO_FORE HEADERS += \ $$PWD/qqmlchangeset_p.h \ - $$PWD/qqmlinstantiator_p.h \ - $$PWD/qqmlinstantiator_p_p.h \ - $$PWD/qqmllistaccessor_p.h \ - $$PWD/qqmllistcompositor_p.h \ $$PWD/qqmlmodelsmodule_p.h \ - $$PWD/qqmlobjectmodel_p.h \ - $$PWD/qqmltableinstancemodel_p.h \ - $$PWD/qqmltablemodel_p.h \ - $$PWD/qqmltablemodelcolumn_p.h \ - $$PWD/qquickpackage_p.h \ $$PWD/qtqmlmodelsglobal_p.h \ - $$PWD/qtqmlmodelsglobal.h \ + $$PWD/qtqmlmodelsglobal.h SOURCES += \ $$PWD/qqmlchangeset.cpp \ - $$PWD/qqmlinstantiator.cpp \ - $$PWD/qqmllistaccessor.cpp \ - $$PWD/qqmllistcompositor.cpp \ - $$PWD/qqmlmodelsmodule.cpp \ - $$PWD/qqmlobjectmodel.cpp \ - $$PWD/qqmltableinstancemodel.cpp \ - $$PWD/qqmltablemodel.cpp \ - $$PWD/qqmltablemodelcolumn.cpp \ - $$PWD/qquickpackage.cpp + $$PWD/qqmlmodelsmodule.cpp + +qtConfig(qml-object-model) { + SOURCES += \ + $$PWD/qqmlinstantiator.cpp \ + $$PWD/qqmlobjectmodel.cpp + + HEADERS += \ + $$PWD/qqmlinstantiator_p.h \ + $$PWD/qqmlinstantiator_p_p.h \ + $$PWD/qqmlobjectmodel_p.h +} + +qtConfig(qml-table-model) { + SOURCES += \ + $$PWD/qqmltableinstancemodel.cpp \ + $$PWD/qqmltablemodel.cpp \ + $$PWD/qqmltablemodelcolumn.cpp + + HEADERS += \ + $$PWD/qqmltableinstancemodel_p.h \ + $$PWD/qqmltablemodel_p.h \ + $$PWD/qqmltablemodelcolumn_p.h +} qtConfig(qml-list-model) { SOURCES += \ @@ -45,13 +51,19 @@ qtConfig(qml-delegate-model) { SOURCES += \ $$PWD/qqmladaptormodel.cpp \ $$PWD/qqmldelegatemodel.cpp \ - $$PWD/qqmldelegatecomponent.cpp + $$PWD/qqmldelegatecomponent.cpp \ + $$PWD/qqmllistaccessor.cpp \ + $$PWD/qqmllistcompositor.cpp \ + $$PWD/qquickpackage.cpp HEADERS += \ $$PWD/qqmladaptormodel_p.h \ $$PWD/qqmldelegatemodel_p.h \ $$PWD/qqmldelegatemodel_p_p.h \ - $$PWD/qqmldelegatecomponent_p.h + $$PWD/qqmldelegatecomponent_p.h \ + $$PWD/qqmllistaccessor_p.h \ + $$PWD/qqmllistcompositor_p.h \ + $$PWD/qquickpackage_p.h } load(qt_module) diff --git a/src/qmlmodels/qqmlinstantiator_p.h b/src/qmlmodels/qqmlinstantiator_p.h index 8b00a1e033..87accc304f 100644 --- a/src/qmlmodels/qqmlinstantiator_p.h +++ b/src/qmlmodels/qqmlinstantiator_p.h @@ -55,6 +55,8 @@ #include <QtQml/qqmlparserstatus.h> #include <QtQmlModels/private/qtqmlmodelsglobal_p.h> +QT_REQUIRE_CONFIG(qml_object_model); + QT_BEGIN_NAMESPACE class QQmlInstantiatorPrivate; diff --git a/src/qmlmodels/qqmlinstantiator_p_p.h b/src/qmlmodels/qqmlinstantiator_p_p.h index bf153d8723..33cc2613e5 100644 --- a/src/qmlmodels/qqmlinstantiator_p_p.h +++ b/src/qmlmodels/qqmlinstantiator_p_p.h @@ -57,6 +57,8 @@ #include <private/qqmlchangeset_p.h> #include <private/qqmlobjectmodel_p.h> +QT_REQUIRE_CONFIG(qml_object_model); + QT_BEGIN_NAMESPACE class Q_QMLMODELS_PRIVATE_EXPORT QQmlInstantiatorPrivate : public QObjectPrivate diff --git a/src/qmlmodels/qqmlmodelsmodule.cpp b/src/qmlmodels/qqmlmodelsmodule.cpp index 989fec9b7d..2db5dd834f 100644 --- a/src/qmlmodels/qqmlmodelsmodule.cpp +++ b/src/qmlmodels/qqmlmodelsmodule.cpp @@ -39,19 +39,26 @@ #include "qqmlmodelsmodule_p.h" #include <private/qtqmlmodelsglobal_p.h> + +#if QT_CONFIG(itemmodel) #include <QtCore/qitemselectionmodel.h> +#endif #if QT_CONFIG(qml_list_model) #include <private/qqmllistmodel_p.h> #endif #if QT_CONFIG(qml_delegate_model) #include <private/qqmldelegatemodel_p.h> #include <private/qqmldelegatecomponent_p.h> +#include <private/qquickpackage_p.h> #endif +#if QT_CONFIG(qml_object_model) #include <private/qqmlobjectmodel_p.h> +#include <private/qqmlinstantiator_p.h> +#endif +#if QT_CONFIG(qml_table_model) #include <private/qqmltablemodel_p.h> #include <private/qqmltablemodelcolumn_p.h> -#include <private/qqmlinstantiator_p.h> -#include <private/qquickpackage_p.h> +#endif QT_BEGIN_NAMESPACE @@ -60,8 +67,10 @@ QT_BEGIN_NAMESPACE void QQmlModelsModule::registerQmlTypes() { // Don't add anything here. These are only for backwards compatibility. +#if QT_CONFIG(qml_object_model) qmlRegisterType<QQmlInstantiator>("QtQml", 2, 1, "Instantiator"); // Only available in >= 2.1 qmlRegisterType<QQmlInstanceModel>(); +#endif } void QQmlModelsModule::registerQuickTypes() @@ -70,18 +79,20 @@ void QQmlModelsModule::registerQuickTypes() const char uri[] = "QtQuick"; +#if QT_CONFIG(qml_object_model) qmlRegisterType<QQmlInstantiator>(uri, 2, 1, "Instantiator"); qmlRegisterType<QQmlInstanceModel>(); + qmlRegisterType<QQmlObjectModel>(uri, 2, 0, "VisualItemModel"); +#endif #if QT_CONFIG(qml_list_model) qmlRegisterType<QQmlListElement>(uri, 2, 0, "ListElement"); qmlRegisterCustomType<QQmlListModel>(uri, 2, 0, "ListModel", new QQmlListModelParser); #endif - qmlRegisterType<QQuickPackage>(uri, 2, 0, "Package"); #if QT_CONFIG(qml_delegate_model) qmlRegisterType<QQmlDelegateModel>(uri, 2, 0, "VisualDataModel"); qmlRegisterType<QQmlDelegateModelGroup>(uri, 2, 0, "VisualDataGroup"); + qmlRegisterType<QQuickPackage>(uri, 2, 0, "Package"); #endif - qmlRegisterType<QQmlObjectModel>(uri, 2, 0, "VisualItemModel"); } #endif // QT_VERSION < QT_VERSION_CHECK(6, 0, 0) @@ -97,15 +108,17 @@ void QQmlModelsModule::defineModule() #if QT_CONFIG(qml_delegate_model) qmlRegisterType<QQmlDelegateModel>(uri, 2, 1, "DelegateModel"); qmlRegisterType<QQmlDelegateModelGroup>(uri, 2, 1, "DelegateModelGroup"); + qmlRegisterType<QQuickPackage>(uri, 2, 14, "Package"); #endif +#if QT_CONFIG(qml_object_model) qmlRegisterType<QQmlObjectModel>(uri, 2, 1, "ObjectModel"); qmlRegisterType<QQmlObjectModel,3>(uri, 2, 3, "ObjectModel"); - - qmlRegisterType<QItemSelectionModel>(uri, 2, 2, "ItemSelectionModel"); - - qmlRegisterType<QQuickPackage>(uri, 2, 14, "Package"); qmlRegisterType<QQmlInstantiator>(uri, 2, 14, "Instantiator"); qmlRegisterType<QQmlInstanceModel>(); +#endif +#if QT_CONFIG(itemmodel) + qmlRegisterType<QItemSelectionModel>(uri, 2, 2, "ItemSelectionModel"); +#endif } void QQmlModelsModule::defineLabsModule() @@ -117,8 +130,10 @@ void QQmlModelsModule::defineLabsModule() qmlRegisterType<QQmlDelegateChooser>(uri, 1, 0, "DelegateChooser"); qmlRegisterType<QQmlDelegateChoice>(uri, 1, 0, "DelegateChoice"); #endif +#if QT_CONFIG(qml_table_model) qmlRegisterType<QQmlTableModel>(uri, 1, 0, "TableModel"); qmlRegisterType<QQmlTableModelColumn>(uri, 1, 0, "TableModelColumn"); +#endif } QT_END_NAMESPACE diff --git a/src/qmlmodels/qqmlobjectmodel_p.h b/src/qmlmodels/qqmlobjectmodel_p.h index 99bfd86269..78a5615ae2 100644 --- a/src/qmlmodels/qqmlobjectmodel_p.h +++ b/src/qmlmodels/qqmlobjectmodel_p.h @@ -56,6 +56,8 @@ #include <QtQml/qqml.h> #include <QtCore/qobject.h> +QT_REQUIRE_CONFIG(qml_object_model); + QT_BEGIN_NAMESPACE class QObject; diff --git a/src/qmlmodels/qqmltableinstancemodel_p.h b/src/qmlmodels/qqmltableinstancemodel_p.h index 20331df5cc..ce5a37bc98 100644 --- a/src/qmlmodels/qqmltableinstancemodel_p.h +++ b/src/qmlmodels/qqmltableinstancemodel_p.h @@ -54,6 +54,8 @@ #include <QtQmlModels/private/qqmldelegatemodel_p.h> #include <QtQmlModels/private/qqmldelegatemodel_p_p.h> +QT_REQUIRE_CONFIG(qml_table_model); + QT_BEGIN_NAMESPACE class QQmlTableInstanceModel; diff --git a/src/qmlmodels/qqmltablemodel_p.h b/src/qmlmodels/qqmltablemodel_p.h index 114b162e5c..b3c0cc2848 100644 --- a/src/qmlmodels/qqmltablemodel_p.h +++ b/src/qmlmodels/qqmltablemodel_p.h @@ -59,6 +59,8 @@ #include <QtQml/QJSValue> #include <QtQml/QQmlListProperty> +QT_REQUIRE_CONFIG(qml_table_model); + QT_BEGIN_NAMESPACE class Q_QMLMODELS_PRIVATE_EXPORT QQmlTableModel : public QAbstractTableModel, public QQmlParserStatus diff --git a/src/qmlmodels/qqmltablemodelcolumn_p.h b/src/qmlmodels/qqmltablemodelcolumn_p.h index d125f8bb16..0b6478ce38 100644 --- a/src/qmlmodels/qqmltablemodelcolumn_p.h +++ b/src/qmlmodels/qqmltablemodelcolumn_p.h @@ -56,6 +56,8 @@ #include <QtQmlModels/private/qtqmlmodelsglobal_p.h> #include <QtQml/qjsvalue.h> +QT_REQUIRE_CONFIG(qml_table_model); + QT_BEGIN_NAMESPACE class Q_QMLMODELS_PRIVATE_EXPORT QQmlTableModelColumn : public QObject diff --git a/src/qmlmodels/qquickpackage_p.h b/src/qmlmodels/qquickpackage_p.h index 122c7fcb30..97f7818fee 100644 --- a/src/qmlmodels/qquickpackage_p.h +++ b/src/qmlmodels/qquickpackage_p.h @@ -52,6 +52,9 @@ // #include <qqml.h> +#include <QtQmlModels/private/qtqmlmodelsglobal_p.h> + +QT_REQUIRE_CONFIG(qml_delegate_model); QT_BEGIN_NAMESPACE diff --git a/src/quick/configure.json b/src/quick/configure.json index 70fe6d2129..4098db87aa 100644 --- a/src/quick/configure.json +++ b/src/quick/configure.json @@ -113,6 +113,7 @@ "label": "TableView item", "purpose": "Provides the TableView item.", "section": "Qt Quick", + "condition": "features.qml-table-model", "output": [ "privateFeature" ] |