#pragma once #include #include class QMouseEvent; class QWheelEvent; namespace LtsTimeline { class TimelineHeaderView; class LTSTIMELINE_EXPORT TimelineHeaderViewMouseHandler { public: explicit TimelineHeaderViewMouseHandler(TimelineHeaderView *header); void mouseMoveEvent(QMouseEvent *e); void mousePressEvent(QMouseEvent *e); void mouseReleaseEvent(QMouseEvent *e); void wheelEvent(QWheelEvent *e); bool isBusy() const { return m_isIndicatorSelected || m_isResizingSection; } bool isIndicatorSelected() const { return m_isIndicatorSelected; } private: bool isMouseWithinRangeX(int x) const; bool isMouseWithinRangeY(int y) const; bool isMouseOverIndicator(const QPoint &pos) const; private: TimelineHeaderView *m_header{nullptr}; QPoint m_lastPos; bool m_isLeftButtonPressed{false}; bool m_isRightButtonPressed{false}; bool m_hasMouseMovedLeft{false}; bool m_hasMouseMovedRight{false}; bool m_isIndicatorSelected{false}; bool m_isResizingSection{false}; }; }