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