00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef QWT_DIAL_H
00011 #define QWT_DIAL_H 1
00012
00013 #include <qframe.h>
00014 #include <qpalette.h>
00015 #include "qwt_global.h"
00016 #include "qwt_sldbase.h"
00017 #include "qwt_scldraw.h"
00018
00019 class QwtDialNeedle;
00020 class QwtDial;
00021
00022 class QwtDialScaleDraw: public QwtScaleDraw
00023 {
00024 public:
00025 QwtDialScaleDraw(QwtDial *);
00026 virtual QString label(double value) const;
00027 private:
00028 QwtDial *d_parent;
00029 };
00030
00031 class QWT_EXPORT QwtDial: public QwtSliderBase
00032 {
00033 Q_OBJECT
00034
00035 Q_ENUMS(Shadow)
00036 Q_ENUMS(Mode)
00037
00038 Q_PROPERTY(bool visibleBackground READ hasVisibleBackground WRITE showBackground)
00039 Q_PROPERTY(int lineWidth READ lineWidth WRITE setLineWidth)
00040 Q_PROPERTY(Shadow frameShadow READ frameShadow WRITE setFrameShadow)
00041 Q_PROPERTY(Mode mode READ mode WRITE setMode)
00042 Q_PROPERTY(double origin READ origin WRITE setOrigin)
00043 Q_PROPERTY(bool wrapping READ wrapping WRITE setWrapping)
00044
00045 friend class QwtDialScaleDraw;
00046 public:
00047
00048 enum Shadow
00049 {
00059 Plain = QFrame::Plain,
00060 Raised = QFrame::Raised,
00061 Sunken = QFrame::Sunken
00062 };
00063
00064 enum Mode
00065 {
00072 RotateNeedle,
00073 RotateScale
00074 };
00075
00076 QwtDial( QWidget* parent=0, const char* name = 0);
00077 virtual ~QwtDial();
00078
00079 void setFrameShadow(Shadow);
00080 Shadow frameShadow() const;
00081
00082 bool hasVisibleBackground() const;
00083 void showBackground(bool);
00084
00085 void setLineWidth(int);
00086 int lineWidth() const;
00087
00088 void setMode(Mode);
00089 Mode mode() const;
00090
00091 void setWrapping(bool);
00092 bool wrapping() const;
00093
00094 void setScale(int maxMajIntv, int maxMinIntv, double step = 0.0);
00095
00096 void setScaleArc(double min, double max);
00097 double minScaleArc() const { return d_minScaleArc; }
00098 double maxScaleArc() const { return d_maxScaleArc; }
00099
00100 void setOrigin(double);
00101 double origin() const;
00102
00103 void setNeedle(QwtDialNeedle *);
00104 const QwtDialNeedle *needle() const;
00105 QwtDialNeedle *needle();
00106
00107 QRect boundingRect() const;
00108 QRect contentsRect() const;
00109 virtual QRect scaleContentsRect() const;
00110
00111 virtual QSize sizeHint() const;
00112 virtual QSize minimumSizeHint() const;
00113
00114
00115 protected:
00116 virtual void paintEvent(QPaintEvent *);
00117 virtual void resizeEvent(QResizeEvent *);
00118
00119 virtual void drawFrame(QPainter *p);
00120 virtual void drawContents(QPainter *) const;
00121
00122 virtual void drawScale(QPainter *, const QPoint ¢er,
00123 int radius, double origin, double arcMin, double arcMax) const;
00124 virtual void drawScaleContents(QPainter *, const QPoint ¢er,
00125 int radius) const;
00126
00127 virtual void drawNeedle(QPainter *, const QPoint &,
00128 int radius, double direction, QPalette::ColorGroup) const;
00129
00130 virtual void setScaleDraw(QwtDialScaleDraw *);
00131 QwtDialScaleDraw *scaleDraw() { return d_scaleDraw; }
00132 const QwtDialScaleDraw *scaleDraw() const { return d_scaleDraw; }
00133
00134 virtual QString scaleLabel(double) const;
00135 void updateScale();
00136
00137 virtual void rangeChange();
00138 virtual void valueChange();
00139
00140 virtual double getValue(const QPoint &);
00141 virtual void getScrollMode(const QPoint &,
00142 int &scrollMode, int &direction);
00143
00144 private:
00145 bool d_visibleBackground;
00146 Shadow d_frameShadow;
00147 int d_lineWidth;
00148
00149 Mode d_mode;
00150 bool d_wrapping;
00151
00152 double d_origin;
00153 double d_minScaleArc;
00154 double d_maxScaleArc;
00155
00156 QwtDialScaleDraw *d_scaleDraw;
00157 int d_maxMajIntv;
00158 int d_maxMinIntv;
00159 double d_scaleStep;
00160
00161 QwtDialNeedle *d_needle;
00162 };
00163
00164 #endif