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