void AttributeValuePrivate::connectSignal()
{
    Q_Q(AttributeValue);

    QObject::connect(q, SIGNAL(changed()), entity->context(), SLOT(onPropertyValueChanged()));

    if(attribute->isCalculated()) {
        int i = q->metaObject()->indexOfMethod("changed()");
        if(i < 0)
            return;
        QMetaMethod changedSignal = q->metaObject()->method(i);
        i = entity->metaObject()->indexOfMethod(attribute->signalSignature().toAscii());
        if(i < 0)
            return;
        QMetaMethod trueSignal = entity->metaObject()->method(i);
        QObject::connect(q, changedSignal, entity, trueSignal);
    }
}
/**
 * Filters out change notifications concerning other properties.
 */
void ConfigPropertyObserver::onValueChanged(const std::string &name,
                                            const std::string &newValue,
                                            const std::string &prevValue) {
  if (name == m_propertyName)
    onPropertyValueChanged(newValue, prevValue);
}