4#include <icomp/CComponentBase.h>
10#include <ilog/IMessageConsumer.h>
15template <
class Editor>
16class TValidatedEditorCompWrap:
public Editor,
virtual public ilog::IMessageConsumer
19 typedef Editor BaseClass;
21 I_BEGIN_COMPONENT(Editor);
22 I_REGISTER_INTERFACE(ilog::IMessageConsumer);
23 I_ASSIGN_MULTI_0(m_validationMessageIdAttrPtr,
"ValidationMessageIds",
"Validation message ids",
false);
24 I_ASSIGN_MULTI_0(m_validationMessageWidgetPropertyAttrPtr,
"ValidationMessageWidget properties",
"Properties for identifying the validation message widgets",
false);
29 virtual bool IsMessageSupported(
30 int messageCategory = -1,
32 const istd::IInformationProvider* messagePtr = NULL)
const override;
33 virtual void AddMessage(
const MessagePtr& messagePtr)
override;
37 virtual void OnComponentCreated()
override;
40 I_MULTIATTR(
int, m_validationMessageIdAttrPtr);
41 I_MULTIATTR(QByteArray, m_validationMessageWidgetPropertyAttrPtr);
43 QMap<int, QByteArray> m_propertyMap;
47template <
class Editor>
48bool TValidatedEditorCompWrap<Editor>::IsMessageSupported(
51 const istd::IInformationProvider* messagePtr)
const
57template <
class Editor>
58void TValidatedEditorCompWrap<Editor>::AddMessage(
const MessagePtr& messagePtr)
60 QWidget* widget = GetQtWidget();
61 QWidget* validationMessageWidgetPtr =
nullptr;
63 QByteArray
property = m_propertyMap[messagePtr->GetInformationId()];
65 QList<QWidget*> widgetList = widget->findChildren<QWidget*>();
66 for (
const QWidget* widgetPtr : widgetList){
67 if (widgetPtr->property(property).isValid()){
68 switch (messagePtr->GetInformationCategory()){
69 case istd::IInformationProvider::IC_ERROR:
70 case istd::IInformationProvider::IC_CRITICAL:
71 widgetPtr->setProperty(
"text", messagePtr->GetInformationDescription());
72 widgetPtr->setStyleSheet(
"color : red;");
75 case istd::IInformationProvider::IC_WARNING:
76 widgetPtr->setProperty(
"text", messagePtr->GetInformationDescription());
77 widgetPtr->setStyleSheet(
"color : yellow;");
93template <
class Editor>
94void TValidatedEditorCompWrap<Editor>::OnComponentCreated()
96 int count = m_validationMessageIdAttrPtr.GetCount();
97 count = qMin(count, m_validationMessageWidgetPropertyAttrPtr.GetCount());
99 for (
int i = 0; i < count; i++){
100 m_propertyMap[m_validationMessageIdAttrPtr[i]] = m_validationMessageWidgetPropertyAttrPtr[i];