ImagingTools Core SDK
CCommandsObserverQmlComp.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 <ibase/ICommandsProvider.h>
7#include <ilog/TLoggerCompWrap.h>
8#include <imod/IModel.h>
9#include <imod/TSingleModelObserverBase.h>
10#include <iqtgui/TMakeIconProviderCompWrap.h>
11#include <iqtgui/CHierarchicalCommand.h>
12
13// ImtCore includes
14#include <imtqml/IQuickObject.h>
15
16
17namespace imtqml
18{
19
20
21class CCommandsObserverQmlComp:
22 public QObject,
23 public iqtgui::TMakeIconProviderCompWrap<ilog::CLoggerComponentBase>,
24 public ibase::ICommandsProvider,
25 public iser::ISerializable,
26 protected imod::TSingleModelObserverBase<iprm::IEnableableParam>
27{
28 Q_OBJECT
29public:
30 typedef ilog::CLoggerComponentBase BaseClass;
31
32 I_BEGIN_COMPONENT(CCommandsObserverQmlComp);
33 I_REGISTER_INTERFACE(ibase::ICommandsProvider);
34 I_REGISTER_INTERFACE(iser::ISerializable);
35 I_ASSIGN(m_quickObjectCompPtr, "QuickObject", "Main QML Component", true, "QuickObject");
36 I_ASSIGN(m_quickItemCreatedCompPtr, "QuickItemCreated", "Quick item created", false, "QuickItemCreated");
37 I_ASSIGN_TO(m_quickItemCreatedModelCompPtr, m_quickItemCreatedCompPtr, false);
38 I_END_COMPONENT;
39
40 CCommandsObserverQmlComp();
41
42protected:
43 // reimplemented (icomp::CComponentBase)
44 virtual void OnComponentCreated() override;
45
46 // reimpemented (ibase::ICommandsProvider)
47 virtual const ibase::IHierarchicalCommand* GetCommands() const override;
48
49 // reimplemented (iser::ISerializable)
50 virtual bool Serialize(iser::IArchive& archive) override;
51
52 // reimplemented (imod::TSingleModelObserverBase)
53 virtual void OnUpdate(const istd::IChangeable::ChangeSet& changeSet) override;
54
55private Q_SLOTS:
56 void OnCommandsModelChanged(QVariant variant);
57 void OnTriggered();
58
59private:
60 iqtgui::CHierarchicalCommand m_commandsList;
61
62private:
63 I_REF(imtqml::IQuickObject, m_quickObjectCompPtr);
64 I_REF(iprm::IEnableableParam, m_quickItemCreatedCompPtr);
65 I_REF(imod::IModel, m_quickItemCreatedModelCompPtr);
66};
67
68
69} // namespace imtqml
70
71