Index: sources/utility/format.cpp =================================================================== diff -u -rbb8f39a014644c70b832dd2a784f62fa9f6b6106 -r69a5a75443d827d5f9a81529e353084e0bd201f4 --- sources/utility/format.cpp (.../format.cpp) (revision bb8f39a014644c70b832dd2a784f62fa9f6b6106) +++ sources/utility/format.cpp (.../format.cpp) (revision 69a5a75443d827d5f9a81529e353084e0bd201f4) @@ -13,6 +13,11 @@ */ #include "format.h" +// Qt + +// Project +#include + Format::Format() { } QString Format::toHexString(quint16 vValue, bool vWith0x, quint8 vLen) { @@ -34,6 +39,12 @@ return string; } +/*! + * \brief Format::fromVariant + * \details This static method converts the defined types into QByteArray + * \param vData - The value + * \return The QByteAttay of the value vData if can't be converted 0xFF will be returned + */ QByteArray Format::fromVariant(const QVariant &vData) { QByteArray mData; @@ -47,7 +58,41 @@ return mData; } - mData += vData.toUInt(); + if ( vData.type() == static_cast(QMetaType::Float) ) { + Types::F32 f32; + f32.value = vData.toFloat(); + Types::setValue(f32, mData); + return mData; + } + + if ( vData.type() == QVariant::UInt ) { + Types::U32 u32; + u32.value = vData.toUInt(); + Types::setValue(u32, mData); + return mData; + } + + if ( vData.type() == QVariant::Int ) { + 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); + } + return mData; + } + + if ( vData.type() == QVariant::Bool ) { + mData += vData.toUInt(); + return mData; + } + + mData += 0xFF; return mData; }