ImagingTools Core SDK
CCompositeDeviceInstanceBase.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 include
6#include <imod/CModelUpdateBridge.h>
7#include <imod/TModelWrap.h>
8#include <istd/TComposedFactory.h>
9
10// ImtCore includes
11#include <imtbase/ICollectionInfo.h>
12#include <imtdev/IEditableCompositeDeviceInstance.h>
13#include <imtdev/CDeviceInstanceBase.h>
14
15
16namespace imtdev
17{
18
19
103{
104public:
107
115
122
123 // reimplemented (IEditableCompositeDeviceInstance)
124
139 virtual QByteArray AddSubDevice(
140 const QByteArray& deviceTypeId,
141 const QString& name,
142 const QString& description = QString(),
143 const istd::IChangeable* defaultValuePtr = nullptr,
144 const QByteArray& proposedId = QByteArray()) override;
145
154 virtual bool RemoveSubDevice(const QByteArray& id) override;
155
156 // reimplemented (ICompositeDeviceInstance)
157
167
176 virtual QSet<QByteArray> GetSupportedSubDeviceTypeIds() const override;
177
185 virtual const imtbase::ICollectionInfo& GetSubDeviceList() const override;
186
195 virtual const IDeviceInstance* GetSubDeviceInstance(const QByteArray& subDeviceId) const override;
196
197 // reimplemented (istd::IChangeable)
198
207 virtual int GetSupportedOperations() const override;
208
219 virtual bool CopyFrom(const IChangeable& object, CompatibilityMode mode = CM_WITHOUT_REFS) override;
220
229 virtual bool ResetData(CompatibilityMode mode = CM_WITHOUT_REFS) override;
230
231protected:
242 virtual IDeviceInstance* CreateDeviceInstance(const QByteArray& deviceTypeId) const;
243
244private:
252 class SubDeviceCollectionInfo : virtual public imtbase::ICollectionInfo
253 {
254 public:
260 void SetParent(CCompositeDeviceInstanceBase* parentPtr);
261
262 // reimpolemented (imtbase::ICollectionInfo)
263 virtual int GetElementsCount(
264 const iprm::IParamsSet* selectionParamsPtr = nullptr,
265 ilog::IMessageConsumer* logPtr = nullptr) const override;
266 virtual Ids GetElementIds(
267 int offset = 0,
268 int count = -1,
269 const iprm::IParamsSet* selectionParamsPtr = nullptr,
270 ilog::IMessageConsumer* logPtr = nullptr) const override;
271 virtual bool GetSubsetInfo(
272 ICollectionInfo& subsetInfo,
273 int offset = 0,
274 int count = -1,
275 const iprm::IParamsSet* selectionParamsPtr = nullptr,
276 ilog::IMessageConsumer* logPtr = nullptr) const override;
277 virtual QVariant GetElementInfo(
278 const Id& elementId,
279 int infoType,
280 ilog::IMessageConsumer* logPtr = nullptr) const override;
281 virtual idoc::MetaInfoPtr GetElementMetaInfo(
282 const Id& elementId,
283 ilog::IMessageConsumer* logPtr = nullptr) const override;
284 virtual bool SetElementName(
285 const Id& elementId,
286 const QString& name,
287 ilog::IMessageConsumer* logPtr = nullptr) override;
288 virtual bool SetElementDescription(
289 const Id& elementId,
290 const QString& description,
291 ilog::IMessageConsumer* logPtr = nullptr) override;
292 virtual bool SetElementEnabled(
293 const Id& elementId,
294 bool isEnabled = true,
295 ilog::IMessageConsumer* logPtr = nullptr) override;
296
297 private:
299 CCompositeDeviceInstanceBase* m_parentPtr;
300 };
301
302private:
308 void RemoveAllSubDevices();
309
310private:
317 struct SubDeviceItem
318 {
320 QString name;
322 QString description;
324 DeviceInstancePtr instancePtr;
325 };
326
328 QMap<QByteArray, SubDeviceItem> m_subDeviceMap;
330 imod::TModelWrap<SubDeviceCollectionInfo> m_subDeviceCollection;
331};
332
333
334} // namespace imtdev
335
336
Base implementation class for composite device instances.
virtual QByteArray AddSubDevice(const QByteArray &deviceTypeId, const QString &name, const QString &description=QString(), const istd::IChangeable *defaultValuePtr=nullptr, const QByteArray &proposedId=QByteArray()) override
Add new sub-device.
virtual const imtbase::ICollectionInfo & GetSubDeviceList() const override
Get sub-device list.
virtual const IDeviceInstance * GetSubDeviceInstance(const QByteArray &subDeviceId) const override
Get specific sub-device instance.
virtual int GetSupportedOperations() const override
Get supported operations.
virtual bool RemoveSubDevice(const QByteArray &id) override
Remove sub-device.
virtual const ICompositeDeviceSpecification * GetCompositeDeviceSpecification() const override
Get composite device specification.
virtual IDeviceInstance * CreateDeviceInstance(const QByteArray &deviceTypeId) const
Create device instance (factory method)
virtual bool CopyFrom(const IChangeable &object, CompatibilityMode mode=CM_WITHOUT_REFS) override
Copy from another composite device.
CDeviceInstanceBase BaseClass
Base class type alias.
virtual QSet< QByteArray > GetSupportedSubDeviceTypeIds() const override
Get supported sub-device type IDs.
virtual bool ResetData(CompatibilityMode mode=CM_WITHOUT_REFS) override
Reset composite device data.
Base implementation class for device instances.
Interface for composite device static information.
Interface for describing runtime information about a device instance.
Interface for modifying composite device instance information.