#ifndef QT_GRAPH_VIEW_H #define QT_GRAPH_VIEW_H #include "qt/utility/QtThreadedFunctor.h" #include "utility/math/Vector4.h" #include "utility/types.h" #include "component/view/GraphView.h" struct DummyEdge; struct DummyNode; class QGraphicsView; class QtGraphEdge; class QtGraphNode; class QtGraphView: public GraphView { public: QtGraphView(ViewLayout* viewLayout); virtual ~QtGraphView(); // View implementation virtual void createWidgetWrapper(); virtual void initView(); virtual void refreshView(); virtual void rebuildGraph(const std::vector& nodes, const std::vector& edges); virtual void clear(); private: QGraphicsView* getView(); void doRebuildGraph(const std::vector& nodes, const std::vector& edges); void doClear(); std::shared_ptr findOrCreateNode(QGraphicsView* view, const DummyNode& node); std::shared_ptr findNode(const Id id); std::shared_ptr findSubNode(const std::shared_ptr node, const Id id); std::shared_ptr createNode(QGraphicsView* view, const DummyNode& node); std::shared_ptr createSubNode(QGraphicsView* view, const DummyNode& node); std::shared_ptr createEdge(QGraphicsView* view, const DummyEdge& edge); QtThreadedFunctor&, const std::vector&> m_rebuildGraph; QtThreadedFunctor m_clear; std::vector m_edgeColors; }; #endif // QT_GRAPH_VIEW_H