/*! * * 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 * date 10/25/2019 * author Behrouz NematiPour * */ #pragma once // Qt #include // Project // TODO : A singleton parent class needs to be created // to taking care of the Threading, init, quit, and so // TODO : // - We still need to work on threading on other classes // - We need to have a singleton parent class // - Some code has been added to debug can interface (We still have swap frames) #define SINGLETON(vCLASS) \ private: \ explicit vCLASS(QObject *parent = nullptr); \ virtual ~vCLASS() { } \ vCLASS(vCLASS const &) = delete; \ vCLASS & operator = (vCLASS const &) = delete; \ public: \ static vCLASS &I() { \ static vCLASS _instance; \ return _instance; \ } \ //--------------------------------------------------------------------------------// //--------------------------------------------------------------------------------// extern int gFakeInterval; extern QByteArray gFakeData; extern const char*gFakeData_default; extern bool gSendEmptyKeepAwake; extern bool gFakeSeqAtBegin; extern bool gDisableHunhandledReport; //--------------------------------------------------------------------------------// //--------------------------------------------------------------------------------// #define PROPERTY(vTYPE , vVARIABLE , vDEFVALUE, vALWAYSEMIT ) \ Q_PROPERTY(vTYPE vVARIABLE \ READ vVARIABLE \ WRITE vVARIABLE \ NOTIFY vVARIABLE##Changed) \ Q_SIGNALS: \ void vVARIABLE##Changed \ ( const vTYPE & v##vVARIABLE ); \ private: \ vTYPE _##vVARIABLE = vDEFVALUE; \ vTYPE vVARIABLE () const { \ return _##vVARIABLE ; \ } \ void vVARIABLE ( const vTYPE & v##vVARIABLE ) { \ static bool init = false; \ if ( vALWAYSEMIT \ || ! init \ || _##vVARIABLE != v##vVARIABLE ) { \ init = true; \ _##vVARIABLE = v##vVARIABLE; \ emit vVARIABLE##Changed( _##vVARIABLE ); \ } \ } //--------------------------------------------------------------------------------// //--------------------------------------------------------------------------------// #define ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, vTYPE) \ connect(&vSOURCE, SIGNAL(didActionReceive(const vTYPE &)), \ this , SLOT( onActionReceive(const vTYPE &))); //--------------------------------------------------------------------------------// #define ACTION_RECEIVE_PRIVATE_SLOT(vTYPE) \ private Q_SLOTS: \ void onActionReceive (const vTYPE &vData) { \ emit didActionReceive(vData); \ } //--------------------------------------------------------------------------------// #define ACTION_RECEIVE_SIGNAL(vTYPE) \ Q_SIGNALS: \ void didActionReceive (const vTYPE &vData); //--------------------------------------------------------------------------------// #define ACTION_RECEIVE_BRIDGE_DEFINITION(vTYPE) \ ACTION_RECEIVE_PRIVATE_SLOT (vTYPE) \ ACTION_RECEIVE_SIGNAL (vTYPE) //--------------------------------------------------------------------------------// #define REGISTER_METATYPE(vTYPE) \ qRegisterMetaType < vTYPE > (#vTYPE); //--------------------------------------------------------------------------------// #define REGISTER_TYPE(vTYPE) \ qmlRegisterType < vTYPE > (#vTYPE, 0, 1, #vTYPE);