#pragma once #include #include namespace LtsTimeline { class Track; class TimelineView; class LTSTIMELINE_EXPORT TimelineViewResizeHandler { public: enum class ResizePosition { eNone, eStart, eEnd }; explicit TimelineViewResizeHandler(TimelineView *view); virtual ~TimelineViewResizeHandler(); virtual void mouseMoveEvent(QMouseEvent *e); virtual void mousePressEvent(QMouseEvent *e); virtual void mouseReleaseEvent(QMouseEvent *e); virtual bool isActive() const { return m_currentTrackId != -1 && m_currentItemId != -1 && m_resizePos != ResizePosition::eNone; } private: virtual qint64 localSnapTime(int pos) const; virtual qint64 globalSnapTime(int pos) const; protected: TimelineView *m_view{nullptr}; int m_currentTrackId{-1}; int m_currentItemId{-1}; ResizePosition m_resizePos{ResizePosition::eNone}; }; }