#ifndef SEGMENTMONITOR_H #define SEGMENTMONITOR_H #include #include #include "SpeechSegment.h" #include "VideoFrame.h" class SegmentMonitor: public QWidget { Q_OBJECT public: SegmentMonitor(QWidget *parent = 0); void reset(); qreal getRatio() const; void setAnnotMode(bool annotMode); public slots: void processShot(Segment *shot); void processSpokenFrame(qint64 position, const QString &text, const QString &speaker); void segmentationRetrieved(); void positionChanged(qint64 position); void updateDuration(qint64 duration); void setWidth(int width); void showContextMenu(const QPoint &point); void addNewSpeaker(); void endOfAnnotation(); signals: void playSegments(QList> utterances); void setSpeaker(qint64 start, qint64 end, const QString &speaker, VideoFrame::SpeakerSource source); void resetSpeaker(qint64 prevStart, qint64 prevEnd, qint64 start, qint64 end, bool resetSub, VideoFrame::SpeakerSource source); protected: void paintEvent(QPaintEvent *event); void mousePressEvent(QMouseEvent *event); void mouseDoubleClickEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); private: bool testShotPattern(const QList &lblWindow); QMenu *m_speakers; QList m_annotSpeakers; QAction *m_newSpeakerAct; QAction *m_endAct; QList> m_segmentationList; QList m_currList; qint64 m_lastStart; qint64 m_currPosition; QString m_currText; QString m_currSpeaker;; int m_width; qreal m_ratio; int m_step; int m_segmentHeight; qint64 m_duration; QList m_colors; QHash m_segColors; int m_idxColor; QStringList m_selectedLabels; bool m_annotMode; qint64 m_prevPosition; }; #endif