1 #ifndef REPLAY_TIMELINE_WIDGET
2 #define REPLAY_TIMELINE_WIDGET
3 
4 #include <QList>
5 #include <QMouseEvent>
6 #include <QWidget>
7 
8 class QPaintEvent;
9 class QTimer;
10 
11 class ReplayTimelineWidget : public QWidget
12 {
13     Q_OBJECT
14 signals:
15     void processNextEvent();
16     void replayFinished();
17     void rewound();
18 
19 private:
20     QTimer *replayTimer;
21     QList<int> replayTimeline;
22     QList<int> histogram;
23     static const int binLength;
24     int maxBinValue, maxTime;
25     qreal timeScaleFactor;
26     int currentTime;
27     int currentEvent;
28 private slots:
29     void replayTimerTimeout();
30 
31 public:
32     explicit ReplayTimelineWidget(QWidget *parent = nullptr);
33     void setTimeline(const QList<int> &_replayTimeline);
34     QSize sizeHint() const override;
35     QSize minimumSizeHint() const override;
36     void setTimeScaleFactor(qreal _timeScaleFactor);
getCurrentEvent()37     int getCurrentEvent() const
38     {
39         return currentEvent;
40     }
41 public slots:
42     void startReplay();
43     void stopReplay();
44 
45 protected:
46     void paintEvent(QPaintEvent *event) override;
47     void mousePressEvent(QMouseEvent *event) override;
48 };
49 
50 #endif
51