00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef QWT_DIAL_H
00013 #define QWT_DIAL_H 1
00014
00015 #include <qframe.h>
00016 #include <qpalette.h>
00017 #include "qwt_global.h"
00018 #include "qwt_abstract_slider.h"
00019 #include "qwt_scale_draw.h"
00020
00021 class QwtDialNeedle;
00022 class QwtDial;
00023
00030 class QWT_EXPORT QwtDialScaleDraw: public QwtScaleDraw
00031 {
00032 public:
00033 explicit QwtDialScaleDraw(QwtDial *);
00034 virtual QString label(double value) const;
00035
00036 void showLabels(bool);
00037 bool visibleLabels() const;
00038
00039 void setPenWidth(uint);
00040 uint penWidth() const;
00041
00042 private:
00043 QwtDial *d_parent;
00044 int d_penWidth;
00045 bool d_visibleLabels;
00046 };
00047
00072 class QWT_EXPORT QwtDial: public QwtAbstractSlider
00073 {
00074 Q_OBJECT
00075
00076 Q_ENUMS(Shadow)
00077 Q_ENUMS(Mode)
00078
00079 Q_PROPERTY(bool visibleBackground READ hasVisibleBackground WRITE showBackground)
00080 Q_PROPERTY(int lineWidth READ lineWidth WRITE setLineWidth)
00081 Q_PROPERTY(Shadow frameShadow READ frameShadow WRITE setFrameShadow)
00082 Q_PROPERTY(Mode mode READ mode WRITE setMode)
00083 Q_PROPERTY(double origin READ origin WRITE setOrigin)
00084 Q_PROPERTY(bool wrapping READ wrapping WRITE setWrapping)
00085
00086 friend class QwtDialScaleDraw;
00087 public:
00088
00097 enum Shadow
00098 {
00099 Plain = QFrame::Plain,
00100 Raised = QFrame::Raised,
00101 Sunken = QFrame::Sunken
00102 };
00103
00105 enum ScaleOptions
00106 {
00107 ScaleBackbone = 1,
00108 ScaleTicks = 2,
00109 ScaleLabel = 4
00110 };
00111
00117 enum Mode
00118 {
00119 RotateNeedle,
00120 RotateScale
00121 };
00122
00123 QwtDial( QWidget* parent = NULL);
00124 virtual ~QwtDial();
00125
00126 void setFrameShadow(Shadow);
00127 Shadow frameShadow() const;
00128
00129 bool hasVisibleBackground() const;
00130 void showBackground(bool);
00131
00132 void setLineWidth(int);
00133 int lineWidth() const;
00134
00135 void setMode(Mode);
00136 Mode mode() const;
00137
00138 virtual void setWrapping(bool);
00139 bool wrapping() const;
00140
00141 virtual void setScale(int maxMajIntv, int maxMinIntv, double step = 0.0);
00142
00143 void setScaleArc(double min, double max);
00144 void setScaleOptions(int);
00145 void setScaleTicks(int minLen, int medLen, int majLen, int penWidth = 1);
00146
00147 double minScaleArc() const;
00148 double maxScaleArc() const;
00149
00150 virtual void setOrigin(double);
00151 double origin() const;
00152
00153 virtual void setNeedle(QwtDialNeedle *);
00154 const QwtDialNeedle *needle() const;
00155 QwtDialNeedle *needle();
00156
00157 QRect boundingRect() const;
00158 QRect contentsRect() const;
00159 virtual QRect scaleContentsRect() const;
00160
00161 virtual QSize sizeHint() const;
00162 virtual QSize minimumSizeHint() const;
00163
00164 virtual void setScaleDraw(QwtDialScaleDraw *);
00165
00166 QwtDialScaleDraw *scaleDraw();
00167 const QwtDialScaleDraw *scaleDraw() const;
00168
00169 protected:
00170 virtual void paintEvent(QPaintEvent *);
00171 virtual void resizeEvent(QResizeEvent *);
00172 virtual void keyPressEvent(QKeyEvent *);
00173
00174 virtual void updateMask();
00175
00176 virtual void drawFrame(QPainter *p);
00177 virtual void drawContents(QPainter *) const;
00178 virtual void drawFocusIndicator(QPainter *) const;
00179
00180 virtual void drawScale(QPainter *, const QPoint ¢er,
00181 int radius, double origin, double arcMin, double arcMax) const;
00182
00192 virtual void drawScaleContents(QPainter *painter, const QPoint ¢er,
00193 int radius) const;
00194
00195 virtual void drawNeedle(QPainter *, const QPoint &,
00196 int radius, double direction, QPalette::ColorGroup) const;
00197
00198 virtual QString scaleLabel(double) const;
00199 void updateScale();
00200
00201 virtual void rangeChange();
00202 virtual void valueChange();
00203
00204 virtual double getValue(const QPoint &);
00205 virtual void getScrollMode(const QPoint &,
00206 int &scrollMode, int &direction);
00207
00208 private:
00209 class PrivateData;
00210 PrivateData *d_data;
00211 };
00212
00213 #endif