refs #450 CVariant has to work around the fact that QtDBus can't marshal an invalid QVariant.

This commit is contained in:
Mathew Sutcliffe
2015-09-19 22:23:57 +01:00
parent 3b79688618
commit 0e2f8f51ba

View File

@@ -206,7 +206,14 @@ namespace BlackMisc
void CVariant::marshallToDbus(QDBusArgument &arg) const
{
arg << QString(typeName()) << QDBusVariant(getQVariant());
if (isValid())
{
arg << QString(typeName()) << QDBusVariant(getQVariant());
}
else
{
arg << QString() << QDBusVariant(QVariant(0));
}
}
void CVariant::unmarshallFromDbus(const QDBusArgument &arg)
@@ -215,7 +222,14 @@ namespace BlackMisc
QDBusVariant dbusVar;
arg >> typeName >> dbusVar;
*this = fixQVariantFromDbusArgument(dbusVar.variant(), QMetaType::type(qPrintable(typeName)));
if (typeName.isEmpty())
{
*this = CVariant();
}
else
{
*this = fixQVariantFromDbusArgument(dbusVar.variant(), QMetaType::type(qPrintable(typeName)));
}
}
void CVariant::setPropertyByIndex(const CVariant &variant, const CPropertyIndex &index)