ImagingTools Core SDK
CPluginBasedTaskCollectionComp.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/QMap>
7
8// ImtCore includes
9#include <imtbase/PluginInterface.h>
10#include <imtbase/TPluginManagerCompBase.h>
11
12// Acula includes
13#include <imthype/CTaskCollectionCompBase.h>
14#include <imthype/ITaskPlugin.h>
15
16
17IMT_DECLARE_PLUGIN_INTERFACE(Task, imthype::ITaskPlugin);
18
19
20namespace imthype
21{
22
23
24class CPluginBasedTaskCollectionComp:
25 public imtbase::TPluginManagerCompBase<
26 imthype::ITaskPlugin,
27 IMT_CREATE_PLUGIN_FUNCTION(Task),
28 IMT_DESTROY_PLUGIN_FUNCTION(Task),
29 CTaskCollectionCompBase>,
30 virtual public imthype::ITaskCollection
31{
32 using CTaskCollectionCompBase::SendCriticalMessage;
33public:
34 typedef imtbase::TPluginManagerCompBase<
36 IMT_CREATE_PLUGIN_FUNCTION(Task),
37 IMT_DESTROY_PLUGIN_FUNCTION(Task),
38 CTaskCollectionCompBase> BaseClass;
39
40 I_BEGIN_COMPONENT(CPluginBasedTaskCollectionComp);
41 I_REGISTER_INTERFACE(imthype::ITaskCollection);
42 I_END_COMPONENT;
43
44 CPluginBasedTaskCollectionComp();
45
46 // reimplemented (CTaskCollectionCompBase)
47 virtual QString GetTaskTypeName(const QByteArray& taskTypeId) const override;
48
49 // reimplemented (IObjectCollectionInfo)
50 virtual const iprm::IOptionsList* GetObjectTypesInfo() const override;
51
52protected:
53 // reimplemented (CTaskCollectionCompBase)
54 virtual iinsp::ISupplierUniquePtr CreateTaskInstance(const QByteArray& taskTypeId) const override;
55
56 // reimplemented (TPluginManagerCompBase)
57 virtual void OnPluginsCreated();
58
59private:
60 typedef QMap<QByteArray, imthype::ITaskPlugin*> PluginsMap;
61 PluginsMap m_pluginsMap;
62
63 imod::TModelWrap<iprm::COptionsManager> m_taskFactories;
64};
65
66
67} // namespace imthype
68
69