Index: sources/main.h =================================================================== diff -u -r56e378f7504701b9e9a9dccaf205aef2fd52c58e -r846a9ebc350e33be4affab3cc4c136248900015d --- sources/main.h (.../main.h) (revision 56e378f7504701b9e9a9dccaf205aef2fd52c58e) +++ sources/main.h (.../main.h) (revision 846a9ebc350e33be4affab3cc4c136248900015d) @@ -1,16 +1,16 @@ /*! - * + * * 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 main.h * \author (last) Behrouz NematiPour * \date (last) 30-Jul-2020 * \author (original) Behrouz NematiPour * \date (original) 28-Oct-2019 - * + * */ #pragma once @@ -48,14 +48,14 @@ extern bool gDisableTimeout; //--------------------------------------------------------------------------------// //--------------------------------------------------------------------------------// -#define DEBUG_PROPERTY_CHANGED(vVARIABLE) //qDebug() << "#" << #vVARIABLE << v##vVARIABLE; +#define DEBUG_PROPERTY_CHANGED(vVARIABLE, PREFIX) // qDebug() << "#" << #vVARIABLE << PREFIX##vVARIABLE; //--------------------------------------------------------------------------------// #define PROPERTY_SLOT( vTYPE , vVARIABLE ) \ protected : \ void vVARIABLE ( const vTYPE & v##vVARIABLE ) { \ static bool init = false; \ if ( !init || _##vVARIABLE != v##vVARIABLE ) { \ - DEBUG_PROPERTY_CHANGED(vVARIABLE) \ + DEBUG_PROPERTY_CHANGED(vVARIABLE, v) \ init = true; \ _##vVARIABLE = v##vVARIABLE; \ emit vVARIABLE##Changed( _##vVARIABLE ); \ @@ -65,7 +65,7 @@ #define TRIGGER_SLOT( vTYPE , vVARIABLE ) \ protected: \ void vVARIABLE ( const vTYPE & v##vVARIABLE ) { \ - DEBUG_PROPERTY_CHANGED(vVARIABLE) \ + DEBUG_PROPERTY_CHANGED(vVARIABLE, v) \ _##vVARIABLE = v##vVARIABLE; \ emit vVARIABLE##Triggered( _##vVARIABLE ); \ } @@ -167,4 +167,63 @@ //--------------------------------------------------------------------------------// #define REGISTER_TYPE(vTYPE) \ qmlRegisterType < vTYPE > (#vTYPE, 0, 1, #vTYPE); +#define GET_VARIABLE_NAME(VARIABLE) (#VARIABLE) +#define TREATMENT_PARAMETER(TYPE, NAME, DEFVALUE, MIN, MAX, RES) \ +private: \ + TYPE _##NAME = DEFVALUE; \ + TYPE _##NAME##Min = MIN; \ + TYPE _##NAME##Max = MAX; \ + TYPE _##NAME##Res = RES; \ + bool is##NAME##Set = false; \ +protected: \ + Q_PROPERTY(TYPE NAME \ + READ get_##NAME \ + WRITE set_##NAME \ + NOTIFY NAME##Changed) \ + Q_PROPERTY(TYPE NAME##Min \ + READ NAME##Min \ + WRITE NAME##Min \ + NOTIFY NAME##MinChanged) \ + Q_PROPERTY(TYPE NAME##Max \ + READ NAME##Max \ + WRITE NAME##Max \ + NOTIFY NAME##MaxChanged) \ + Q_PROPERTY(TYPE NAME##Res \ + READ NAME##Res \ + WRITE NAME##Res \ + NOTIFY NAME##ResChanged) \ + void set_##NAME(const TYPE &p##NAME) { \ + static bool init = false; \ + if ( !init || _##NAME != p##NAME ) { \ + init = true; \ + _##NAME = p##NAME; \ + DEBUG_PROPERTY_CHANGED(NAME, _) \ + is##NAME##Set = true; \ + emit NAME##Changed(_##NAME); \ + onUserModifiedParameters(); \ + } \ + } \ + TYPE NAME##Min() const { return _##NAME##Min; } \ + void NAME##Min(const TYPE &p##NAME##Min) \ + { _##NAME##Min = p##NAME##Min; emit NAME##MinChanged(_##NAME##Min);} \ + TYPE NAME##Max() const { return _##NAME##Max; } \ + void NAME##Max(const TYPE &p##NAME##Max) \ + { _##NAME##Max = p##NAME##Max; emit NAME##MaxChanged(_##NAME##Max);} \ + TYPE NAME##Res() const { return _##NAME##Res; } \ + void NAME##Res(const TYPE &p##NAME##Res) \ + { _##NAME##Res = p##NAME##Res; emit NAME##ResChanged(_##NAME##Res);} \ + TYPE get_##NAME() const { \ + return _##NAME; \ + } \ + void reset_##NAME() { \ + _##NAME = DEFVALUE; \ + is##NAME##Set = false; \ + emit NAME##Changed(_##NAME); \ + } \ +Q_SIGNALS: \ + void NAME##Changed(const TYPE &p##NAME); \ + void NAME##MinChanged(const TYPE &p##NAME); \ + void NAME##MaxChanged(const TYPE &p##NAME); \ + void NAME##ResChanged(const TYPE &p##NAME); \ + void NAME##_ValidationFailed(const QString &reason);