ImagingTools Core SDK
CGuiQuickWrapComp.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// Qt includes
6#include <QtCore/QtGlobal>
7#include <QtQuickWidgets/QQuickWidget>
8#include <QtWidgets/QVBoxLayout>
9
10// ACF includes
11#include <icomp/CComponentBase.h>
12#include <iqtgui/IVisualStatus.h>
13#include <iqtgui/IGuiObject.h>
14#include <iqtgui/TGuiComponentBase.h>
15#include <iqtgui/TMakeIconProviderCompWrap.h>
16
17// ImtCore includes
18#include <imtqml/IQuickObject.h>
19
20
21namespace imtqml
22{
23
24
29 public iqtgui::TMakeIconProviderCompWrap<icomp::CComponentBase>,
30 virtual public iqtgui::IGuiObject
31{
32public:
33 typedef iqtgui::TMakeIconProviderCompWrap<icomp::CComponentBase> BaseClass;
34
35 I_BEGIN_COMPONENT(CGuiQuickWrapComp);
36 I_REGISTER_INTERFACE(iqtgui::IGuiObject);
37 I_REGISTER_SUBELEMENT(VisualStatus);
38 I_REGISTER_SUBELEMENT_INTERFACE_T(VisualStatus, iqtgui::IVisualStatus, ExtractVisualStatus);
39 I_REGISTER_SUBELEMENT_INTERFACE_T(VisualStatus, istd::IChangeable, ExtractVisualStatus);
40 I_REGISTER_SUBELEMENT_INTERFACE_T(VisualStatus, imod::IModel, ExtractVisualStatus);
41 I_ASSIGN(m_quickCompPtr, "QuickObject", "Quick", false, "QuickObject");
42 I_ASSIGN(m_defaultStatusIconPathAttrPtr, "DefaultStatusIcon", "Path of status icon used by default", false, "");
43 I_ASSIGN(m_defaultStatusTextAttrPtr, "DefaultStatusText", "Status text used by default", true, "");
44 I_END_COMPONENT;
45
47
48 // reimplemented (iqtgui::IGuiObject)
49 virtual bool IsGuiCreated() const override;
50 virtual bool CreateGui(QWidget* parentPtr) override;
51 virtual bool DestroyGui() override;
52 virtual QWidget* GetWidget() const override;
53 virtual void OnTryClose(bool* ignoredPtr = NULL) override;
54
55protected:
56 // reimplemented (ibase::TDesignSchemaHandlerWrap)
57 virtual void OnDesignSchemaChanged(const QByteArray& themeId) override;
58
59 // reimplemented (icomp::CComponentBase)
60 virtual void OnComponentCreated() override;
61
62protected:
63 class VisualStatus: virtual public iqtgui::IVisualStatus
64 {
65 public:
66 // reimplemented (iqtgui::IVisualStatus)
67 virtual QIcon GetStatusIcon() const;
68 virtual QString GetStatusText() const;
69
70 friend class CGuiQuickWrapComp;
71
72 private:
73 QIcon m_statusIcon;
74 QString m_statusText;
75 };
76
77 // static template methods for subelement access
78 template <class InterfaceType>
79 static InterfaceType* ExtractVisualStatus(CGuiQuickWrapComp& component)
80 {
81 return &component.m_visualStatus;
82 }
83
84protected:
85 I_REF(imtqml::IQuickObject, m_quickCompPtr);
86 I_ATTR(QString, m_defaultStatusIconPathAttrPtr);
87 I_TEXTATTR(m_defaultStatusTextAttrPtr);
88
89 QQuickWidget* m_quickWidget;
90
91 imod::TModelWrap<VisualStatus> m_visualStatus;
92};
93
94
95} // namespace imtqml
96
97