ImagingTools Core SDK
CParamsManagerAdapterComp.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 <icomp/CComponentBase.h>
7#include <imod/CMultiModelDispatcherBase.h>
8#include <iprm/IParamsManager.h>
9#include <iprm/COptionsManager.h>
10
11// ImtCore includes
12#include <imtbase/IObjectCollection.h>
13
14
15namespace imtbase
16{
17
18
24 public icomp::CComponentBase,
25 private imod::CMultiModelDispatcherBase,
26 virtual public iprm::IParamsManager,
27 virtual public iprm::IOptionsList
28{
29public:
30 typedef icomp::CComponentBase BaseClass;
31 typedef imod::CMultiModelDispatcherBase BaseClass2;
32
33 I_BEGIN_COMPONENT(CParamsManagerAdapterComp);
34 I_REGISTER_INTERFACE(iprm::IParamsManager);
35 I_REGISTER_INTERFACE(iprm::IOptionsList);
36 I_REGISTER_INTERFACE(iprm::ISelectionParam);
37 I_ASSIGN(m_collectionCompPtr, "ParamsCollection", "Collection containing parameter sets", false, "ParamsCollection");
38 I_ASSIGN_TO(m_collectionModelCompPtr, m_collectionCompPtr, false);
39 I_ASSIGN_MULTI_0(m_typeIdsAttrPtr, "FilterByTypeIds", "List of type-IDs used for filtering the collection items", false);
40 I_END_COMPONENT;
41
42 // reimplemented (iprm::IParamsManager)
43 virtual int GetIndexOperationFlags(int index = -1) const override;
44 virtual bool SetIndexOperationFlags(int index, int flags) override;
45 virtual int GetParamsSetsCount() const override;
46 virtual const IOptionsList* GetParamsTypeConstraints() const override;
47 virtual int InsertParamsSet(int typeIndex = -1, int index = -1) override;
48 virtual bool RemoveParamsSet(int index) override;
49 virtual bool SwapParamsSet(int index1, int index2) override;
50 virtual iprm::IParamsSet* GetParamsSet(int index) const override;
51 virtual iprm::IParamsSetUniquePtr CreateParameterSet(int typeIndex = -1, int index = -1) const override;
52 virtual QString GetParamsSetName(int index) const override;
53 virtual bool SetParamsSetName(int index, const QString& name) override;
54 virtual QString GetParamsSetDescription(int index) const override;
55 virtual void SetParamsSetDescription(int index, const QString& description) override;
56
57 // reimplemented (iprm::ISelectionParam)
58 virtual const iprm::IOptionsList* GetSelectionConstraints() const override;
59 virtual int GetSelectedOptionIndex() const override;
60 virtual bool SetSelectedOptionIndex(int index) override;
61 virtual ISelectionParam* GetSubselection(int index) const override;
62
63 // reimplemented (iprm::IOptionsList)
64 virtual int GetOptionsFlags() const override;
65 virtual int GetOptionsCount() const override;
66 virtual QString GetOptionName(int index) const override;
67 virtual QString GetOptionDescription(int index) const override;
68 virtual QByteArray GetOptionId(int index) const override;
69 virtual bool IsOptionEnabled(int index) const override;
70
71 // reimplemented (iser::ISerializable)
72 virtual bool Serialize(iser::IArchive& archive) override;
73
74protected:
75 // reimplemented (imod::CMultiModelDispatcherBase)
76 virtual void OnModelChanged(int modelId, const istd::IChangeable::ChangeSet & changeSet) override;
77
78 // reimplemented (icomp::CComponentBase)
79 virtual void OnComponentCreated() override;
80 virtual void OnComponentDestroyed() override;
81
82private:
83 void UpdateList();
84 QByteArray FindOptionFromIndex(int index) const;
85
86private:
87 I_REF(IObjectCollection, m_collectionCompPtr);
88 I_REF(imod::IModel, m_collectionModelCompPtr);
89 I_MULTIATTR(QByteArray, m_typeIdsAttrPtr);
90
91 iprm::COptionsManager m_options;
92 QByteArray m_selectedId;
93
94 typedef QMap<QByteArray, imtbase::IObjectCollection::DataPtr> ObjectMap;
95 mutable ObjectMap m_objectCache;
96};
97
98
99} // namespace imtbase
100
101