/*! * * Copyright (c) 2019-2020 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 MAbstract.h * \date 7/2/2020 * \author Behrouz NematiPour * */ #pragma once // Qt #include #include // Project namespace Model { /*! * \brief The MAbstract class * \details All the Message Models has to be inherited from MAbstract * As this class is abstract it dictates children to implement required methods. * And also implements some some share methods to ease implementing Models. */ class MAbstract { private: const char _delimiter = ','; quint8 _precision = 2; public: enum class Type_Enum { eDatum, eEvent, }; enum class Unit_Enum { eUI, eHD, eDG, }; private: const QMap _typeText { {Type_Enum::eDatum, "D"}, {Type_Enum::eEvent, "E"} }; const QMap _unitText { {Unit_Enum::eUI, "UI"}, {Unit_Enum::eHD, "HD"}, {Unit_Enum::eDG, "DG"} }; public: // the model needs to implement these since each model have different meaning of the bytes from different source(unit). /*! * \brief fromByteArray * \details converts the values from Byte Arrays to the Model data. * \param vByteArray - the byte array input * \param vIndex - current index of each data section in byte array * \return true on successful conversion */ virtual bool fromByteArray(const QByteArray &vByteArray , int *vIndex = nullptr) = 0; /*! * \brief typeText * \details type of the model which can be Data or Event which is mostly used in logging. * \return Enum of Types */ virtual Type_Enum typeText ( ) const = 0; /*! * \brief unitText * \details the unit which UI communicates with by using this model and is used in Logging mostly * \return Enum of Units */ virtual Unit_Enum unitText ( ) const = 0; /*! * \brief infoText * \details the text description of the model which will be used in the logging. * \return QString */ virtual QString infoText ( ) const = 0; /*! * \brief parameters * \return current data values of the models. */ virtual QVariantList parameters ( ) const = 0; // Non-virtual methods which working with parameters virtual method. void toVariantList(QVariantList &vData) const; QString toString ( ) const; QString description ( ) const; }; }