ImagingTools Core SDK
ICollectionViewDelegate.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/QString>
8#include <QtCore/QVector>
9#include <QtCore/QVariant>
10#include <QtWidgets/QAbstractItemDelegate>
11#include <QtWidgets/QMenu>
12
13// ACF includes
14#include <ibase/ICommandsProvider.h>
15#include <iqtgui/IVisualStatus.h>
16#include <iqtgui/IGuiObject.h>
17
18// ImtCore includes
19#include <imtbase/IObjectCollection.h>
20#include <imtbase/ICollectionFilter.h>
21
22
23namespace imtgui
24{
25
26
31class ICollectionViewDelegate: virtual public ibase::ICommandsProvider
32{
33public:
35 {
40
45
50 };
51
52 enum CommandIdentifier
53 {
54 CI_USER = 1000
55 };
56
57 enum DataRole
58 {
59 DR_TYPE_ID = Qt::UserRole,
60 DR_OBJECT_ID,
61 DR_SORT_VALUE
62 };
63
68 {
70 :objectPtr(nullptr)
71 {
72 }
73
74 istd::IChangeableSharedPtr objectPtr;
75 QByteArray uuid;
76 QString name;
77 QString description;
78 QByteArray typeId;
79 QString typeName;
80 };
81
82 struct HeaderInfo
83 {
84 enum InformationFlags
85 {
86 IF_NONE = 0,
87 IF_FILTERABLE = 1,
88 IF_SORTABLE = 2,
89 IF_SORT_BY_DEFAULT = 4
90 };
91
92 HeaderInfo(bool setIsFixed = false, int headerFlags = IF_SORTABLE, Qt::SortOrder setDefaultSortOrder = Qt::AscendingOrder, quint16 setMinWidth = 0, quint16 setMaxWidth = 0xFFFF)
93 : isFixed(setIsFixed),
94 flags(headerFlags),
95 defaultSortOrder(setDefaultSortOrder),
96 minWidth(setMinWidth),
97 maxWidth(setMaxWidth)
98 {
99 }
100
101 int flags;
102 bool isFixed;
103 Qt::SortOrder defaultSortOrder;
104 quint16 minWidth;
105 quint16 maxWidth;
106 };
107
108 struct SummaryInformation
109 {
110 QByteArray infoId;
111 QString text;
112 QIcon icon;
113 QVariant sortValue;
114 };
115
119 virtual bool InitializeDelegate(
120 imtbase::IObjectCollection* collectionPtr,
121 iqtgui::IGuiObject* parentGuiPtr,
122 const iprm::IParamsSet* filterParamsPtr) = 0;
123
127 virtual const iqtgui::IVisualStatus& GetDocumentTypeStatus() const = 0;
128
133 virtual QByteArray GetSupportedTypeId() const = 0;
134
138 virtual QAbstractItemDelegate* GetColumnItemDelegate(const QByteArray& columnId) const = 0;
139
143 virtual void OnColumnItemDelegateEditFinished(const QByteArray& objectId, const QByteArray& columnId, const QVariant& newValue) const = 0;
144
148 virtual bool IsEditorEnabled(const QByteArray& columnId) const = 0;
149
153 virtual void UpdateItemSelection(const imtbase::ICollectionInfo::Ids& selectedItems, const QByteArray& selectedTypeId) = 0;
154
158 virtual QByteArray CreateNewObject(
159 const QByteArray& typeId,
160 const QString& objectName,
161 const QString& description,
162 const istd::IChangeable* defaultDataPtr = nullptr) const = 0;
163
167 virtual QByteArray ImportObject(const QByteArray& typeId, const QString& sourcePath = QString()) const = 0;
168
172 virtual bool ExportObject(const QByteArray& objectId, const QString& targetPath = QString()) const = 0;
173
177 virtual void RemoveObjects(const imtbase::ICollectionInfo::Ids& objectIds) const = 0;
178
182 virtual bool UpdateObject(const QByteArray& objectId, const istd::IChangeable& contents) const = 0;
183
188 virtual QString RenameObject(const QByteArray& objectId, const QString& newName) const = 0;
189
195
199 typedef QVector<ICollectionViewDelegate::SummaryInformation> ObjectMetaInfo;
200
201 virtual bool GetSummaryInformation(
202 const QByteArray& objectId,
203 const QVector<QByteArray>& fieldIds,
204 ObjectMetaInfo& objectMetaInfo) const = 0;
205
209 virtual HeaderInfo GetSummaryInformationHeaderInfo(const QByteArray& informationId) const = 0;
210
214 virtual bool OpenDocumentEditor(const QByteArray& objectId, const QByteArray& viewTypeId = QByteArray()) const = 0;
215
221 virtual iqtgui::IGuiObject* GetInformationView() const = 0;
222
226 virtual bool IsCommandSupported(int commandId) const = 0;
227
231 virtual void SetupContextMenu(QMenu& menu) const = 0;
232};
233
234
235} // namespace imtgui
236
237
virtual QByteArray GetSupportedTypeId() const =0
virtual bool ExportObject(const QByteArray &objectId, const QString &targetPath=QString()) const =0
virtual bool InitializeDelegate(imtbase::IObjectCollection *collectionPtr, iqtgui::IGuiObject *parentGuiPtr, const iprm::IParamsSet *filterParamsPtr)=0
virtual bool UpdateObject(const QByteArray &objectId, const istd::IChangeable &contents) const =0
virtual const iqtgui::IVisualStatus & GetDocumentTypeStatus() const =0
virtual void UpdateItemSelection(const imtbase::ICollectionInfo::Ids &selectedItems, const QByteArray &selectedTypeId)=0
virtual bool OpenDocumentEditor(const QByteArray &objectId, const QByteArray &viewTypeId=QByteArray()) const =0
virtual QString RenameObject(const QByteArray &objectId, const QString &newName) const =0
virtual QByteArray ImportObject(const QByteArray &typeId, const QString &sourcePath=QString()) const =0
virtual void RemoveObjects(const imtbase::ICollectionInfo::Ids &objectIds) const =0
virtual bool IsCommandSupported(int commandId) const =0
virtual bool IsEditorEnabled(const QByteArray &columnId) const =0
virtual iqtgui::IGuiObject * GetInformationView() const =0
virtual const imtbase::ICollectionInfo & GetSummaryInformationTypes() const =0
virtual QAbstractItemDelegate * GetColumnItemDelegate(const QByteArray &columnId) const =0
QVector< ICollectionViewDelegate::SummaryInformation > ObjectMetaInfo
virtual void OnColumnItemDelegateEditFinished(const QByteArray &objectId, const QByteArray &columnId, const QVariant &newValue) const =0
virtual QByteArray CreateNewObject(const QByteArray &typeId, const QString &objectName, const QString &description, const istd::IChangeable *defaultDataPtr=nullptr) const =0
virtual void SetupContextMenu(QMenu &menu) const =0
virtual HeaderInfo GetSummaryInformationHeaderInfo(const QByteArray &informationId) const =0