00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef _PANNER_H_
00017 #define _PANNER_H_
00018
00019 #include <QWidget>
00020
00021 class Panner : public QWidget
00022 {
00023 Q_OBJECT
00024
00025 public:
00026 Panner(QWidget *parent = 0);
00027 virtual ~Panner();
00028
00029 void setDefaultRectCentre(float, float);
00030
00031 void setThumbColour(QColor colour);
00032 void setAlpha(int backgroundAlpha, int thumbAlpha);
00033
00040 void setScrollUnit(float unit);
00041
00042 void getRectExtents(float &x0, float &y0, float &width, float &height);
00043
00044 virtual QSize sizeHint() const;
00045
00046 signals:
00053 void rectExtentsChanged(float, float, float, float);
00054
00061 void rectCentreMoved(float, float);
00062
00067 void doubleClicked();
00068
00069 void mouseEntered();
00070 void mouseLeft();
00071
00072 public slots:
00078 void setRectExtents(float x0, float y0, float width, float height);
00079
00084 void setRectWidth(float width);
00085
00090 void setRectHeight(float height);
00091
00097 void setRectCentreX(float x);
00098
00104 void setRectCentreY(float y);
00105
00110 void scroll(bool up);
00111
00112 void resetToDefault();
00113
00114 protected:
00115 virtual void mousePressEvent(QMouseEvent *e);
00116 virtual void mouseDoubleClickEvent(QMouseEvent *e);
00117 virtual void mouseMoveEvent(QMouseEvent *e);
00118 virtual void mouseReleaseEvent(QMouseEvent *e);
00119 virtual void wheelEvent(QWheelEvent *e);
00120 virtual void paintEvent(QPaintEvent *e);
00121 virtual void enterEvent(QEvent *);
00122 virtual void leaveEvent(QEvent *);
00123
00124 void normalise();
00125 void emitAndUpdate();
00126
00127 float m_rectX;
00128 float m_rectY;
00129 float m_rectWidth;
00130 float m_rectHeight;
00131 float m_scrollUnit;
00132
00133 float m_defaultCentreX;
00134 float m_defaultCentreY;
00135 bool m_defaultsSet;
00136
00137 QColor m_thumbColour;
00138 int m_backgroundAlpha;
00139 int m_thumbAlpha;
00140
00141 float centreX() const { return m_rectX + m_rectWidth/2; }
00142 float centreY() const { return m_rectY + m_rectHeight/2; }
00143
00144 bool m_clicked;
00145 QPoint m_clickPos;
00146 float m_dragStartX;
00147 float m_dragStartY;
00148 };
00149
00150 #endif
00151