ImagingTools Core SDK
CCollectionInfo.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#include <QtCore/QUuid>
8
9// ACF includes
10#include <iser/IArchive.h>
11#include <iser/ISerializable.h>
12
13// ImtCore includes
14#include <imtbase/ICollectionInfo.h>
15
16
17namespace imtbase
18{
19
20
26 virtual public ICollectionInfo,
27 virtual public iser::ISerializable
28{
29public:
30 int GetItemIndex(const QByteArray& id) const;
31
32 virtual QByteArray InsertItem(const QByteArray& id, const QString& name, const QString& description, int position = -1);
33 virtual void RemoveItem(const QByteArray& id);
34 virtual void SetItemName(const QByteArray& id, const QString& name);
35 virtual void SetItemDescription(const QByteArray& id, const QString& description);
36
37 // reimplemented (ICollectionInfo)
38 virtual int GetElementsCount(
39 const iprm::IParamsSet* selectionParamPtr = nullptr,
40 ilog::IMessageConsumer* logPtr = nullptr) const override;
41 virtual Ids GetElementIds(
42 int offset = 0,
43 int count = -1,
44 const iprm::IParamsSet* selectionParamsPtr = nullptr,
45 ilog::IMessageConsumer* logPtr = nullptr) const override;
46 virtual bool GetSubsetInfo(
47 imtbase::ICollectionInfo& subsetInfo,
48 int offset = 0,
49 int count = -1,
50 const iprm::IParamsSet* selectionParamsPtr = nullptr,
51 ilog::IMessageConsumer* logPtr = nullptr) const override;
52 virtual QVariant GetElementInfo(const QByteArray& elementId, int infoType, ilog::IMessageConsumer* logPtr = nullptr) const override;
53 virtual idoc::MetaInfoPtr GetElementMetaInfo(const Id& elementId, ilog::IMessageConsumer* logPtr = nullptr) const override;
54 virtual bool SetElementName(const Id& elementId, const QString& name, ilog::IMessageConsumer* logPtr = nullptr) override;
55 virtual bool SetElementDescription(const Id& elementId, const QString& description, ilog::IMessageConsumer* logPtr = nullptr) override;
56 virtual bool SetElementEnabled(const Id& elementId, bool isEnabled = true, ilog::IMessageConsumer* logPtr = nullptr) override;
57
58 // reimplemented (istd::IChangeable)
59 virtual int GetSupportedOperations() const override;
60 virtual bool CopyFrom(const IChangeable& object, CompatibilityMode mode = CM_WITHOUT_REFS) override;
61 virtual bool IsEqual(const IChangeable& object) const override;
62 virtual istd::IChangeableUniquePtr CloneMe(CompatibilityMode mode = CM_WITHOUT_REFS) const override;
63 virtual bool ResetData(CompatibilityMode mode = CM_WITHOUT_REFS) override;
64
65 // reimplemented (iser::ISerializable)
66 virtual bool Serialize(iser::IArchive& archive) override;
67
68protected:
69 struct Item
70 {
71 Item(const QByteArray& id = QByteArray())
72 :isEnabled(true)
73 {
74 if (id.isEmpty()){
75 this->id = QUuid::createUuid().toByteArray();
76 }
77 else{
78 this->id = id;
79 }
80 }
81
82 Item(const Item& object)
83 {
84 this->id = object.id;
85 this->name = object.name;
86 this->isEnabled = object.isEnabled;
87 this->description = object.description;
88 }
89
90 bool isEnabled;
91 QString name;
92 QString description;
93 QByteArray id;
94
95 bool operator==(const Item &item) const
96 {
97 return ((isEnabled == item.isEnabled)
98 && (name == item.name)
99 && (description == item.description)
100 && (id == item.id));
101 }
102
103 bool operator!=(const Item &item) const
104 {
105 return !(operator==(item));
106 }
107 };
108
109 typedef QVector<Item> Items;
110
111protected:
112 Item* FindItemById(const Id& elementId) const;
113
114protected:
115 Items m_items;
116};
117
118
119} // namespace imtbase
120
121