6#include <QtCore/QVector>
10#include <istd/TOptInterfacePtr.h>
11#include <imod/CModelUpdateBridge.h>
14#include <imtbase/IOrderedObjectCollection.h>
56 void SetCollection(IObjectCollectionUniquePtr&& collectionPtr);
57 void SetCollection(
const istd::TOptInterfacePtr<IObjectCollection>& collectionPtr);
60 virtual bool SetItemOrder(
const Id& itemId,
int position)
override;
61 virtual int GetItemOrder(
const Id& itemId)
const override;
62 virtual bool SetItemsOrder(
const Ids& orderedIds)
override;
63 virtual Ids GetOrderedItemIds()
const override;
64 virtual bool ResetItemOrder()
override;
67 virtual IHierarchicalStructure* GetCollectionStructure()
const override;
70 virtual int GetOperationFlags(
const QByteArray& objectId = QByteArray())
const override;
71 virtual Id InsertNewObject(
72 const QByteArray& typeId,
74 const QString& description,
75 const istd::IChangeable* defaultValuePtr =
nullptr,
76 const Id& proposedElementId = Id(),
77 const idoc::IDocumentMetaInfo* dataMetaInfoPtr =
nullptr,
78 const idoc::IDocumentMetaInfo* elementMetaInfoPtr =
nullptr,
80 virtual bool RemoveElements(
const Ids& elementIds,
const IOperationContext* operationContextPtr =
nullptr)
override;
81 virtual bool RemoveElementSet(
82 const iprm::IParamsSet* selectionParamsPtr =
nullptr,
84 virtual bool RestoreObjects(
87 virtual bool RestoreObjectSet(
88 const iprm::IParamsSet* selectionParamsPtr =
nullptr,
90 virtual const istd::IChangeable* GetObjectPtr(
const Id& objectId)
const override;
91 virtual bool GetObjectData(
const Id& objectId, DataPtr& dataPtr,
const iprm::IParamsSet* dataConfigurationPtr =
nullptr)
const override;
92 virtual bool SetObjectData(
94 const istd::IChangeable&
object,
95 CompatibilityMode mode = CM_WITHOUT_REFS,
97 virtual IObjectCollectionUniquePtr CreateSubCollection(
100 const iprm::IParamsSet* selectionParamsPtr =
nullptr)
const override;
102 const QByteArray& objectId = QByteArray(),
105 const iprm::IParamsSet* selectionParamsPtr =
nullptr)
const override;
108 virtual const iprm::IOptionsList* GetObjectTypesInfo()
const override;
109 virtual Id GetObjectTypeId(
const Id& objectId)
const override;
110 virtual idoc::MetaInfoPtr GetDataMetaInfo(
const Id& objectId)
const override;
113 virtual int GetElementsCount(
114 const iprm::IParamsSet* selectionParamPtr =
nullptr,
115 ilog::IMessageConsumer* logPtr =
nullptr)
const override;
116 virtual Ids GetElementIds(
119 const iprm::IParamsSet* selectionParamsPtr =
nullptr,
120 ilog::IMessageConsumer* logPtr =
nullptr)
const override;
121 virtual bool GetSubsetInfo(
125 const iprm::IParamsSet* selectionParamsPtr =
nullptr,
126 ilog::IMessageConsumer* logPtr =
nullptr)
const override;
127 virtual QVariant GetElementInfo(
const Id& elementId,
int infoType, ilog::IMessageConsumer* logPtr =
nullptr)
const override;
128 virtual idoc::MetaInfoPtr GetElementMetaInfo(
const Id& elementId, ilog::IMessageConsumer* logPtr =
nullptr)
const override;
129 virtual bool SetElementName(
const Id& elementId,
const QString& name, ilog::IMessageConsumer* logPtr =
nullptr)
override;
130 virtual bool SetElementDescription(
const Id& elementId,
const QString& description, ilog::IMessageConsumer* logPtr =
nullptr)
override;
131 virtual bool SetElementEnabled(
const Id& elementId,
bool isEnabled =
true, ilog::IMessageConsumer* logPtr =
nullptr)
override;
134 virtual bool Serialize(iser::IArchive& archive)
override;
137 virtual int GetSupportedOperations()
const override;
138 virtual bool CopyFrom(
const IChangeable&
object, CompatibilityMode mode = CM_WITHOUT_REFS)
override;
139 virtual bool IsEqual(
const IChangeable&
object)
const override;
140 virtual istd::IChangeableUniquePtr CloneMe(CompatibilityMode mode = CM_WITHOUT_REFS)
const override;
141 virtual bool ResetData(CompatibilityMode mode = CM_WITHOUT_REFS)
override;
147 Ids GetCollectionElementIds()
const;
153 void SynchronizeOrder()
const;
158 Ids ApplyCustomOrder(
const Ids& ids)
const;
168 void AttachCollectionObserver();
171 istd::TOptInterfacePtr<IObjectCollection> m_collectionPtr;
172 imod::CModelUpdateBridge m_updateBridge;
173 mutable QVector<QByteArray> m_customOrder;
174 mutable bool m_hasCustomOrder;
COrderedObjectCollectionProxy(IObjectCollection *collectionPtr, bool takeOwnership=false)