Files
qt5-legatus-legacy/Lts/Proxies/HighLevelArchitecture/Apache/rpr/rpr_observer_object_cb.h
T
2026-08-13 18:33:10 +02:00

49 lines
1.4 KiB
C++
Executable File

/**
* class to handle signals for ObserverObjects functions
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include <QObject>
#include <IObserverBaseEntityObjInstance.h>
#include <IObserverEmbeddedSystemObjInstance.h>
#include <IObserverEnvironmentObjectObjInstance.h>
#include <Common/logger.h>
class ObserverObjectCB : public QObject
{
Q_OBJECT
public:
ObserverObjectCB(const char *loggerName = "Callbacks.Object.Object")
: m_logger(HighLevelArchitecture::getLogger(loggerName))
{}
template<typename T>
typename T::IObjectCallback &newObjectInstance(typename T::Object &object)
{
typedef typename T::ObjectCallback OBJ_CB;
OBJ_CB *that = dynamic_cast<OBJ_CB *>(this);
T *cb = new T(*that); //Neues Observer-Objekt erstellen
cb->setInterface(&object); //Merken des Objekts, falls man die get-Funktionen nutzen möchte
emit newObjectInstance2(object); //Bekannt machen, das ein neues Objekt gemeldet wurde
return *cb; //Hier wird der Observer für dieses Objekt zurückgegeben.
}
void deleteObjectInstance(const ngs::IObserverObjectInstance &object)
{
emit objectInstanceDeleted(object);
}
Q_SIGNALS:
void newObjectInstance(const ngs::IObserverObjectInstance &object);
void newObjectInstance2(const ngs::IObserverObjectInstance &object);
void objectInstanceDeleted(const ngs::IObserverObjectInstance &object);
protected:
NGL::INGLLogger &m_logger;
};