KD Chart API Documentation  3.1
kdganttgraphicsitem.h
Go to the documentation of this file.
1 /****************************************************************************
2 **
3 ** This file is part of the KD Chart library.
4 **
5 ** SPDX-FileCopyrightText: 2001 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
6 **
7 ** SPDX-License-Identifier: MIT
8 **
9 ****************************************************************************/
10 
11 #ifndef KDGANTTGRAPHICSITEM_H
12 #define KDGANTTGRAPHICSITEM_H
13 
14 #include "kdganttglobal.h"
16 
17 #include <QDateTime>
18 #include <QGraphicsItem>
19 #include <QPersistentModelIndex>
20 
21 QT_BEGIN_NAMESPACE
22 class QGraphicsLineItem;
23 QT_END_NAMESPACE
24 
25 namespace KDGantt {
26 class GraphicsScene;
27 class ConstraintGraphicsItem;
28 
29 /* Can we fit every kind of item into one gfxitem class? */
30 class GraphicsItem : public QGraphicsItem
31 {
32 public:
33  enum
34  {
35  Type = UserType + 42
36  };
37 
38  explicit GraphicsItem(QGraphicsItem *parent = nullptr, GraphicsScene *scene = nullptr);
39  explicit GraphicsItem(const QModelIndex &idx, QGraphicsItem *parent = nullptr, GraphicsScene *scene = nullptr);
40  ~GraphicsItem() override;
41 
42  /*reimp*/ int type() const override;
43  /*reimp (non-virtual)*/ GraphicsScene *scene() const;
44 
45  void updateItem(const Span &rowgeometry, const QPersistentModelIndex &idx);
46 
47  // virtual ItemType itemType() const = 0;
48 
49  // qreal dateTimeToSceneX( const QDateTime& dt ) const;
50  // QDateTime sceneXtoDateTime( qreal x ) const;
51 
52  QRectF rect() const
53  {
54  return m_rect;
55  }
56  void setRect(const QRectF &r);
57  void setBoundingRect(const QRectF &r);
58 
59  virtual QString ganttToolTip() const;
60 
61  const QPersistentModelIndex &index() const
62  {
63  return m_index;
64  }
65  void setIndex(const QPersistentModelIndex &idx);
66 
67  bool isEditable() const;
68  bool isUpdating() const
69  {
70  return m_isupdating;
71  }
72 
77  QList<ConstraintGraphicsItem *> startConstraints() const
78  {
79  return m_startConstraints;
80  }
81  QList<ConstraintGraphicsItem *> endConstraints() const
82  {
83  return m_endConstraints;
84  }
85 
86  /*reimp*/ QRectF boundingRect() const override;
87  /*reimp*/ void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
88  QWidget *widget = nullptr) override;
89 
90  /*reimp*/ QVariant itemChange(GraphicsItemChange, const QVariant &value) override;
91 
92 protected:
93  /*reimp*/ void focusInEvent(QFocusEvent *event) override;
94  /*reimp*/ void hoverMoveEvent(QGraphicsSceneHoverEvent *) override;
95  /*reimp*/ void hoverLeaveEvent(QGraphicsSceneHoverEvent *) override;
96  /*reimp*/ void mousePressEvent(QGraphicsSceneMouseEvent *) override;
97  /*reimp*/ void mouseReleaseEvent(QGraphicsSceneMouseEvent *) override;
98  /*reimp*/ void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *) override;
99  /*reimp*/ void mouseMoveEvent(QGraphicsSceneMouseEvent *) override;
100 
101 private:
102  void init();
103 
104  QPointF startConnector(int relationType) const;
105  QPointF endConnector(int relationType) const;
106  void updateConstraintItems();
107  StyleOptionGanttItem getStyleOption() const;
108  void updateModel();
109  void updateItemFromMouse(const QPointF &scenepos);
110  void constraintsChanged();
111 
112  QRectF m_rect;
113  QRectF m_boundingrect;
114  QPersistentModelIndex m_index;
115  bool m_isupdating = false;
116  int m_istate;
117  QPointF m_presspos;
118  QPointF m_pressscenepos;
119  QGraphicsLineItem *m_dragline;
120  GraphicsItem *m_dragtarget; // TODO: not used. remove it
121  QList<ConstraintGraphicsItem *> m_startConstraints;
122  QList<ConstraintGraphicsItem *> m_endConstraints;
123 };
124 }
125 
126 #endif /* KDGANTTGRAPHICSITEM_H */
int type() const override
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget=nullptr) override
QRectF boundingRect() const override
void removeStartConstraint(ConstraintGraphicsItem *)
GraphicsItem(QGraphicsItem *parent=nullptr, GraphicsScene *scene=nullptr)
void addEndConstraint(ConstraintGraphicsItem *)
void mousePressEvent(QGraphicsSceneMouseEvent *) override
void updateItem(const Span &rowgeometry, const QPersistentModelIndex &idx)
void hoverMoveEvent(QGraphicsSceneHoverEvent *) override
const QPersistentModelIndex & index() const
void mouseReleaseEvent(QGraphicsSceneMouseEvent *) override
virtual QString ganttToolTip() const
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *) override
void removeEndConstraint(ConstraintGraphicsItem *)
QList< ConstraintGraphicsItem * > endConstraints() const
void mouseMoveEvent(QGraphicsSceneMouseEvent *) override
void focusInEvent(QFocusEvent *event) override
void setIndex(const QPersistentModelIndex &idx)
GraphicsScene * scene() const
void setRect(const QRectF &r)
void addStartConstraint(ConstraintGraphicsItem *)
void setBoundingRect(const QRectF &r)
QList< ConstraintGraphicsItem * > startConstraints() const
void hoverLeaveEvent(QGraphicsSceneHoverEvent *) override
QVariant itemChange(GraphicsItemChange, const QVariant &value) override
A class representing a start point and a length.
QStyleOption subclass for gantt items.
Contains KDGantt macros.

© 2001 Klarälvdalens Datakonsult AB (KDAB)
"The Qt, C++ and OpenGL Experts"
https://www.kdab.com/
https://www.kdab.com/development-resources/qt-tools/kd-chart/
Generated by doxygen 1.9.1