6#include <imtgui/CPopupController.h>
13template<
class GuiObject>
14class TPopupControllerCompWrap:
public GuiObject
17 typedef GuiObject BaseClass;
19 I_BEGIN_COMPONENT(TPopupControllerCompWrap);
20 I_REGISTER_SUBELEMENT(PopupController)
21 I_REGISTER_SUBELEMENT_INTERFACE(PopupController, IPopupController, ExtractPopupController);
22 I_REGISTER_SUBELEMENT_INTERFACE(PopupController, ilog::IMessageConsumer, ExtractPopupController);
23 I_ASSIGN(m_popupWidgetFactoryCompPtr,
"PopupWidgetFactory",
"Widget factory for popup messages and content widgets",
false,
"StandardPopupWidgetFactory");
24 I_ASSIGN_MULTI_0(m_popupEventHandlerCompPtr,
"PopupEventHandler",
"Popup event handlers",
false);
25 I_ASSIGN(m_popupAnchorAttrPtr,
"PopupAnchorCorner",
"0 - TopLeft\n1 - TopRight\n2 - BottomLeft\n3 - BottomRight",
true, 3);
26 I_ASSIGN(m_popupSpacingAttrPtr,
"PopupSpacing",
"Spacing between adjacent popups",
true, 5);
27 I_ASSIGN(m_popupDefaultTimeoutAttrPtr,
"PopupDefaultTimeout",
"Timeout value in msecs before the popup closes, a zero or negative value requires user action to close",
true, 3000);
28 I_ASSIGN_MULTI_0(m_exclusiveMessageSourcesAttrPtr,
"ExclusiveMessageSources",
"Sources of exclusive messages",
false);
32 virtual void OnGuiCreated()
override;
33 virtual void OnGuiShown()
override;
34 virtual void OnGuiHidden()
override;
35 virtual void OnGuiDestroyed()
override;
38 void OnComponentCreated()
override;
41 template <
class InteraceType>
42 static InteraceType* ExtractPopupController(TPopupControllerCompWrap<GuiObject>& parent)
44 return &parent.m_controller;
48 I_REF(IPopupWidgetFactory, m_popupWidgetFactoryCompPtr);
49 I_MULTIREF(IPopupEventHandler, m_popupEventHandlerCompPtr);
50 I_ATTR(
int, m_popupAnchorAttrPtr);
51 I_ATTR(
int, m_popupSpacingAttrPtr);
52 I_ATTR(
int, m_popupDefaultTimeoutAttrPtr);
53 I_MULTIATTR(QString, m_exclusiveMessageSourcesAttrPtr);
55 CPopupController m_controller;
59template<
class GuiObject>
60void TPopupControllerCompWrap<GuiObject>::OnGuiCreated()
62 BaseClass::OnGuiCreated();
64 m_controller.SetParentWidget(BaseClass::GetWidget());
68template<
class GuiObject>
69void TPopupControllerCompWrap<GuiObject>::OnGuiShown()
71 BaseClass::OnGuiShown();
73 m_controller.SetEnabled(
true);
77template<
class GuiObject>
78void TPopupControllerCompWrap<GuiObject>::OnGuiHidden()
80 m_controller.SetEnabled(
false);
82 BaseClass::OnGuiHidden();
86template<
class GuiObject>
87void TPopupControllerCompWrap<GuiObject>::OnGuiDestroyed()
89 m_controller.SetParentWidget(
nullptr);
91 BaseClass::OnGuiDestroyed();
95template<
class GuiObject>
96void TPopupControllerCompWrap<GuiObject>::OnComponentCreated()
98 BaseClass::OnComponentCreated();
100 m_controller.SetAnchorCorner((Qt::Corner)*m_popupAnchorAttrPtr);
101 m_controller.SetSpacing(*m_popupSpacingAttrPtr);
102 m_controller.SetDefaultTimeOut(*m_popupDefaultTimeoutAttrPtr);
103 m_controller.SetPopupWidgetFactory(m_popupWidgetFactoryCompPtr.GetPtr());
106 for (
int i = 0; i < m_exclusiveMessageSourcesAttrPtr.GetCount(); i++){
107 QString source = m_exclusiveMessageSourcesAttrPtr[i];
108 if (!source.isEmpty() && !sources.contains(source)){
109 sources.append(source);
112 m_controller.SetExclusiveMessageSources(sources);
114 for (
int i = 0; i < m_popupEventHandlerCompPtr.GetCount(); i++){
115 if (m_popupEventHandlerCompPtr[i] !=
nullptr){
116 m_controller.RegisterEventHandler(m_popupEventHandlerCompPtr[i]);