Index: sources/utility/format.cpp =================================================================== diff -u -r13d6a4fae2f910ab6e289ac9280258a94f734405 -r2ef03b2ce51b4dc507f66e9671953a8e0824bde9 --- sources/utility/format.cpp (.../format.cpp) (revision 13d6a4fae2f910ab6e289ac9280258a94f734405) +++ sources/utility/format.cpp (.../format.cpp) (revision 2ef03b2ce51b4dc507f66e9671953a8e0824bde9) @@ -1,15 +1,15 @@ /*! * - * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. + * Copyright (c) 2019-2024 Diality Inc. - All Rights Reserved. * \copyright * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * - * \file format.cpp - * \author (last) Behrouz NematiPour - * \date (last) 08-Sep-2020 - * \author (original) Behrouz NematiPour - * \date (original) 16-Dec-2019 + * \file format.cpp + * \author (last) Behrouz NematiPour + * \date (last) 28-May-2023 + * \author (original) Behrouz NematiPour + * \date (original) 16-Dec-2019 * */ #include "format.h" @@ -69,59 +69,103 @@ * \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 0x00 will be returned + * \return The QByteAttay of the value vData if cannot be converted 0x00 will be returned * \note Regarding the QVariant type conversion, if cannot be converted 0 will be returned * This rule has been used and also to be consistent followed the same rule. * \note This method converts both float and double to F32 and returns its QByteArray representation. */ 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(const auto &item: qAsConst(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; } @@ -159,6 +203,23 @@ */ QString Format::fromEpoch(qint64 vEpoch, QString vFormat) { + if ( ! vEpoch ) return ""; QDateTime dateTime = QDateTime::fromSecsSinceEpoch(vEpoch); return dateTime.toString(vFormat); } + +/*! + * \brief Format::fromVariantList + * \param vData - QVariantList data to be converted to the QSteingList + * \return the QStringList conversion of the vData + */ +QStringList Format::fromVariantList(const QVariantList &vData) +{ + QStringList data; + + // convert the data to string list + for (auto datum : vData) { + data += datum.toString(); + } + return data; +}