00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef K_NUMINPUT_H
00028 #define K_NUMINPUT_H
00029
00030 #include <qwidget.h>
00031 #include <qspinbox.h>
00032
00033 class QLabel;
00034 class QSlider;
00035 class QLineEdit;
00036 class QLayout;
00037 class QValidator;
00038
00039 class KIntSpinBox;
00040
00041
00042
00048 class KNumInput : public QWidget
00049 {
00050 Q_OBJECT
00051 Q_PROPERTY( QString label READ label WRITE setLabel )
00052 public:
00057 KNumInput(QWidget* parent=0, const char* name=0);
00058
00063 KNumInput(KNumInput* below, QWidget* parent=0, const char* name=0);
00064 ~KNumInput();
00065
00084 virtual void setLabel(const QString & label, int a = AlignLeft | AlignTop);
00085
00089 QString label() const;
00090
00095 bool showSlider() const { return m_slider; }
00096
00103 void setSteps(int minor, int major);
00104
00109 QSizePolicy sizePolicy() const;
00110
00116 virtual QSize sizeHint() const;
00117
00118 protected:
00124 void layout(bool deep);
00125
00134 virtual void doLayout() = 0;
00135
00136 KNumInput* m_prev, *m_next;
00137 int m_colw1, m_colw2;
00138
00139 QLabel* m_label;
00140 QSlider* m_slider;
00141 QSize m_sizeSlider, m_sizeLabel;
00142
00143 int m_alignment;
00144
00145 private:
00146 void init();
00147
00148 protected:
00149 virtual void virtual_hook( int id, void* data );
00150 private:
00151 class KNumInputPrivate;
00152 KNumInputPrivate *d;
00153 };
00154
00155
00156
00181 class KIntNumInput : public KNumInput
00182 {
00183 Q_OBJECT
00184 Q_PROPERTY( int value READ value WRITE setValue )
00185 Q_PROPERTY( int minValue READ minValue WRITE setMinValue )
00186 Q_PROPERTY( int maxValue READ maxValue WRITE setMaxValue )
00187 Q_PROPERTY( int referencePoint READ referencePoint WRITE setReferencePoint )
00188 Q_PROPERTY( QString suffix READ suffix WRITE setSuffix )
00189 Q_PROPERTY( QString prefix READ prefix WRITE setPrefix )
00190 Q_PROPERTY( QString specialValueText READ specialValueText WRITE setSpecialValueText )
00191
00192 public:
00197 KIntNumInput(QWidget *parent=0, const char *name=0);
00210 KIntNumInput(int value, QWidget* parent=0, int base = 10, const char *name=0);
00211
00229 KIntNumInput(KNumInput* below, int value, QWidget* parent=0, int base = 10, const char *name=0);
00230
00236 virtual ~KIntNumInput();
00237
00241 int value() const;
00242
00247 double relativeValue() const;
00248
00253 int referencePoint() const;
00254
00259 QString suffix() const;
00264 QString prefix() const;
00269 QString specialValueText() const;
00270
00276 void setRange(int min, int max, int step=1, bool slider=true);
00280 void setMinValue(int min);
00284 int minValue() const;
00288 void setMaxValue(int max);
00292 int maxValue() const;
00293
00300 void setSpecialValueText(const QString& text);
00301
00305 virtual void setLabel(const QString & label, int a = AlignLeft | AlignTop);
00306
00314 virtual QSize minimumSizeHint() const;
00315
00316 public slots:
00320 void setValue(int);
00321
00326 void setRelativeValue(double);
00327
00332 void setReferencePoint(int);
00333
00343 void setSuffix(const QString &suffix);
00344
00352 void setPrefix(const QString &prefix);
00353
00358 void setEditFocus( bool mark = true );
00359
00360 signals:
00365 void valueChanged(int);
00366
00372 void relativeValueChanged(double);
00373
00374 private slots:
00375 void spinValueChanged(int);
00376 void slotEmitRelativeValueChanged(int);
00377
00378 protected:
00382 virtual void doLayout();
00386 void resizeEvent ( QResizeEvent * );
00387
00388 KIntSpinBox* m_spin;
00389 QSize m_sizeSpin;
00390
00391 private:
00392 void init(int value, int _base);
00393
00394 protected:
00395 virtual void virtual_hook( int id, void* data );
00396 private:
00397 class KIntNumInputPrivate;
00398 KIntNumInputPrivate *d;
00399 };
00400
00401
00402
00403
00404 class KDoubleLine;
00405
00432 class KDoubleNumInput : public KNumInput
00433 {
00434 Q_OBJECT
00435 Q_PROPERTY( double value READ value WRITE setValue )
00436 Q_PROPERTY( double minValue READ minValue WRITE setMinValue )
00437 Q_PROPERTY( double maxValue READ maxValue WRITE setMaxValue )
00438 Q_PROPERTY( QString suffix READ suffix WRITE setSuffix )
00439 Q_PROPERTY( QString prefix READ prefix WRITE setPrefix )
00440 Q_PROPERTY( QString specialValueText READ specialValueText WRITE setSpecialValueText )
00441
00442 public:
00447 KDoubleNumInput(QWidget *parent=0, const char *name=0);
00448
00457 KDoubleNumInput(double value, QWidget *parent=0, const char *name=0);
00458
00471 KDoubleNumInput(double lower, double upper, double value, double step=0.01,
00472 int precision=2, QWidget *parent=0, const char *name=0);
00473
00477 virtual ~KDoubleNumInput();
00478
00490 KDoubleNumInput(KNumInput* below, double value, QWidget* parent=0, const char* name=0);
00491
00506 KDoubleNumInput(KNumInput* below,
00507 double lower, double upper, double value, double step=0.02,
00508 int precision=2, QWidget *parent=0, const char *name=0);
00509
00513 double value() const;
00514
00519 QString suffix() const;
00520
00525 QString prefix() const;
00526
00531 int precision() const;
00532
00537 QString specialValueText() const { return m_specialvalue; }
00538
00544 void setRange(double min, double max, double step=1, bool slider=true);
00548 void setMinValue(double min);
00552 double minValue() const;
00556 void setMaxValue(double max);
00560 double maxValue() const;
00561
00565 void setPrecision(int precision);
00566
00571 double referencePoint() const;
00572
00577 double relativeValue() const;
00578
00585 void setSpecialValueText(const QString& text);
00586
00590 virtual void setLabel(const QString & label, int a = AlignLeft | AlignTop);
00594 virtual QSize minimumSizeHint() const;
00598 virtual bool eventFilter(QObject*, QEvent*);
00599
00600 public slots:
00604 void setValue(double);
00605
00610 void setRelativeValue(double);
00611
00618 void setReferencePoint(double ref);
00619
00627 void setSuffix(const QString &suffix);
00628
00635 void setPrefix(const QString &prefix);
00636
00637 signals:
00642 void valueChanged(double);
00650 void relativeValueChanged(double);
00651
00652 private slots:
00653 void sliderMoved(int);
00654 void slotEmitRelativeValueChanged(double);
00655
00656 protected:
00657
00661 virtual void doLayout();
00665 void resizeEvent ( QResizeEvent * );
00666 virtual void resetEditBox();
00667
00668
00669 KDoubleLine* edit;
00670
00671 bool m_range;
00672 double m_lower, m_upper, m_step;
00673
00674
00675 QSize m_sizeEdit;
00676
00677 friend class KDoubleLine;
00678 private:
00679 void init(double value, double lower, double upper,
00680 double step, int precision);
00681 double mapSliderToSpin(int) const;
00682 void updateLegacyMembers();
00683
00684 QString m_specialvalue, m_prefix, m_suffix;
00685 double m_value;
00686 short m_precision;
00687
00688
00689 protected:
00690 virtual void virtual_hook( int id, void* data );
00691 private:
00692 class KDoubleNumInputPrivate;
00693 KDoubleNumInputPrivate *d;
00694 };
00695
00696
00697
00698
00708 class KIntSpinBox : public QSpinBox
00709 {
00710 Q_OBJECT
00711 Q_PROPERTY( int base READ base WRITE setBase )
00712
00713 public:
00714
00722 KIntSpinBox( QWidget *parent=0, const char *name=0);
00723
00738 KIntSpinBox(int lower, int upper, int step, int value, int base = 10,
00739 QWidget* parent = 0, const char* name = 0);
00740
00744 virtual ~KIntSpinBox();
00745
00749 void setBase(int base);
00753 int base() const;
00758 void setEditFocus(bool mark);
00759
00760 protected:
00761
00766 virtual QString mapValueToText(int);
00767
00772 virtual int mapTextToValue(bool*);
00773
00774 private:
00775 int val_base;
00776 protected:
00777 virtual void virtual_hook( int id, void* data );
00778 private:
00779 class KIntSpinBoxPrivate;
00780 KIntSpinBoxPrivate *d;
00781 };
00782
00783
00784
00785
00834 class KDoubleSpinBox : public QSpinBox {
00835 Q_OBJECT
00836 Q_PROPERTY( bool acceptLocalizedNumbers READ acceptLocalizedNumbers WRITE setAcceptLocalizedNumbers )
00837 Q_OVERRIDE( double maxValue READ maxValue WRITE setMaxValue )
00838 Q_OVERRIDE( double minValue READ minValue WRITE setMinValue )
00839 Q_OVERRIDE( double lineStep READ lineStep WRITE setLineStep )
00840 Q_OVERRIDE( double value READ value WRITE setValue )
00841 Q_PROPERTY( int precision READ precision WRITE setPrecision )
00842
00843 public:
00847 KDoubleSpinBox( QWidget * parent=0, const char * name=0 );
00851 KDoubleSpinBox( double lower, double upper, double step, double value,
00852 int precision=2, QWidget * parent=0, const char * name=0 );
00853
00854 virtual ~KDoubleSpinBox();
00855
00857 bool acceptLocalizedNumbers() const;
00860 virtual void setAcceptLocalizedNumbers( bool accept );
00861
00865 void setRange( double lower, double upper, double step=0.01, int precision=2 );
00866
00868 int precision() const;
00872 void setPrecision( int precision );
00885 virtual void setPrecision( int precision, bool force );
00886
00888 double value() const;
00890 double minValue() const;
00897 void setMinValue( double value );
00899 double maxValue() const;
00906 void setMaxValue( double value );
00907
00909 double lineStep() const;
00914 void setLineStep( double step );
00915
00917 void setValidator( const QValidator * );
00918
00919 signals:
00921 void valueChanged( double value );
00922
00923 public slots:
00927 virtual void setValue( double value );
00928
00929 protected:
00930 virtual QString mapValueToText(int);
00931 virtual int mapTextToValue(bool*);
00932
00933 protected slots:
00934 void slotValueChanged( int value );
00935
00936 protected:
00937 virtual void virtual_hook( int id, void* data );
00938 private:
00939 typedef QSpinBox base;
00940 void updateValidator();
00941 int maxPrecision() const;
00942
00943 class Private;
00944 Private * d;
00945 };
00946
00947 #endif // K_NUMINPUT_H