6#include <QtCore/QVector>
10#include <istd/TOptInterfacePtr.h>
11#include <iser/IObject.h>
12#include <imod/TModelWrap.h>
13#include <imod/CModelUpdateBridge.h>
14#include <ilog/TLoggerCompWrap.h>
15#include <iprm/COptionsManager.h>
18#include <imtbase/TModelUpdateBinder.h>
21#include <imthype/ITaskCollection.h>
33 public ilog::CLoggerComponentBase,
35 virtual public iser::ISerializable
38 typedef icomp::CComponentBase BaseClass;
42 I_REGISTER_INTERFACE(iser::ISerializable);
43 I_REGISTER_INTERFACE(IObjectCollection);
44 I_REGISTER_INTERFACE(IObjectCollectionInfo);
45 I_REGISTER_INTERFACE(ICollectionInfo);
46 I_ASSIGN_MULTI_0(m_fixedTasksCompPtr,
"FixedTasks",
"List of static defined tasks",
false);
47 I_ASSIGN_MULTI_0(m_fixedTaskIdsAttrPtr,
"FixedTaskIds",
"List of IDs for corresponding fixed task",
false);
48 I_ASSIGN_MULTI_0(m_fixedTaskTypeIdsAttrPtr,
"FixedTaskTypeIds",
"List of type IDs for corresponding fixed task",
false);
49 I_ASSIGN_MULTI_0(m_fixedTaskTypeNamesAttrPtr,
"FixedTaskTypeNames",
"List of names for corresponding fixed task",
false);
50 I_ASSIGN_MULTI_0(m_fixedTaskUserIdsAttrPtr,
"FixedTaskUserIds",
"List of user ids for corresponding fixed task",
false);
51 I_ASSIGN(m_taskInputsCompPtr,
"TaskInputs",
"Container of task inputs related to the task collection",
false,
"TaskInputs");
52 I_ASSIGN_TO(m_taskInputsModelCompPtr, m_taskInputsCompPtr,
false);
53 I_ASSIGN(m_allowAddTasksAttrPtr,
"AllowAdd",
"If enabled the new tasks can be added to the manager",
true,
true);
58 virtual QString GetTaskTypeName(
const QByteArray& taskTypeId)
const = 0;
61 virtual QByteArray GetUserTaskId(
const QByteArray& taskUuid)
const override;
62 virtual bool SetUserTaskId(
const QByteArray& taskUuid,
const QByteArray& userTaskId)
override;
63 virtual QByteArray GetTaskInputId(
const QByteArray& taskUuid)
const override;
64 virtual bool SetTaskInputId(
const QByteArray& taskUuid,
const QByteArray& inputId)
override;
65 virtual const iinsp::ISupplier* GetTask(
const QByteArray& taskId)
const override;
72 virtual int GetOperationFlags(
const QByteArray& objectId = QByteArray())
const override;
73 virtual idoc::MetaInfoPtr GetDataMetaInfo(
const Id& objectId)
const override;
74 virtual Id InsertNewObject(
75 const QByteArray& typeId,
77 const QString& description,
78 const istd::IChangeable* defaultValuePtr =
nullptr,
79 const Id& proposedElementId = Id(),
80 const idoc::IDocumentMetaInfo* dataMetaInfoPtr =
nullptr,
81 const idoc::IDocumentMetaInfo* elementMetaInfoPtr =
nullptr,
83 virtual bool RemoveElements(
86 virtual bool RemoveElementSet(
87 const iprm::IParamsSet* selectionParamsPtr =
nullptr,
89 virtual bool RestoreObjects(
92 virtual bool RestoreObjectSet(
93 const iprm::IParamsSet* selectionParamsPtr =
nullptr,
95 virtual const istd::IChangeable* GetObjectPtr(
const QByteArray& objectId)
const override;
96 virtual bool GetObjectData(
97 const QByteArray& objectId,
99 const iprm::IParamsSet* dataConfigurationPtr =
nullptr)
const override;
100 virtual bool SetObjectData(
101 const QByteArray& objectId,
102 const istd::IChangeable&
object,
103 CompatibilityMode mode = CM_WITHOUT_REFS,
105 virtual imtbase::IObjectCollectionUniquePtr CreateSubCollection(
108 const iprm::IParamsSet* selectionParamsPtr =
nullptr)
const override;
110 const QByteArray& objectId = QByteArray(),
113 const iprm::IParamsSet* selectionParamsPtr =
nullptr)
const override;
114 virtual void ResetObjectIds()
override;
117 virtual Id GetObjectTypeId(
const QByteArray& objectId)
const override;
120 virtual int GetElementsCount(
121 const iprm::IParamsSet* selectionParamPtr =
nullptr,
122 ilog::IMessageConsumer* logPtr =
nullptr)
const override;
123 virtual Ids GetElementIds(
126 const iprm::IParamsSet* selectionParamsPtr =
nullptr,
127 ilog::IMessageConsumer* logPtr =
nullptr)
const override;
128 virtual bool GetSubsetInfo(
132 const iprm::IParamsSet* selectionParamsPtr =
nullptr,
133 ilog::IMessageConsumer* logPtr =
nullptr)
const override;
134 virtual QVariant GetElementInfo(
const QByteArray& elementId,
int infoType, ilog::IMessageConsumer* logPtr =
nullptr)
const override;
135 virtual idoc::MetaInfoPtr GetElementMetaInfo(
const Id& elementId, ilog::IMessageConsumer* logPtr =
nullptr)
const override;
136 virtual bool SetElementName(
const Id& elementId,
const QString& name, ilog::IMessageConsumer* logPtr =
nullptr)
override;
137 virtual bool SetElementDescription(
const Id& elementId,
const QString& description, ilog::IMessageConsumer* logPtr =
nullptr)
override;
138 virtual bool SetElementEnabled(
const Id& elementId,
bool isEnabled =
true, ilog::IMessageConsumer* logPtr =
nullptr)
override;
140 virtual int GetSupportedOperations()
const override;
141 virtual bool CopyFrom(
const IChangeable&
object, CompatibilityMode mode = CM_WITHOUT_REFS)
override;
144 virtual bool Serialize(iser::IArchive& archive);
147 virtual iinsp::ISupplierUniquePtr CreateTaskInstance(
const QByteArray& taskTypeId)
const = 0;
148 virtual void OnTaskCreated(iinsp::ISupplier& task);
149 virtual void OnTaskRemoved(
const QByteArray& taskId);
161 virtual void OnComponentCreated()
override;
162 virtual void OnComponentDestroyed()
override;
165 typedef istd::TOptInterfacePtr<iinsp::ISupplier> OptionalTaskPtr;
173 uuid = QUuid::createUuid().toByteArray();
179 OptionalTaskPtr taskPtr;
184 QByteArray userDefinedTaskId;
188 typedef QVector<Task> TaskList;
192 typedef QMap<QByteArray, TaskList::Iterator> TaskIdMap;
195 void OnTaskInputsUpdated(
const istd::IChangeable::ChangeSet& changeSet,
const imtbase::IObjectCollection* objectCollectionPtr);
198 I_MULTIREF(iinsp::ISupplier, m_fixedTasksCompPtr);
199 I_MULTIATTR(QByteArray, m_fixedTaskIdsAttrPtr);
200 I_MULTIATTR(QByteArray, m_fixedTaskTypeIdsAttrPtr);
201 I_MULTITEXTATTR(m_fixedTaskTypeNamesAttrPtr);
202 I_MULTITEXTATTR(m_fixedTaskUserIdsAttrPtr);
204 I_REF(imod::IModel, m_taskInputsModelCompPtr);
205 I_ATTR(
bool, m_allowAddTasksAttrPtr);
207 mutable imod::CModelUpdateBridge m_updateBridge;
virtual QString GenerateUniqueObjectName(const QString &newName, const QString &oldName) const