diff options
Diffstat (limited to 'src/quick3d/quick3danimation/items/quick3danimationcontroller.cpp')
-rw-r--r-- | src/quick3d/quick3danimation/items/quick3danimationcontroller.cpp | 65 |
1 files changed, 29 insertions, 36 deletions
diff --git a/src/quick3d/quick3danimation/items/quick3danimationcontroller.cpp b/src/quick3d/quick3danimation/items/quick3danimationcontroller.cpp index 3d2fef555..07bfb4a72 100644 --- a/src/quick3d/quick3danimation/items/quick3danimationcontroller.cpp +++ b/src/quick3d/quick3danimation/items/quick3danimationcontroller.cpp @@ -48,44 +48,37 @@ QQuick3DAnimationController::QQuick3DAnimationController(QObject *parent) QQmlListProperty<QAnimationGroup> QQuick3DAnimationController::animationGroups() { - return QQmlListProperty<QAnimationGroup>(this, 0, - &QQuick3DAnimationController::appendAnimationGroup, - &QQuick3DAnimationController::animationGroupCount, - &QQuick3DAnimationController::animationGroupAt, - &QQuick3DAnimationController::clearAnimationGroups); -} - +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + using qt_size_type = qsizetype; +#else + using qt_size_type = int; +#endif -void QQuick3DAnimationController::appendAnimationGroup(QQmlListProperty<QAnimationGroup> *list, QAnimationGroup *bar) -{ - QQuick3DAnimationController *controller = qobject_cast<QQuick3DAnimationController *>(list->object); - if (controller) - controller->parentAnimationController()->addAnimationGroup(bar); -} + using ListContentType = QAnimationGroup; + auto appendFunction = [](QQmlListProperty<ListContentType> *list, ListContentType *bar) { + QQuick3DAnimationController *controller = qobject_cast<QQuick3DAnimationController *>(list->object); + if (controller) + controller->parentAnimationController()->addAnimationGroup(bar); + }; + auto countFunction = [](QQmlListProperty<ListContentType> *list) -> qt_size_type { + QQuick3DAnimationController *controller = qobject_cast<QQuick3DAnimationController *>(list->object); + if (controller) + return controller->parentAnimationController()->animationGroupList().count(); + return 0; + }; + auto atFunction = [](QQmlListProperty<ListContentType> *list, qt_size_type index) -> ListContentType * { + QQuick3DAnimationController *controller = qobject_cast<QQuick3DAnimationController *>(list->object); + if (controller) + return qobject_cast<QAnimationGroup *>(controller->parentAnimationController()->getGroup(index)); + return nullptr; + }; + auto clearFunction = [](QQmlListProperty<ListContentType> *list) { + QQuick3DAnimationController *controller = qobject_cast<QQuick3DAnimationController *>(list->object); + if (controller) + controller->parentAnimationController()->setAnimationGroups({}); + }; -qsizetype QQuick3DAnimationController::animationGroupCount(QQmlListProperty<QAnimationGroup> *list) -{ - QQuick3DAnimationController *controller = qobject_cast<QQuick3DAnimationController *>(list->object); - if (controller) - return controller->parentAnimationController()->animationGroupList().count(); - return 0; -} - -QAnimationGroup *QQuick3DAnimationController::animationGroupAt(QQmlListProperty<QAnimationGroup> *list, qsizetype index) -{ - QQuick3DAnimationController *controller = qobject_cast<QQuick3DAnimationController *>(list->object); - if (controller) - return qobject_cast<QAnimationGroup *>(controller->parentAnimationController()->getGroup(index)); - return nullptr; -} - -void QQuick3DAnimationController::clearAnimationGroups(QQmlListProperty<QAnimationGroup> *list) -{ - QQuick3DAnimationController *controller = qobject_cast<QQuick3DAnimationController *>(list->object); - if (controller) { - QList<QAnimationGroup *> emptyList; - controller->parentAnimationController()->setAnimationGroups(emptyList); - } + return QQmlListProperty<ListContentType>(this, nullptr, appendFunction, countFunction, atFunction, clearFunction); } |