ImagingTools Core SDK
CSimpleReferenceCollection.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/QVector>
7
8// ImtCore includes
9#include <imtbase/IReferenceCollection.h>
10#include <imtbase/IObjectCollection.h>
11
12
13namespace imtbase
14{
15
16
21{
22public:
24
28 void RegisterSourceCollection(const imtbase::IObjectCollection* sourceCollectionInfoPtr);
29
34
35 // reimplemented (IReferenceCollection)
36 virtual ICollectionObjectLinkPtr GetObjectLink(const Id& objectId, const QByteArray& repositoryId = QByteArray()) const override;
37 virtual bool InsertReference(const Id& objectId, const QByteArray& repositoryId = QByteArray()) override;
38 virtual bool RemoveReference(const Id& objectId) override;
39 virtual bool RemoveAllReferences() override;
40
41 // reimplemented (IObjectCollectionInfo)
42 virtual const iprm::IOptionsList * GetObjectTypesInfo() const override;
43 virtual Id GetObjectTypeId(const QByteArray& objectId) const override;
44 virtual idoc::MetaInfoPtr GetDataMetaInfo(const Id& objectId) const override;
45
46 // reimplemented (imtbase::ICollectionInfo)
47 virtual int GetElementsCount(
48 const iprm::IParamsSet* selectionParamPtr = nullptr,
49 ilog::IMessageConsumer* logPtr = nullptr) const override;
50 virtual Ids GetElementIds(
51 int offset = 0,
52 int count = -1,
53 const iprm::IParamsSet* selectionParamsPtr = nullptr,
54 ilog::IMessageConsumer* logPtr = nullptr) const override;
55 virtual bool GetSubsetInfo(
56 imtbase::ICollectionInfo& subsetInfo,
57 int offset = 0,
58 int count = -1,
59 const iprm::IParamsSet* selectionParamsPtr = nullptr,
60 ilog::IMessageConsumer* logPtr = nullptr) const override;
61 virtual QVariant GetElementInfo(const QByteArray& elementId, int infoType, ilog::IMessageConsumer* logPtr = nullptr) const override;
62 virtual idoc::MetaInfoPtr GetElementMetaInfo(const Id& elementId, ilog::IMessageConsumer* logPtr = nullptr) const override;
63 virtual bool SetElementName(const Id& elementId, const QString& name, ilog::IMessageConsumer* logPtr = nullptr) override;
64 virtual bool SetElementDescription(const Id& elementId, const QString& description, ilog::IMessageConsumer* logPtr = nullptr) override;
65 virtual bool SetElementEnabled(const Id& elementId, bool isEnabled = true, ilog::IMessageConsumer* logPtr = nullptr) override;
66
67 // reimplemented (iser::ISerializable)
68 virtual bool Serialize(iser::IArchive& archive) override;
69
70 // reimplemented (istd::IChangeable)
71 virtual bool CopyFrom(const istd::IChangeable& object, CompatibilityMode mode = CM_WITHOUT_REFS) override;
72 virtual bool IsEqual(const istd::IChangeable& object) const override;
73 virtual istd::IChangeableUniquePtr CloneMe(CompatibilityMode mode = CM_WITHOUT_REFS) const override;
74 virtual bool ResetData(CompatibilityMode mode = CM_WITHOUT_REFS) override;
75
76protected:
77 int FindReference(const QByteArray& id) const;
78
79private:
80 struct Reference
81 {
82 QByteArray id;
83 QString name;
84 QString description;
85 QByteArray typeId;
86 QByteArray repositoryId;
87
88 bool operator ==(const Reference& other) const
89 {
90 return (id == other.id) && (name == other.name) && (description == other.description) && (typeId == other.typeId) && (repositoryId == other.typeId);
91 }
92
93 bool operator !=(const Reference& other) const
94 {
95 return !operator==(other);
96 }
97 };
98 typedef QVector<Reference> References;
99
100 References m_references;
101
102 const imtbase::IObjectCollection* m_sourceCollectionInfoPtr;
103};
104
105
106} // namespace imtbase
107
108
const imtbase::IObjectCollection * GetSourceCollection() const
void RegisterSourceCollection(const imtbase::IObjectCollection *sourceCollectionInfoPtr)