fix start/stop/pause
[Sak.git] / timeline.h
bloba84d25e364a93f6a91e8041b970cf85d7cc833fa
1 #ifndef TIMELINE_H
2 #define TIMELINE_H
4 #include <QtGui>
6 class Task;
8 class HitItem : public QObject, public QGraphicsItem {
9 Q_OBJECT;
10 public:
11 HitItem(const Task* t, const QDateTime& timestamp, int duration, const QString& subtask, QGraphicsItem* parent = 0);
12 QRectF boundingRect() const { return m_rect; }
13 void paint ( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget = 0 );
14 const Task* task() const { return m_task; }
15 void commitChanges();
16 QDateTime timestamp() const { return m_t; }
17 QDateTime newTimestamp() const { return m_newT; }
18 int duration() const { return m_d; }
19 int newDuration() const { return m_newD; }
20 QString subtask() const { return m_subtask; }
21 protected:
22 void mousePressEvent(QGraphicsSceneMouseEvent * event);
23 void mouseReleaseEvent(QGraphicsSceneMouseEvent * event);
24 void mouseMoveEvent(QGraphicsSceneMouseEvent * event);
25 void hoverEnterEvent ( QGraphicsSceneHoverEvent * event );
26 void hoverLeaveEvent ( QGraphicsSceneHoverEvent * event );
27 void hoverMoveEvent ( QGraphicsSceneHoverEvent * event );
28 void reshape();
29 signals:
30 void changed();
31 private:
32 const Task* m_task;
33 QRectF m_rect;
34 int m_d, m_newD;
35 QDateTime m_t, m_newT;
36 QString m_subtask;
37 QPainterPath m_shape;
38 QPen m_pen;
39 QBrush m_bgbrush;
40 QCursor m_savedCursor;
41 QPointF m_lastPos;
42 bool m_leftExtending, m_rightExtending, m_moving;
45 class Timeline : public QGraphicsView
47 Q_OBJECT;
48 public:
49 Timeline(QWidget* parent = 0);
50 ~Timeline();
51 void setPeriod(const QDateTime& from, const QDateTime& to);
52 signals:
53 void hitSelected(HitItem*);
54 public slots:
55 void selectionChanged();
56 protected:
57 void keyPressEvent(QKeyEvent* e);
58 void wheelEvent(QWheelEvent* e);
59 void mousePressEvent(QMouseEvent* e);
60 void mouseReleaseEvent(QMouseEvent* e);
61 void mouseMoveEvent(QMouseEvent* e);
62 private:
63 QGraphicsItemGroup* m_cursor;
64 QGraphicsTextItem* m_cursorText;
65 QGraphicsLineItem* m_cursorLine;
66 QGraphicsRectItem* m_bg;
67 QPoint m_pos;
68 bool m_moving;
71 #endif // TIMELINE_H