6#include <imod/TSingleModelObserverBase.h>
7#include <iqtgui/TGuiObserverWrap.h>
10#include <imtqml/CQmlGuiCompBase.h>
17template <
class QmlAdapter,
class ModelInterface>
18class TQmlGuiObserverCompWrap:
public iqtgui::TGuiObserverWrap<
20 imod::TSingleModelObserverBase<ModelInterface>>
23 typedef iqtgui::TGuiObserverWrap<
25 imod::TSingleModelObserverBase<ModelInterface>> BaseClass;
27 I_BEGIN_BASE_COMPONENT(TQmlGuiObserverCompWrap)
28 I_REGISTER_INTERFACE(imod::IObserver)
32 virtual bool CreateGui(QWidget* parentPtr)
override;
33 virtual bool DestroyGui()
override;
36 virtual void OnQmlAdapterInitialized();
41 Q_ALWAYS_INLINE
void operator()(QObject* objectPtr)
const
43 if (objectPtr !=
nullptr){
44 objectPtr->deleteLater();
50 std::unique_ptr<QmlAdapter, QObjectDeleter> m_qmlAdapterPtr;
56template <
class QmlAdapter,
class ModelInterface>
57bool TQmlGuiObserverCompWrap<QmlAdapter, ModelInterface>::CreateGui(QWidget* parentPtr)
59 bool retVal = BaseClass::CreateGui(parentPtr);
62 Q_ASSERT(m_qmlAdapterPtr ==
nullptr);
64 if (BaseClass::m_quickWidget ==
nullptr){
65 qCritical() <<
"QuickObject is NOT VALID!";
70 QQuickItem* quickItemPtr = BaseClass::m_quickWidget->rootObject();
71 if (quickItemPtr ==
nullptr){
72 qCritical() <<
"QuickObject hasn't a valid item!";
77 m_qmlAdapterPtr.reset(
new QmlAdapter(
this, quickItemPtr));
79 OnQmlAdapterInitialized();
86template <
class QmlAdapter,
class ModelInterface>
87bool TQmlGuiObserverCompWrap<QmlAdapter, ModelInterface>::DestroyGui()
89 Q_ASSERT(m_qmlAdapterPtr !=
nullptr);
91 m_qmlAdapterPtr.release()->deleteLater();
93 return BaseClass::DestroyGui();
99template <
class QmlAdapter,
class ModelInterface>
100void TQmlGuiObserverCompWrap<QmlAdapter, ModelInterface>::OnQmlAdapterInitialized()