// Copyright (C) 2014 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Milian Wolff // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #include "propertychangehandler_p.h" QT_BEGIN_NAMESPACE namespace Qt3DCore { /* \internal \class Qt3DCore::PropertyChangeHandlerBase \inmodule Qt3DCore \brief Base class for the property change handler. */ PropertyChangeHandlerBase::PropertyChangeHandlerBase(QObject *parent) : QObject(parent) { } void PropertyChangeHandlerBase::connectToPropertyChange(const QObject *object, int propertyIndex) { const QMetaObject *metaObject = object->metaObject(); const QMetaProperty property = metaObject->property(propertyIndex); if (!property.hasNotifySignal()) return; static const int memberOffset = staticMetaObject.methodCount(); QMetaObject::Connection connection = QMetaObject::connect(object, property.notifySignalIndex(), this, memberOffset + propertyIndex, Qt::DirectConnection, 0); Q_ASSERT(connection); Q_UNUSED(connection); } void PropertyChangeHandlerBase::disconnectFromPropertyChange(const QObject *object, int propertyIndex) { const QMetaObject *metaObject = object->metaObject(); const QMetaProperty property = metaObject->property(propertyIndex); if (!property.hasNotifySignal()) return; static const int memberOffset = staticMetaObject.methodCount(); QMetaObject::disconnect(object, property.notifySignalIndex(), this, memberOffset + propertyIndex); } } QT_END_NAMESPACE #include "moc_propertychangehandler_p.cpp"