ImagingTools Core SDK
IHierarchicalStructureInfo.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/QSharedPointer>
7
8// ACF includes
9#include <idoc/IDocumentMetaInfo.h>
10
11
12namespace iprm
13{
14 class IParamsSet;
15}
16
17
18namespace imtbase
19{
20
21class IHierarchicalStructureIterator;
22
23
24class IHierarchicalStructureInfo: virtual public istd::IChangeable
25{
26public:
27 typedef QByteArray Id;
28 typedef QByteArrayList Ids;
29
30 struct NotifierInfo1
31 {
32 Id id;
33 };
34
35 struct NotifierInfo2
36 {
37 Id id;
38 Id parentNodeId;
39 };
40
41 struct NotifierInfo3
42 {
43 Id id;
44 Id sourceNodeId;
45 Id targetNodeId;
46 };
47
48 typedef NotifierInfo2 NodeInsertInfo;
49 typedef NotifierInfo1 NodeUpdateInfo;
50 typedef NotifierInfo2 NodeMoveInfo;
51 typedef NotifierInfo1 NodeRemoveInfo;
52 typedef NotifierInfo2 LeafInsertInfo;
53 typedef NotifierInfo3 LeafMoveInfo;
54 typedef NotifierInfo2 LeafRemoveInfo;
55
56 static const QByteArray CN_ALL_CHANGED;
57 static const QByteArray CN_NODE_INSERTED;
58 static const QByteArray CN_NODE_UPDATED;
59 static const QByteArray CN_NODE_MOVED;
60 static const QByteArray CN_NODE_REMOVED;
61 static const QByteArray CN_LEAF_INSERTED;
62 static const QByteArray CN_LEAF_MOVED;
63 static const QByteArray CN_LEAF_REMOVED;
64
65 enum ItemType
66 {
67 IT_NODE,
68 IT_LEAF
69 };
70
71 struct ItemInfo
72 {
73 ItemType itemType = IT_NODE;
74 Id itemId;
75 Id parentId;
76 QString name;
77 QString description;
78 QSharedPointer<idoc::IDocumentMetaInfo> metaInfo;
79 };
80
81 typedef QList<ItemInfo> ItemInfoList;
82
83 virtual int GetItemCount(const iprm::IParamsSet* selectionParamsPtr = nullptr) const = 0;
84 virtual Ids GetItemIds(
85 int offset = 0,
86 int count = -1,
87 const iprm::IParamsSet* selectionParamsPtr = nullptr) const = 0;
88
89 virtual ItemInfoList GetItemInfos(const Ids& itemIds) = 0;
90 virtual Ids GetItemPath(const Id& itemId) const = 0;
91
98 virtual imtbase::IHierarchicalStructureIterator* CreateHierarchicalStructureIterator(
99 int offset = 0,
100 int count = -1,
101 const iprm::IParamsSet* selectionParamsPtr = nullptr) const = 0;
102};
103
104
105} // namespace imtbase
106
107Q_DECLARE_METATYPE(imtbase::IHierarchicalStructureInfo::NotifierInfo2);
108Q_DECLARE_METATYPE(imtbase::IHierarchicalStructureInfo::ItemInfoList);
109
110