/** * class to handle signals for ObserverObjects functions * $Id$ * $HeadURL$ * $Author$ */ #pragma once #include #include #include #include class ObserverObjectCB : public QObject { Q_OBJECT public: ObserverObjectCB(const char *loggerName = "Callbacks.Object") : m_logger(HighLevelArchitecture::getLogger(loggerName)) {} template typename T::IObjectCallback &newObjectInstance(typename T::Object &object) { typedef typename T::ObjectCallback OBJ_CB; OBJ_CB *that = dynamic_cast(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; };