ImagingTools Core SDK
ICollectionInfo.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/QByteArray>
7#include <QtCore/QVector>
8#include <QtCore/QVariant>
9
10// ACF includes
11#include <ilog/IMessageConsumer.h>
12#include <idoc/IDocumentMetaInfo.h>
13#include <iprm/IParamsSet.h>
14#include <istd/IChangeable.h>
15#include <istd/TSmartPtr.h>
16
17
18namespace imtbase
19{
20
21
26class ICollectionInfo: virtual public istd::IChangeable
27{
28public:
29 typedef QByteArray Id;
30 typedef QVector<Id> Ids;
31
32 struct NotifierInfo
33 {
34 QByteArray elementId;
35 };
36
37 struct MultiElementNotifierInfo
38 {
39 imtbase::ICollectionInfo::Ids elementIds;
40 };
41
42 static const QByteArray CN_ALL_CHANGED;
43
44 static const QByteArray CN_ELEMENT_INSERTED;
45 typedef NotifierInfo ElementInsertInfo;
46
47 static const QByteArray CN_ELEMENT_RENAMED;
48 typedef NotifierInfo ElementRenamedInfo;
49
50 static const QByteArray CN_ELEMENT_DESCRIPTION_CHANGED;
51 typedef NotifierInfo ElementDescriptionChangedInfo;
52
53 static const QByteArray CN_ELEMENT_STATE;
54 typedef NotifierInfo ElementStateChangeInfo;
55
56 static const QByteArray CN_ELEMENTS_REMOVED;
57 typedef MultiElementNotifierInfo ElementsRemoveInfo;
58
59 static const QByteArray CN_ELEMENTS_RESTORED;
60 typedef MultiElementNotifierInfo ElementsRestoreInfo;
61
66 {
70 CF_ADDED = 10000,
71
76
81
86
91
96
97 CF_LAST
98 };
99
104 {
109
114
119
123 EIT_USER = 1000
124 };
125
130 {
134 MIT_INSERTION_USER = idoc::IDocumentMetaInfo::MIT_USER + 10000,
135
140
145
150
155
159 MIT_REVISION = idoc::IDocumentMetaInfo::MIT_USER + 20000
160 };
161
162
166 virtual int GetElementsCount(
167 const iprm::IParamsSet* selectionParamsPtr = nullptr,
168 ilog::IMessageConsumer* logPtr = nullptr) const = 0;
169
177 virtual Ids GetElementIds(
178 int offset = 0,
179 int count = -1,
180 const iprm::IParamsSet* selectionParamsPtr = nullptr,
181 ilog::IMessageConsumer* logPtr = nullptr) const = 0;
190 virtual bool GetSubsetInfo(
191 ICollectionInfo& subsetInfo,
192 int offset = 0,
193 int count = -1,
194 const iprm::IParamsSet* selectionParamsPtr = nullptr,
195 ilog::IMessageConsumer* logPtr = nullptr) const = 0;
196
200 virtual QVariant GetElementInfo(const Id& elementId, int infoType, ilog::IMessageConsumer* logPtr = nullptr) const = 0;
201
208 virtual idoc::MetaInfoPtr GetElementMetaInfo(const Id& elementId, ilog::IMessageConsumer* logPtr = nullptr) const = 0;
209
213 virtual bool SetElementName(const Id& elementId, const QString& name, ilog::IMessageConsumer* logPtr = nullptr) = 0;
214
218 virtual bool SetElementDescription(const Id& elementId, const QString& description, ilog::IMessageConsumer* logPtr = nullptr) = 0;
219
223 virtual bool SetElementEnabled(const Id& elementId, bool isEnabled = true, ilog::IMessageConsumer* logPtr = nullptr) = 0;
224};
225
226
227} // namespace imtbase
228
229
230Q_DECLARE_METATYPE(imtbase::ICollectionInfo::NotifierInfo);
231Q_DECLARE_METATYPE(imtbase::ICollectionInfo::MultiElementNotifierInfo);
232
233
virtual bool GetSubsetInfo(ICollectionInfo &subsetInfo, int offset=0, int count=-1, const iprm::IParamsSet *selectionParamsPtr=nullptr, ilog::IMessageConsumer *logPtr=nullptr) const =0
virtual bool SetElementName(const Id &elementId, const QString &name, ilog::IMessageConsumer *logPtr=nullptr)=0
virtual int GetElementsCount(const iprm::IParamsSet *selectionParamsPtr=nullptr, ilog::IMessageConsumer *logPtr=nullptr) const =0
virtual QVariant GetElementInfo(const Id &elementId, int infoType, ilog::IMessageConsumer *logPtr=nullptr) const =0
virtual Ids GetElementIds(int offset=0, int count=-1, const iprm::IParamsSet *selectionParamsPtr=nullptr, ilog::IMessageConsumer *logPtr=nullptr) const =0
virtual bool SetElementEnabled(const Id &elementId, bool isEnabled=true, ilog::IMessageConsumer *logPtr=nullptr)=0
virtual idoc::MetaInfoPtr GetElementMetaInfo(const Id &elementId, ilog::IMessageConsumer *logPtr=nullptr) const =0
virtual bool SetElementDescription(const Id &elementId, const QString &description, ilog::IMessageConsumer *logPtr=nullptr)=0