Index: sources/utility/format.cpp =================================================================== diff -u -r13d6a4fae2f910ab6e289ac9280258a94f734405 -r2f0d1d22a15f0ddb459c6527b4746439f66bfe1b --- sources/utility/format.cpp (.../format.cpp) (revision 13d6a4fae2f910ab6e289ac9280258a94f734405) +++ sources/utility/format.cpp (.../format.cpp) (revision 2f0d1d22a15f0ddb459c6527b4746439f66bfe1b) @@ -77,51 +77,95 @@ QByteArray Format::fromVariant(const QVariant &vData) { QByteArray mData; - if(vData.type() == QVariant::String) { + + switch (static_cast(vData.type())) { + case QMetaType::QString: // string + { mData += vData.toByteArray(); return mData; } - if(vData.type() == QVariant::ByteArray) { + case QMetaType::QByteArray: // byte array + { mData += vData.toByteArray(); return mData; } - if ( vData.type() == static_cast(QMetaType::Float) || - vData.type() == QVariant::Double ) { + case QMetaType::QVariantList: // list + { + QVariantList list = vData.toList(); + for(auto item: list) { + mData += fromVariant(item); + } + return mData; + } + case QMetaType::Bool: // bool + { + mData += vData.toUInt(); + return mData; + } + + case QMetaType::Float: + case QMetaType::Double: // F32 + { Types::F32 f32; f32.value = vData.toFloat(); Types::setValue(f32, mData); return mData; } - if ( vData.type() == QVariant::UInt ) { + case QMetaType::UInt: // U32 + { Types::U32 u32; u32.value = vData.toUInt(); Types::setValue(u32, mData); return mData; } - if ( vData.type() == QVariant::Int ) { + case QMetaType::Int: // S32 + { Types::S32 s32; s32.value = vData.toInt(); Types::setValue(s32, mData); return mData; } - if ( vData.type() == QVariant::List ) { - QVariantList list = vData.toList(); - for(auto item: list) { - mData += fromVariant(item); - } + case QMetaType::Short: // S16 + { + Types::S16 s16; + s16.value = vData.toInt(); + Types::setValue(s16, mData); return mData; } - if ( vData.type() == QVariant::Bool ) { - mData += vData.toUInt(); + case QMetaType::UShort: // U16 + { + Types::U16 u16; + u16.value = vData.toInt(); + Types::setValue(u16, mData); return mData; } + case QMetaType::Char: // S08 + { + Types::S08 s08; + s08.value = vData.toInt(); + Types::setValue(s08, mData); + return mData; + } + + case QMetaType::UChar: // U08 + { + Types::U08 u08; + u08.value = vData.toInt(); + Types::setValue(u08, mData); + return mData; + } + + default: + break; + } + mData += '\0'; return mData; }