X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fsyncableobject.cpp;h=781dd15109e5123d63cf70df0440d0a8ce429913;hp=ee871b8fd3f56ee953463e334c85d7f6e36cdc51;hb=57d44eafac4d353d1523e93cc7613debc1826e94;hpb=100cfa79242249feff3bc3265787b46d2dc621b0 diff --git a/src/common/syncableobject.cpp b/src/common/syncableobject.cpp index ee871b8f..781dd151 100644 --- a/src/common/syncableobject.cpp +++ b/src/common/syncableobject.cpp @@ -20,6 +20,8 @@ #include +#include + #include "syncableobject.h" #include "signalproxy.h" @@ -58,10 +60,15 @@ QVariantMap SyncableObject::toVariantMap() { for(int i = 0; i < meta->methodCount(); i++) { QMetaMethod method = meta->method(i); QString methodname(::methodName(method)); - if(!methodname.startsWith("init") || methodname.startsWith("initSet")) + if(!methodname.startsWith("init") || methodname.startsWith("initSet") || methodname.startsWith("initDone")) continue; - QVariant value = QVariant(QVariant::nameToType(method.typeName())); + QVariant::Type variantType = QVariant::nameToType(method.typeName()); + if(variantType == QVariant::Invalid && !QByteArray(method.typeName()).isEmpty()) { + qWarning() << "SyncableObject::toVariantMap(): cannot fetch init data for:" << this << method.signature() << "- Returntype is unknown to Qt's MetaSystem:" << QByteArray(method.typeName()); + continue; + } + QVariant value = QVariant(variantType); QGenericReturnArgument genericvalue = QGenericReturnArgument(method.typeName(), &value); QMetaObject::invokeMethod(this, methodname.toAscii(), genericvalue);