ImagingTools Core SDK
CGqlQuickObjectComp.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// ACF includes
6#include <iprm/IEnableableParam.h>
7#include <imod/TModelWrap.h>
8
9// ImtCore includes
10#include <imtbase/IApplicationInfoController.h>
11#include <imtcom/IServerConnectionInterface.h>
12#include <imtbase/TModelUpdateBinder.h>
13#include <imtqml/CQuickObjectCompBase.h>
14
15
16namespace imtqml
17{
18
19
23class CGqlQuickObjectComp: public QObject, public CQuickObjectCompBase
24{
25 Q_OBJECT
26public:
28
29 I_BEGIN_COMPONENT(CGqlQuickObjectComp);
30 I_REGISTER_SUBELEMENT(QuickItemCreated);
31 I_REGISTER_SUBELEMENT_INTERFACE(QuickItemCreated, iprm::IEnableableParam, ExtractEnableableParam);
32 I_REGISTER_SUBELEMENT_INTERFACE(QuickItemCreated, imod::IModel, ExtractEnableableParam);
33 I_REGISTER_SUBELEMENT_INTERFACE(QuickItemCreated, istd::IChangeable, ExtractEnableableParam);
34 I_ASSIGN(m_baseUrlAttrPtr, "BaseUrl", "BaseUrl for AccessManager", false, "");
35 I_ASSIGN(m_serverConnectionParamPtr, "ServerConnectionParam", "ServerConnectionParam", false, "ServerConnectionParam");
36 I_ASSIGN(m_applicationInfoCompPtr, "ApplicationInfoController", "Application info controller", true, "ApplicationInfo");
37 I_END_COMPONENT;
38
40
41protected:
42 // reimplemented (CQuickObjectCompBase)
43 virtual bool InitializeEngine(QQmlEngine& qmlEngine) const override;
44 virtual void OnItemCreated() override;
45 virtual void OnItemDestroyed() override;
46
47 // reimplemented (icomp::CComponentBase)
48 virtual void OnComponentCreated() override;
49 virtual void OnComponentDestroyed() override;
50
51private:
52 void OnServerConnectionParamChanged(const istd::IChangeable::ChangeSet& changeSet, const imtcom::IServerConnectionInterface* serverConnectionParamPtr);
53 void OnApplicationInfoChanged(const istd::IChangeable::ChangeSet& changeSet, const imtbase::IApplicationInfoController* applicationInfoControllerPtr);
54 virtual void SetBaseUrl() const;
55
56private:
57 class QuickItemCreated : public iprm::IEnableableParam
58 {
59 public:
60 QuickItemCreated();
61
62 void SetQuickItemCreated(bool isCreated);
63
64 // reimplemented (iprm::IEnableableParam)
65 virtual bool IsEnabled() const;
66 virtual bool IsEnablingAllowed() const;
67 virtual bool SetEnabled(bool isEnabled = true);
68
69 // reimplemented (iser::ISerializable)
70 virtual bool Serialize(iser::IArchive& archive);
71
72 private:
73 bool m_isCreated;
74 };
75
76 // static template methods for sub element access
77 template <class InterfaceType>
78 static InterfaceType* ExtractEnableableParam(CGqlQuickObjectComp& component)
79 {
80 return &component.m_itemCreated;
81 }
82
83protected:
84 imod::TModelWrap<QuickItemCreated> m_itemCreated;
85
86protected:
87 I_ATTR(QString, m_baseUrlAttrPtr);
88 I_MULTIATTR(QByteArray, m_modelIdsAttrPtr);
89 I_MULTIATTR(QByteArray, m_modelQueriesAttrPtr);
90 I_REF(imtcom::IServerConnectionInterface, m_serverConnectionParamPtr);
91 I_REF(imtbase::IApplicationInfoController, m_applicationInfoCompPtr);
92
95};
96
97
98} // namespace imtqml
99
100
Interface for describing server connection configuration with multi-protocol support.