X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fsyncableobject.cpp;h=781dd15109e5123d63cf70df0440d0a8ce429913;hp=dc202e2c1690aacac5488e2eb00b9ec8ee9ce14d;hb=57d44eafac4d353d1523e93cc7613debc1826e94;hpb=6447ec038a9553427fb729f5889c69e0f2f247a8 diff --git a/src/common/syncableobject.cpp b/src/common/syncableobject.cpp index dc202e2c..781dd151 100644 --- a/src/common/syncableobject.cpp +++ b/src/common/syncableobject.cpp @@ -20,18 +20,29 @@ #include +#include + #include "syncableobject.h" #include "signalproxy.h" #include "util.h" SyncableObject::SyncableObject(QObject *parent) : QObject(parent) { - + _initialized = false; } SyncableObject::SyncableObject(const SyncableObject &other, QObject *parent) : QObject(parent) { - Q_UNUSED(other); + _initialized = other._initialized; + +} + +bool SyncableObject::isInitialized() const { + return _initialized; +} +void SyncableObject::setInitialized() { + _initialized = true; + emit initDone(); } QVariantMap SyncableObject::toVariantMap() { @@ -49,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); @@ -87,3 +103,11 @@ bool SyncableObject::setInitValue(const QString &property, const QVariant &value QGenericArgument param(value.typeName(), value.constData()); return QMetaObject::invokeMethod(this, handlername.toAscii(), param); } + +void SyncableObject::renameObject(const QString &newName) { + const QString oldName = objectName(); + if(oldName != newName) { + setObjectName(newName); + emit objectRenamed(newName, oldName); + } +}