9#include <QtCore/QString>
26template <
class ModelInterface>
58 ModelInterface* m_observedObjectPtr;
64template <
class ModelInterface>
67 m_observedObjectPtr =
NULL;
71template <
class ModelInterface>
74 return m_observedObjectPtr;
78template <
class ModelInterface>
81 return m_observedObjectPtr;
85template <
class ModelInterface>
88 EnsureModelDetached();
97 m_observedObjectPtr = objectPtr;
105template <
class ModelInterface>
108 m_observedObjectPtr = CastFromModel(modelPtr);
111 if (m_observedObjectPtr ==
NULL){
112 QString exptectedObjectInterface =
typeid(ModelInterface).name();
114 qDebug(
"Data model interface is not supported by this observer. Expected interface is: %s", qPrintable(exptectedObjectInterface));
118 if ((m_observedObjectPtr !=
NULL) && BaseClass::OnModelAttached(modelPtr, changeMask)){
122 BaseClass::EnsureModelDetached();
128template <
class ModelInterface>
131 if (BaseClass::OnModelDetached(modelPtr)){
133 Q_ASSERT(m_observedObjectPtr !=
NULL);
135 m_observedObjectPtr =
NULL;
146template <
class ModelInterface>
149 return dynamic_cast<ModelInterface*
>(modelPtr);
Basic implementation for a single model observer.
Common interface for model objects, that supports Model/Observer design pattern.
virtual bool AttachObserver(IObserver *observerPtr)=0
Attaches model object to observer observerPtr.
Basic implementation for a single model observer with binding to concrete data object interface.
TSingleModelObserverBase()
CSingleModelObserverBase BaseClass
ModelInterface * GetObjectPtr() const
Get instance of observed object.
virtual bool OnModelDetached(imod::IModel *modelPtr) override
Callback invoked when an observable model is about to be detached from this observer.
bool AttachOrSetObject(ModelInterface *objectPtr)
Attach to model of object or set object pointer, if no connection is possible.
virtual ModelInterface * CastFromModel(imod::IModel *modelPtr) const
virtual bool OnModelAttached(imod::IModel *modelPtr, istd::IChangeable::ChangeSet &changeMask) override
Callback invoked when an observable model is about to be attached to this observer.
ModelInterface * GetObservedObject() const
Get instance of observed object.
Set of change flags (its IDs).
#define I_IF_DEBUG(instructions)
This namespace containes basic implementation of Model/Observer design pattern This package is system...