diff options
Diffstat (limited to 'src/quick3d/quick3dinput/items/quick3dphysicaldevice.cpp')
-rw-r--r-- | src/quick3d/quick3dinput/items/quick3dphysicaldevice.cpp | 54 |
1 files changed, 25 insertions, 29 deletions
diff --git a/src/quick3d/quick3dinput/items/quick3dphysicaldevice.cpp b/src/quick3d/quick3dinput/items/quick3dphysicaldevice.cpp index dc1fdcf6d..07b017735 100644 --- a/src/quick3d/quick3dinput/items/quick3dphysicaldevice.cpp +++ b/src/quick3d/quick3dinput/items/quick3dphysicaldevice.cpp @@ -52,37 +52,33 @@ Quick3DPhysicalDevice::Quick3DPhysicalDevice(QObject *parent) : QObject(parent) QQmlListProperty<QAxisSetting> Quick3DPhysicalDevice::axisSettings() { - return QQmlListProperty<QAxisSetting>(this, 0, - &Quick3DPhysicalDevice::appendAxisSetting, - &Quick3DPhysicalDevice::axisSettingsCount, - &Quick3DPhysicalDevice::axisSettingAt, - &Quick3DPhysicalDevice::clearAxisSettings); -} - -void Quick3DPhysicalDevice::appendAxisSetting(QQmlListProperty<QAxisSetting> *list, QAxisSetting *axisSetting) -{ - Quick3DPhysicalDevice *device = qobject_cast<Quick3DPhysicalDevice *>(list->object); - device->parentPhysicalDevice()->addAxisSetting(axisSetting); -} - -QAxisSetting *Quick3DPhysicalDevice::axisSettingAt(QQmlListProperty<QAxisSetting> *list, qsizetype index) -{ - Quick3DPhysicalDevice *device = qobject_cast<Quick3DPhysicalDevice *>(list->object); - return device->parentPhysicalDevice()->axisSettings().at(index); -} +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + using qt_size_type = qsizetype; +#else + using qt_size_type = int; +#endif -qsizetype Quick3DPhysicalDevice::axisSettingsCount(QQmlListProperty<QAxisSetting> *list) -{ - Quick3DPhysicalDevice *device = qobject_cast<Quick3DPhysicalDevice *>(list->object); - return device->parentPhysicalDevice()->axisSettings().count(); -} + using ListContentType = QAxisSetting; + auto appendFunction = [](QQmlListProperty<ListContentType> *list, ListContentType *axisSetting) { + Quick3DPhysicalDevice *device = qobject_cast<Quick3DPhysicalDevice *>(list->object); + device->parentPhysicalDevice()->addAxisSetting(axisSetting); + }; + auto countFunction = [](QQmlListProperty<ListContentType> *list) -> qt_size_type { + Quick3DPhysicalDevice *device = qobject_cast<Quick3DPhysicalDevice *>(list->object); + return device->parentPhysicalDevice()->axisSettings().count(); + }; + auto atFunction = [](QQmlListProperty<ListContentType> *list, qt_size_type index) -> ListContentType * { + Quick3DPhysicalDevice *device = qobject_cast<Quick3DPhysicalDevice *>(list->object); + return device->parentPhysicalDevice()->axisSettings().at(index); + }; + auto clearFunction = [](QQmlListProperty<ListContentType> *list) { + Quick3DPhysicalDevice *device = qobject_cast<Quick3DPhysicalDevice *>(list->object); + const auto axisSettings = device->parentPhysicalDevice()->axisSettings(); + for (QAxisSetting *axisSetting : axisSettings) + device->parentPhysicalDevice()->removeAxisSetting(axisSetting); + }; -void Quick3DPhysicalDevice::clearAxisSettings(QQmlListProperty<QAxisSetting> *list) -{ - Quick3DPhysicalDevice *device = qobject_cast<Quick3DPhysicalDevice *>(list->object); - const auto axisSettings = device->parentPhysicalDevice()->axisSettings(); - for (QAxisSetting *axisSetting : axisSettings) - device->parentPhysicalDevice()->removeAxisSetting(axisSetting); + return QQmlListProperty<ListContentType>(this, nullptr, appendFunction, countFunction, atFunction, clearFunction); } } // namespace Quick |