ACF $AcfVersion:0$
CGuiComponentBase.h
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ACF-Commercial
2#pragma once
3
4
5// Qt includes
6#include <QtCore/QString>
7#include <QtGui/QIcon>
8
9// ACF includes
10#include <imod/TModelWrap.h>
13#include <iqtgui/IGuiObject.h>
17
18
19namespace iqtgui
20{
21
22
27 public QObject,
28 public TMakeIconProviderCompWrap<ibase::TLocalizableWrap<icomp::CComponentBase>>,
29 virtual public IGuiObject
30{
31public:
33
34 I_BEGIN_BASE_COMPONENT(CGuiComponentBase);
35 I_REGISTER_INTERFACE(IGuiObject);
36 I_REGISTER_SUBELEMENT(VisualStatus);
40 I_ASSIGN(m_defaultStatusIconPathAttrPtr, "DefaultStatusIcon", "Path of status icon used by default", false, "");
41 I_ASSIGN(m_defaultStatusTextAttrPtr, "DefaultStatusText", "Status text used by default", true, "");
42 I_ASSIGN(m_styleSheetPathAttrPtr, "StyleSheet", "Path to the style sheet file used for this UI component.", false, "");
43 I_ASSIGN(m_objectIdAttrPtr, "ObjectId", "ID of the widget", false, "");
44 I_ASSIGN(m_fixedWidthAttrPtr, "FixedWidth", "Fixed width of the widget", false, 300);
45 I_ASSIGN(m_fixedHeightAttrPtr, "FixedHeight", "Fixed height of the widget", false, 300);
46 I_END_COMPONENT;
47
49
50 bool IsGuiShown() const;
51
52 // reimplemented (iqtgui::IGuiObject)
53 virtual bool IsGuiCreated() const override;
54 virtual bool CreateGui(QWidget* parentPtr) override;
55 virtual bool DestroyGui() override;
56 virtual QWidget* GetWidget() const override;
57 virtual void OnTryClose(bool* ignoredPtr = NULL) override;
58
59#if _MSC_VER < 1500
60public:
61#else
62protected:
63#endif
64 class VisualStatus: virtual public IVisualStatus
65 {
66 public:
67 // reimplemented (iqtgui::IVisualStatus)
68 virtual QIcon GetStatusIcon() const override;
69 virtual QString GetStatusText() const override;
70
71 friend class CGuiComponentBase;
72
73 private:
74 QIcon m_statusIcon;
75 QString m_statusText;
76 };
77
78protected:
79 virtual void OnGuiDesignChanged();
80
84 virtual void OnGuiShown();
85
89 virtual void OnGuiHidden();
90
95 virtual bool OnKeyPressed(QKeyEvent* event);
96
100 virtual void OnRetranslate();
101
105 virtual void OnGuiRetranslate();
106
110 virtual void OnGuiCreated();
111
115 virtual void OnGuiDestroyed();
116
120 void SetStatusIcon(const QIcon& icon);
124 void SetStatusText(const QString& text);
125
127
128 // reimplemented (ibase::TLocalizableWrap)
129 virtual void OnLanguageChanged() override;
130
131 // reimplemented (ibase::TDesignSchemaHandlerWrap)
132 virtual void OnDesignSchemaChanged(const QByteArray& themeId) override;
133
134 // reimplemented (QObject)
135 virtual bool eventFilter(QObject* sourcePtr, QEvent* eventPtr) override;
136
137 // reimplemented (icomp::CComponentBase)
138 virtual void OnComponentCreated() override;
139 virtual void OnComponentDestroyed() override;
140
141 // abstract methods
145 virtual QWidget* CreateQtWidget(QWidget* parentPtr) = 0;
146
147 // attributes
149
150private:
151 void MakeAutoSlotConnection();
152
153 I_ATTR(QString, m_defaultStatusIconPathAttrPtr);
154 I_TEXTATTR(m_defaultStatusTextAttrPtr);
155 I_ATTR(QString, m_styleSheetPathAttrPtr);
156 I_ATTR(QByteArray, m_objectIdAttrPtr);
157 I_ATTR(int, m_fixedWidthAttrPtr);
158 I_ATTR(int, m_fixedHeightAttrPtr);
159
160 QWidget* m_widgetPtr;
161 bool m_isGuiShown;
162
163 QIcon m_defaultStatusIcon;
164
165 // static template methods for subelement access
166 template <class InterfaceType>
167 static InterfaceType* ExtractVisualStatus(CGuiComponentBase& component)
168 {
169 return &component.m_visualStatus;
170 }
171
172 bool m_hasPendingDesignChanges;
173};
174
175
176// inline methods
177
179{
180 return m_isGuiShown;
181}
182
183
184// reimplemented (iqtgui::IGuiObject)
185
186inline QWidget* CGuiComponentBase::GetWidget() const
187{
188 return m_widgetPtr;
189}
190
191
192} // namespace iqtgui
193
194
195
196
Common interface for model objects, that supports Model/Observer design pattern.
Definition IModel.h:25
This model wrapper provides a simple connection between a concrete istd::IChangeable implementation a...
Definition TModelWrap.h:24
virtual QString GetStatusText() const override
Get status text.
virtual QIcon GetStatusIcon() const override
Get the icon describing current status.
Base class for classes implementing interface iqtgui::IGuiObject.
virtual bool CreateGui(QWidget *parentPtr) override
Initializes the GUI and connects it to the parent widget.
virtual bool OnKeyPressed(QKeyEvent *event)
Called from widget event filter when key is pressed.
TMakeIconProviderCompWrap< ibase::TLocalizableWrap< icomp::CComponentBase > > BaseClass
virtual void OnTryClose(bool *ignoredPtr=NULL) override
Called when the application is attempting to close.
virtual void OnRetranslate()
Called when non-GUI elements (like commands) should be retranslated.
virtual bool eventFilter(QObject *sourcePtr, QEvent *eventPtr) override
virtual void OnGuiShown()
Called from widget event filter when slave widget is shown.
I_REGISTER_SUBELEMENT_INTERFACE_T(VisualStatus, imod::IModel, ExtractVisualStatus)
virtual QWidget * GetWidget() const override
Gets access to the internal QWidget object.
virtual void OnGuiDestroyed()
Called just before GUI is released.
virtual void OnLanguageChanged() override
void SetStatusIcon(const QIcon &icon)
Set status icon;.
virtual void OnComponentDestroyed() override
imod::TModelWrap< VisualStatus > m_visualStatus
virtual void OnDesignSchemaChanged(const QByteArray &themeId) override
void SetStatusText(const QString &text)
Set status text;.
virtual QWidget * CreateQtWidget(QWidget *parentPtr)=0
Create slave widget object.
virtual bool DestroyGui() override
Releases GUI resources and disconnects from the parent.
virtual void OnGuiRetranslate()
Called from widget event filter when GUI should be retranslated.
virtual void OnGuiCreated()
Called just after GUI is initialized.
virtual void OnGuiDesignChanged()
I_REGISTER_SUBELEMENT_INTERFACE_T(VisualStatus, IVisualStatus, ExtractVisualStatus)
I_REGISTER_SUBELEMENT_INTERFACE_T(VisualStatus, istd::IChangeable, ExtractVisualStatus)
virtual void OnComponentCreated() override
virtual bool IsGuiCreated() const override
Checks if the GUI has been initialized and created.
virtual void OnGuiHidden()
Called from widget event filter when slave widget is hidden.
Common interface for GUI objects used in ACF component context.
Definition IGuiObject.h:133
Extends standard information provider to provide additional visual informations.
Common interface for data model objects, which can be changed.
Definition IChangeable.h:28
#define I_TEXTATTR(member)
Declare translatable text attribute member.
#define NULL
Definition istd.h:74
Standard GUI specific interfaces and components based on Qt.