ImagingTools Core SDK
CObjectCollectionBasedPersistenceComp.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// ACF includes
6#include <ifile/IFilePersistence.h>
7#include <ilog/TLoggerCompWrap.h>
8
9// ImtCore includes
10#include <imtbase/IObjectCollection.h>
11#include <imtbase/IStructuredObjectCollectionController.h>
12
13
14namespace imtbase
15{
16
17
18class CObjectCollectionBasedPersistenceComp:
19 public ilog::CLoggerComponentBase,
20 virtual public ifile::IFilePersistence
21{
22public:
23 typedef ilog::CLoggerComponentBase BaseClass;
24
25 I_BEGIN_COMPONENT(CObjectCollectionBasedPersistenceComp);
26 I_REGISTER_INTERFACE(ifile::IFilePersistence);
27 I_REGISTER_INTERFACE(ifile::IFileTypeInfo);
28 I_ASSIGN(m_objectTypeIdAttrPtr, "ObjectTypeId", "Object type ID", true, "ObjectTypeId");
29 I_ASSIGN(m_commonDescriptionAttrPtr, "CommonDescription", "Common description", true, "CommonDescription");
30 I_ASSIGN_MULTI_0(m_extensionAttrPtr, "FileExtension", "File extensions supported by this persistence", false);
31 I_ASSIGN_MULTI_0(m_extensionDescAttrPtr, "FileExtensionDescription", "Descriptions for supported extensions", false);
32 I_ASSIGN(m_collectionCompPtr, "ObjectCollection", "Object collection", false, "ObjectCollection");
33 //I_ASSIGN(m_collectionStructureCompPtr, "ObjectCollectionStructure", "Object collection structure", false, "ObjectCollectionStructure");
34 I_ASSIGN(m_collectionInserterCompPtr, "StructuredObjectCollectionInserter", "Structured object collection inserter", false, "StructuredObjectCollectionInserter");
35 I_ASSIGN(m_fileTypeInfoCompPtr, "SourceFileTypeInfo", "FileTypeInfo used as source", false, "FileTypeInfo");
36 I_END_COMPONENT;
37
38 // reimplemented (ifile::IFilePersistence)
39 virtual bool IsOperationSupported(
40 const istd::IChangeable* dataObjectPtr,
41 const QString* filePathPtr = nullptr,
42 int flags = -1,
43 bool beQuiet = true) const override;
44 virtual OperationState LoadFromFile(
45 istd::IChangeable& data,
46 const QString& filePath = QString(),
47 ibase::IProgressManager* progressManagerPtr = nullptr) const override;
48 virtual OperationState SaveToFile(
49 const istd::IChangeable& data,
50 const QString& filePath = QString(),
51 ibase::IProgressManager* progressManagerPtr = nullptr) const override;
52
53 // reimplemented (ifile::IFileTypeInfo)
54 virtual bool GetFileExtensions(QStringList& result, const istd::IChangeable* dataObjectPtr = nullptr, int flags = -1, bool doAppend = false) const override;
55 virtual QString GetTypeDescription(const QString* extensionPtr = nullptr) const override;
56
57private:
58 int GetExtensionCount() const;
59
60private:
61 I_ATTR(QByteArray, m_objectTypeIdAttrPtr);
62 I_TEXTATTR(m_commonDescriptionAttrPtr);
63 I_MULTIATTR(QString, m_extensionAttrPtr);
64 I_MULTITEXTATTR(m_extensionDescAttrPtr);
65 I_REF(imtbase::IObjectCollection, m_collectionCompPtr);
66 //I_REF(imtbase::IObjectCollectionStructure, m_collectionStructureCompPtr);
67 I_REF(imtbase::IStructuredObjectCollectionController, m_collectionInserterCompPtr);
68 I_REF(ifile::IFileTypeInfo, m_fileTypeInfoCompPtr);
69};
70
71
72} // namespace imtbase
73
74