ImagingTools Core SDK
CParameterLinkControllerComp.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/QMap>
7
8// ACF includes
9#include <icomp/CComponentBase.h>
10#include <imod/TSingleModelObserverBase.h>
11#include <iprm/IParamsManager.h>
12
13
14namespace imtbase
15{
16
17
18class CParameterLinkControllerComp:
19 public icomp::CComponentBase,
20 public imod::TSingleModelObserverBase<iprm::IParamsManager>
21{
22public:
23 typedef icomp::CComponentBase BaseClass;
24 typedef imod::TSingleModelObserverBase<iprm::IParamsManager> BaseClass2;
25
26 I_BEGIN_COMPONENT(CParameterLinkControllerComp);
27 I_ASSIGN(m_selectionParamIdAttrPtr, "ReferenceParamId", "ID of the reference parameter in the parameter set", true, "Index");
28 I_ASSIGN(m_paramsManagerCompPtr, "SlaveManager", "Slave parameter set manager containing the references from the observer data model", false, "SlaveManager");
29 I_END_COMPONENT;
30
31protected:
32 // reimplemented (imod::IObserver)
33 virtual void BeforeUpdate(imod::IModel* modelPtr) override;
34
35 // reimplemented (imod::CSingleModelObserverBase)
36 virtual void OnUpdate(const istd::IChangeable::ChangeSet& changeSet) override;
37
38private:
39 const iprm::ISelectionParam* FindReferenceSelection(int paramSetIndex) const;
40
41private:
42 I_ATTR(QByteArray, m_selectionParamIdAttrPtr);
43 I_REF(iprm::IParamsManager, m_paramsManagerCompPtr);
44
45 QMap<QByteArray /*ID of the target parameter set*/, QByteArray /*Reference-ID*/> m_referenceMap;
46};
47
48
49} // namespace imtbase
50
51