Index: sources/main.h =================================================================== diff -u -r265ce7409a0ea99a4ae059f5ce7978c9cdb10631 -r981e534e5b3174aab7ec47de3b1ead1511dbb6ef --- sources/main.h (.../main.h) (revision 265ce7409a0ea99a4ae059f5ce7978c9cdb10631) +++ sources/main.h (.../main.h) (revision 981e534e5b3174aab7ec47de3b1ead1511dbb6ef) @@ -172,7 +172,7 @@ #define PROPERTY_POST_CONNECTION( vCLASS, vVARIABLE ) \ connect(this, &vCLASS::vVARIABLE##Changed \ , &vCLASS::vVARIABLE##_post ); - +//--------------------------------------------------------------------------------// #define PROPERTY_BASE(vTYPE , vVARIABLE , vDEFVALUE, vSIGNAL) \ /*! \brief Qt Property declaration \details The Qt Property definition by Q_PROPERTY documentation. @@ -232,6 +232,45 @@ return _##vVARIABLE ; \ } //--------------------------------------------------------------------------------// +#define IDBASED_BASE(vTYPE , vVARIABLE , vDEFVALUE , vLIST , vID) \ + /*! \brief Qt Property declaration + \details The Qt Property definition by Q_PROPERTY documentation. + */\ + Q_PROPERTY( vTYPE vVARIABLE \ + READ vVARIABLE \ + WRITE vVARIABLE \ + NOTIFY vID##Changed) \ + Q_SIGNALS: \ + /*! \brief Property notify signal + \details The property notify signal (...Changed) + which will be emitted by property setter + - if only the value has been changed \n + - or it's the first time property is set. \n + \return current value + */\ + void vVARIABLE##Changed( const vTYPE & v##vVARIABLE ); \ + private: \ + vTYPE _##vVARIABLE = vDEFVALUE; \ + bool _##vVARIABLE##Changed = false; \ + bool _##vVARIABLE##ByID = true ; \ + protected: \ + /*! \brief Property byId setter + \details The property sets the ByID value to be used in the getter + */\ + void vVARIABLE##ByID(bool vByID = true) { \ + _##vVARIABLE##ByID = vByID ; \ + } \ + /*! \brief Property getter + \details The property getter which reads the private variable + \return current value + */\ + vTYPE vVARIABLE () const { \ + if ( ! _##vVARIABLE##ByID ) return _##vVARIABLE; \ + QString value = _##vLIST [ _##vID ].vVARIABLE; \ + if ( ! value.isEmpty() ) return value; \ + return vDEFVALUE; \ + } +//--------------------------------------------------------------------------------// #define READONLY( vTYPE , vVARIABLE , vDEFVALUE ) \ READONLY_BASE( vTYPE , vVARIABLE , vDEFVALUE , Changed ) \ PROPERTY_SLOT( vTYPE , vVARIABLE) @@ -248,6 +287,11 @@ PROPERTY_BASE( vTYPE , vVARIABLE , vDEFVALUE , Entered ) \ STATE_SLOT ( vTYPE , vVARIABLE) //--------------------------------------------------------------------------------// + +#define IDBASED( vTYPE , vVARIABLE , vDEFAULT , vLIST , vID ) \ + IDBASED_BASE ( vTYPE , vVARIABLE , vDEFAULT , vLIST , vID ) \ + PROPERTY_SLOT( vTYPE , vVARIABLE ) +//--------------------------------------------------------------------------------// #define CONSTANT( vTYPE , vVARIABLE , vDEFVALUE ) \ /*! \brief Qt Constant Property declaration \details The Qt Property definition by Q_PROPERTY documentation.