#include "signalproxy.h"
#include "util.h"
+INIT_SYNCABLE_OBJECT(SyncableObject)
SyncableObject::SyncableObject(QObject *parent)
: QObject(parent),
_initialized(false),
bool SyncableObject::setInitValue(const QString &property, const QVariant &value) {
QString handlername = QString("initSet") + property;
handlername[7] = handlername[7].toUpper();
+
+ QString methodSignature = QString("%1(%2)").arg(handlername).arg(value.typeName());
+ int methodIdx = metaObject()->indexOfMethod(methodSignature.toAscii().constData());
+ if(methodIdx < 0) {
+ QByteArray normedMethodName = QMetaObject::normalizedSignature(methodSignature.toAscii().constData());
+ methodIdx = metaObject()->indexOfMethod(normedMethodName.constData());
+ }
+ if(methodIdx < 0) {
+ return false;
+ }
+
QGenericArgument param(value.typeName(), value.constData());
return QMetaObject::invokeMethod(this, handlername.toAscii(), param);
}
void SyncableObject::update(const QVariantMap &properties) {
fromVariantMap(properties);
- emit updated(properties);
+ SYNC(ARG(properties))
+ emit updated();
}
void SyncableObject::requestUpdate(const QVariantMap &properties) {
if(allowClientUpdates()) {
update(properties);
}
- emit updateRequested(properties);
+ REQUEST(ARG(properties))
}
void SyncableObject::sync_call__(SignalProxy::ProxyMode modeType, const char *funcname, ...) const {