ImagingTools Core SDK
CRepresentationViewCompBase.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/QMutex>
7#include <QtWidgets/QGraphicsItem>
8
9// ACF includes
10#include <iprm/IIdParam.h>
11#include <iprm/IOptionsList.h>
12#include <imod/TSingleModelObserverBase.h>
13#include <istd/TSmartPtr.h>
14#include <icomp/CComponentBase.h>
15
16// ImtCore includes
17#include <imtloggui/IGraphicsSceneProvider.h>
18#include <imtloggui/IEventScenePositionProvider.h>
19#include <imtloggui/IScenographer.h>
20
21namespace imtloggui
22{
23
24
25class CRepresentationViewCompBase:
26 public QObject,
27 public icomp::CComponentBase,
28 public imod::TSingleModelObserverBase<istd::IChangeable>,
29 virtual public iprm::IIdParam,
30 virtual public IScenographer
31{
32 Q_OBJECT
33public:
34 typedef icomp::CComponentBase BaseClass;
35
36 I_BEGIN_BASE_COMPONENT(CRepresentationViewCompBase)
37 I_REGISTER_INTERFACE(IIdParam);
38 I_REGISTER_INTERFACE(IScenographer);
39 I_ASSIGN(m_graphicsSceneProviderCompPtr, "GraphicsSceneProvider", "Graphics scene provider", true, "GraphicsSceneProvider");
40 I_ASSIGN(m_positionProviderCompPtr, "ScenePositionProvider", "Scene position provider", true, "ScenePositionProvider");
41 I_END_COMPONENT
42
43 CRepresentationViewCompBase();
44
45 // reimplemented (imtloggui::IScenographer)
46 virtual void AddItemsToScene() override;
47 virtual void RemoveItemsFromScene() override;
48
49 // reimplemented (iprm::IIdParam)
50 virtual QByteArray GetId() const override;
51 virtual void SetId(const QByteArray& id) override;
52
53 // reimplemented (iser::ISerializable)
54 virtual bool Serialize(iser::IArchive& archive) override;
55
56public:
57 typedef istd::TSmartPtr<QGraphicsItem> GraphicsItemPtr;
58 typedef QList<GraphicsItemPtr> GraphicsItemList;
59
60protected:
61 void UpdateItemsOnScene(QGraphicsScene* scenePtr);
62 GraphicsItemList GetAddedItems();
63 GraphicsItemList GetRemovedItems();
64
65 // reimplemented (imod::CSingleModelObserverBase)
66 virtual void OnUpdate(const istd::IChangeable::ChangeSet& changeSet) override;
67
68protected:
69 I_REF(IGraphicsSceneProvider, m_graphicsSceneProviderCompPtr);
70 I_REF(IEventScenePositionProvider, m_positionProviderCompPtr);
71
72 QByteArray m_groupId;
73 bool m_isActivated;
74
75 GraphicsItemList m_itemsOnScene;
76 GraphicsItemList m_generatedItems;
77};
78
79
80} // namespace imtloggui
81
82