Chris@57: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ cannam@45: cannam@45: /* Chris@57: EasyMercurial Chris@57: Chris@57: Based on HgExplorer by Jari Korhonen Chris@57: Copyright (c) 2010 Jari Korhonen Chris@244: Copyright (c) 2011 Chris Cannam Chris@244: Copyright (c) 2011 Queen Mary, University of London Chris@57: cannam@45: This program is free software; you can redistribute it and/or cannam@45: modify it under the terms of the GNU General Public License as cannam@45: published by the Free Software Foundation; either version 2 of the cannam@45: License, or (at your option) any later version. See the file cannam@45: COPYING included with this distribution for more information. cannam@45: */ cannam@45: Chris@57: #ifndef _PANNED_H_ Chris@57: #define _PANNED_H_ cannam@45: cannam@45: #include cannam@45: cannam@45: class QWheelEvent; cannam@45: class QEvent; Chris@168: class QTimer; cannam@45: cannam@45: class Panned : public QGraphicsView cannam@45: { cannam@45: Q_OBJECT cannam@45: cannam@45: public: cannam@45: Panned(); cannam@45: virtual ~Panned() { } cannam@45: Chris@133: virtual void setScene(QGraphicsScene *s); Chris@133: cannam@45: signals: cannam@45: void pannedRectChanged(QRectF); cannam@45: void wheelEventReceived(QWheelEvent *); cannam@45: void pannedContentsScrolled(); cannam@45: void mouseLeaves(); cannam@45: cannam@45: public slots: cannam@45: void slotSetPannedRect(QRectF); cannam@45: void slotEmulateWheelEvent(QWheelEvent *ev); cannam@45: Chris@53: void zoomIn(); Chris@53: void zoomOut(); Chris@53: Chris@168: private slots: Chris@168: void dragTimerTimeout(); Chris@168: cannam@45: protected: cannam@45: QRectF m_pannedRect; cannam@45: Chris@168: QPoint m_lastDragPos; Chris@168: QPoint m_lastOrigin; Chris@168: QPointF m_velocity; Chris@168: bool m_dragging; Chris@168: int m_dragTimerMs; Chris@168: QTimer *m_dragTimer; Chris@168: Chris@168: virtual void mousePressEvent(QMouseEvent *); Chris@168: virtual void mouseMoveEvent(QMouseEvent *); Chris@168: virtual void mouseReleaseEvent(QMouseEvent *); Chris@168: cannam@45: virtual void paintEvent(QPaintEvent *); cannam@45: virtual void resizeEvent(QResizeEvent *); cannam@45: virtual void drawForeground(QPainter *, const QRectF &); cannam@45: virtual void wheelEvent(QWheelEvent *); cannam@45: virtual void leaveEvent(QEvent *); cannam@45: }; cannam@45: cannam@45: #endif cannam@45: