00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef QWT_DIAL_H
00011 #define QWT_DIAL_H 1
00012
00013 #include "qwt_global.h"
00014 #include "qwt_abstract_slider.h"
00015 #include "qwt_round_scale_draw.h"
00016 #include <qframe.h>
00017 #include <qpalette.h>
00018
00019 class QwtDialNeedle;
00020 class QwtDial;
00021
00027 class QWT_EXPORT QwtDialScaleDraw: public QwtRoundScaleDraw
00028 {
00029 public:
00030 explicit QwtDialScaleDraw( QwtDial * );
00031
00032 virtual QwtText label( double value ) const;
00033
00034 void setPenWidth( double );
00035 double penWidth() const;
00036
00037 private:
00038 QwtDial *d_parent;
00039 double d_penWidth;
00040 };
00041
00066 class QWT_EXPORT QwtDial: public QwtAbstractSlider
00067 {
00068 Q_OBJECT
00069
00070 Q_ENUMS( Shadow )
00071 Q_ENUMS( Mode )
00072 Q_ENUMS( Direction )
00073
00074 Q_PROPERTY( bool visibleBackground READ hasVisibleBackground WRITE showBackground )
00075 Q_PROPERTY( int lineWidth READ lineWidth WRITE setLineWidth )
00076 Q_PROPERTY( Shadow frameShadow READ frameShadow WRITE setFrameShadow )
00077 Q_PROPERTY( Mode mode READ mode WRITE setMode )
00078 Q_PROPERTY( double origin READ origin WRITE setOrigin )
00079 Q_PROPERTY( bool wrapping READ wrapping WRITE setWrapping )
00080 Q_PROPERTY( Direction direction READ direction WRITE setDirection )
00081
00082 friend class QwtDialScaleDraw;
00083 public:
00084
00093 enum Shadow
00094 {
00095 Plain = QFrame::Plain,
00096 Raised = QFrame::Raised,
00097 Sunken = QFrame::Sunken
00098 };
00099
00101 enum ScaleOptions
00102 {
00103 ScaleBackbone = 1,
00104 ScaleTicks = 2,
00105 ScaleLabel = 4
00106 };
00107
00113 enum Mode
00114 {
00115 RotateNeedle,
00116 RotateScale
00117 };
00118
00122 enum Direction
00123 {
00124 Clockwise,
00125 CounterClockwise
00126 };
00127
00128 explicit QwtDial( QWidget *parent = NULL );
00129 virtual ~QwtDial();
00130
00131 void setFrameShadow( Shadow );
00132 Shadow frameShadow() const;
00133
00134 bool hasVisibleBackground() const;
00135 void showBackground( bool );
00136
00137 void setLineWidth( int );
00138 int lineWidth() const;
00139
00140 void setMode( Mode );
00141 Mode mode() const;
00142
00143 virtual void setWrapping( bool );
00144 bool wrapping() const;
00145
00146 virtual void setScale( int maxMajIntv, int maxMinIntv, double step = 0.0 );
00147
00148 void setScaleArc( double min, double max );
00149 void setScaleOptions( int );
00150 void setScaleTicks( int minLen, int medLen, int majLen, int penWidth = 1 );
00151
00152 double minScaleArc() const;
00153 double maxScaleArc() const;
00154
00155 virtual void setOrigin( double );
00156 double origin() const;
00157
00158 void setDirection( Direction );
00159 Direction direction() const;
00160
00161 virtual void setNeedle( QwtDialNeedle * );
00162 const QwtDialNeedle *needle() const;
00163 QwtDialNeedle *needle();
00164
00165 QRect boundingRect() const;
00166 QRect contentsRect() const;
00167 virtual QRect scaleContentsRect() const;
00168
00169 virtual QSize sizeHint() const;
00170 virtual QSize minimumSizeHint() const;
00171
00172 virtual void setScaleDraw( QwtDialScaleDraw * );
00173
00174 QwtDialScaleDraw *scaleDraw();
00175 const QwtDialScaleDraw *scaleDraw() const;
00176
00177 protected:
00178 virtual void paintEvent( QPaintEvent * );
00179 virtual void resizeEvent( QResizeEvent * );
00180 virtual void keyPressEvent( QKeyEvent * );
00181
00182 virtual void updateMask();
00183
00184 virtual void drawFrame( QPainter *p );
00185 virtual void drawContents( QPainter * ) const;
00186 virtual void drawFocusIndicator( QPainter * ) const;
00187
00188 virtual void drawScale( QPainter *, const QPoint ¢er,
00189 int radius, double origin, double arcMin, double arcMax ) const;
00190
00200 virtual void drawScaleContents( QPainter *painter,
00201 const QPoint ¢er, int radius ) const;
00202
00203 virtual void drawNeedle( QPainter *, const QPoint &,
00204 int radius, double direction, QPalette::ColorGroup ) const;
00205
00206 virtual QwtText scaleLabel( double ) const;
00207 void updateScale();
00208
00209 virtual void rangeChange();
00210 virtual void valueChange();
00211
00212 virtual double getValue( const QPoint & );
00213 virtual void getScrollMode( const QPoint &,
00214 int &scrollMode, int &direction );
00215
00216 private:
00217 void initDial();
00218
00219 class PrivateData;
00220 PrivateData *d_data;
00221 };
00222
00223 #endif