ImagingTools Core SDK
CCollectionDataControllerComp.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 <ilog/TLoggerCompWrap.h>
7#include <iprm/IOptionsList.h>
8#include <ifile/IFilePersistence.h>
9
10// ImtCore includes
11#include <imtbase/IObjectCollection.h>
12#include <imtbase/ICollectionDataController.h>
13
14
15namespace imtbase
16{
17
18
19class CCollectionDataControllerComp:
20 public ilog::CLoggerComponentBase,
22{
23public:
24 typedef ilog::CLoggerComponentBase BaseClass;
25
26 I_BEGIN_COMPONENT(CCollectionDataControllerComp)
27 I_REGISTER_INTERFACE(ICollectionDataController);
28 I_ASSIGN(m_resourceTypesCompPtr, "ResourceTypes", "List of supported resource types", false, "ResourceTypes");
29 I_ASSIGN_MULTI_0(m_objectPersistenceListCompPtr, "ObjectPersistenceList", "List of persistence components used for data object loading", false);
30 I_ASSIGN_MULTI_0(m_resourceFileTypesCompPtr, "FileTypeInfos", "List of file type infos for corresponding resource type", false);
31 I_ASSIGN_MULTI_0(m_objectFactoryListCompPtr, "ObjectFactoryList", "List of object factories for corresponding resource type", false);
32 I_END_COMPONENT;
33
34public:
35 // reimplemented (ICollectionDataController)
36 virtual const ifile::IFilePersistence* GetPersistenceForObjectType(const QByteArray& typeId) const override;
37 virtual bool ExportFile(
38 const imtbase::IObjectCollection& collection,
39 const QByteArray& objectId,
40 const QString& targetFilePath = QString()) const override;
41 virtual imtbase::ICollectionInfo::Id ImportFile(
43 const QByteArray& typeId,
44 const QString& sourceFilePath = QString(),
45 const QString& objectName = QString()) const override;
46
47protected:
48 virtual istd::IChangeableUniquePtr CreateObjectInstance(const QByteArray& typeId) const;
49
50protected:
54 I_REF(iprm::IOptionsList, m_resourceTypesCompPtr);
55
59 I_MULTIREF(ifile::IFilePersistence, m_objectPersistenceListCompPtr);
60
64 I_MULTIFACT(istd::IChangeable, m_objectFactoryListCompPtr);
65
69 I_MULTIREF(ifile::IFileTypeInfo, m_resourceFileTypesCompPtr);
70};
71
72
73} // namespace imtbase
74
75