/*! * * 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 VDeviceGlobals.h * \author (last) Behrouz NematiPour * \date (last) 01-Jun-2021 * \author (original) Behrouz NematiPour * \date (original) 01-Jun-2021 * */ #pragma once // Qt #include #define ATTRIBUTE( vTYPE, vATTRIBUTE, vDEFAULT ) \ private: \ /*! the private property member variable */ \ vTYPE _##vATTRIBUTE = vDEFAULT; \ /*! the property definition */ \ Q_PROPERTY( vTYPE vATTRIBUTE \ READ vATTRIBUTE \ WRITE vATTRIBUTE \ NOTIFY vATTRIBUTE##Changed) \ /*! the READ/getter method */ \ vTYPE vATTRIBUTE ( ) { \ return _##vATTRIBUTE; \ } \ /*! the WRITE method */ \ void vATTRIBUTE (const vTYPE & v##vATTRIBUTE ) { \ vATTRIBUTE ( v##vATTRIBUTE, true ); \ } \ /*! the UPDATE method */ \ void _##vATTRIBUTE##_ (const vTYPE & v##vATTRIBUTE ) { \ vATTRIBUTE ( v##vATTRIBUTE,false ); \ } \ /*! the setter method */ \ void vATTRIBUTE (const vTYPE & v##vATTRIBUTE, \ bool vIsRequest ) { \ if ( _##vATTRIBUTE != v##vATTRIBUTE ) { \ _##vATTRIBUTE = v##vATTRIBUTE ; \ emit vATTRIBUTE##Changed ( _##vATTRIBUTE ); \ } \ if ( vIsRequest ) \ vATTRIBUTE##Request ( v##vATTRIBUTE ); \ } \ Q_SIGNALS: /*! the signals for property bindings(Changed) and communications */ \ void vATTRIBUTE##Changed (const vTYPE & v##vATTRIBUTE ); \ private : /*! the function is called once the property is set in qml as request */ \ void vATTRIBUTE##Request (const vTYPE & v##vATTRIBUTE ); \ //private slots: // void on##vATTRIBUTE##Response(const vTYPE & v##vATTRIBUTE );