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 #include <kdelibs_export.h>
00033
00034 class QLabel;
00035 class QSlider;
00036 class QLineEdit;
00037 class QLayout;
00038 class QValidator;
00039
00040 class KIntSpinBox;
00041
00042
00043
00049 class KDEUI_EXPORT KNumInput : public QWidget
00050 {
00051 Q_OBJECT
00052 Q_PROPERTY( QString label READ label WRITE setLabel )
00053 public:
00059 KNumInput(QWidget* parent=0, const char* name=0);
00060
00066 KNumInput(KNumInput* below, QWidget* parent=0, const char* name=0);
00067 ~KNumInput();
00068
00087 virtual void setLabel(const QString & label, int a = AlignLeft | AlignTop);
00088
00092 QString label() const;
00093
00098 bool showSlider() const { return m_slider; }
00099
00106 void setSteps(int minor, int major);
00107
00112 QSizePolicy sizePolicy() const;
00113
00119 virtual QSize sizeHint() const;
00120
00121 protected:
00127 void layout(bool deep);
00128
00137 virtual void doLayout() = 0;
00138
00139 KNumInput* m_prev, *m_next;
00140 int m_colw1, m_colw2;
00141
00142 QLabel* m_label;
00143 QSlider* m_slider;
00144 QSize m_sizeSlider, m_sizeLabel;
00145
00146 int m_alignment;
00147
00148 private:
00149 void init();
00150
00151 protected:
00152 virtual void virtual_hook( int id, void* data );
00153 private:
00154 class KNumInputPrivate;
00155 KNumInputPrivate *d;
00156 };
00157
00158
00159
00187 class KDEUI_EXPORT KIntNumInput : public KNumInput
00188 {
00189 Q_OBJECT
00190 Q_PROPERTY( int value READ value WRITE setValue )
00191 Q_PROPERTY( int minValue READ minValue WRITE setMinValue )
00192 Q_PROPERTY( int maxValue READ maxValue WRITE setMaxValue )
00193 Q_PROPERTY( int referencePoint READ referencePoint WRITE setReferencePoint )
00194 Q_PROPERTY( double relativeValue READ relativeValue WRITE setRelativeValue )
00195 Q_PROPERTY( QString suffix READ suffix WRITE setSuffix )
00196 Q_PROPERTY( QString prefix READ prefix WRITE setPrefix )
00197 Q_PROPERTY( QString specialValueText READ specialValueText WRITE setSpecialValueText )
00198
00199 public:
00204 KIntNumInput(QWidget *parent=0, const char *name=0);
00217 KIntNumInput(int value, QWidget* parent=0, int base = 10, const char *name=0);
00218
00236 KIntNumInput(KNumInput* below, int value, QWidget* parent=0, int base = 10, const char *name=0);
00237
00243 virtual ~KIntNumInput();
00244
00248 int value() const;
00249
00254 double relativeValue() const;
00255
00260 int referencePoint() const;
00261
00266 QString suffix() const;
00271 QString prefix() const;
00276 QString specialValueText() const;
00277
00284 void setRange(int min, int max, int step=1, bool slider=true);
00288 void setMinValue(int min);
00292 int minValue() const;
00296 void setMaxValue(int max);
00300 int maxValue() const;
00301
00308 void setSpecialValueText(const QString& text);
00309
00310 virtual void setLabel(const QString & label, int a = AlignLeft | AlignTop);
00311
00319 virtual QSize minimumSizeHint() const;
00320
00321 public slots:
00325 void setValue(int);
00326
00331 void setRelativeValue(double);
00332
00337 void setReferencePoint(int);
00338
00348 void setSuffix(const QString &suffix);
00349
00357 void setPrefix(const QString &prefix);
00358
00363 void setEditFocus( bool mark = true );
00364
00365 signals:
00370 void valueChanged(int);
00371
00377 void relativeValueChanged(double);
00378
00379 private slots:
00380 void spinValueChanged(int);
00381 void slotEmitRelativeValueChanged(int);
00382
00383 protected:
00384 virtual void doLayout();
00385 void resizeEvent ( QResizeEvent * );
00386
00387 KIntSpinBox* m_spin;
00388 QSize m_sizeSpin;
00389
00390 private:
00391 void init(int value, int _base);
00392
00393 protected:
00394 virtual void virtual_hook( int id, void* data );
00395 private:
00396 class KIntNumInputPrivate;
00397 KIntNumInputPrivate *d;
00398 };
00399
00400
00401
00402
00403 class KDoubleLine;
00404
00432 class KDEUI_EXPORT 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 Q_PROPERTY( int precision READ precision WRITE setPrecision )
00442 Q_PROPERTY( double referencePoint READ referencePoint WRITE setReferencePoint )
00443 Q_PROPERTY( double relativeValue READ relativeValue WRITE setRelativeValue )
00444
00445 public:
00450 KDoubleNumInput(QWidget *parent=0, const char *name=0);
00451
00460 KDoubleNumInput(double value, QWidget *parent=0, const char *name=0) KDE_DEPRECATED;
00461
00474 KDoubleNumInput(double lower, double upper, double value, double step=0.01,
00475 int precision=2, QWidget *parent=0, const char *name=0);
00476
00480 virtual ~KDoubleNumInput();
00481
00493 KDoubleNumInput(KNumInput* below, double value, QWidget* parent=0, const char* name=0) KDE_DEPRECATED;
00494
00516 KDoubleNumInput(KNumInput* below,
00517 double lower, double upper, double value, double step=0.02,
00518 int precision=2, QWidget *parent=0, const char *name=0);
00519
00523 double value() const;
00524
00529 QString suffix() const;
00530
00535 QString prefix() const;
00536
00541 int precision() const;
00542
00547 QString specialValueText() const { return m_specialvalue; }
00548
00555 void setRange(double min, double max, double step=1, bool slider=true);
00559 void setMinValue(double min);
00563 double minValue() const;
00567 void setMaxValue(double max);
00571 double maxValue() const;
00572
00576 void setPrecision(int precision);
00577
00582 double referencePoint() const;
00583
00588 double relativeValue() const;
00589
00596 void setSpecialValueText(const QString& text);
00597
00598 virtual void setLabel(const QString & label, int a = AlignLeft | AlignTop);
00599 virtual QSize minimumSizeHint() const;
00600 virtual bool eventFilter(QObject*, QEvent*);
00601
00602 public slots:
00606 void setValue(double);
00607
00612 void setRelativeValue(double);
00613
00620 void setReferencePoint(double ref);
00621
00629 void setSuffix(const QString &suffix);
00630
00637 void setPrefix(const QString &prefix);
00638
00639 signals:
00644 void valueChanged(double);
00652 void relativeValueChanged(double);
00653
00654 private slots:
00655 void sliderMoved(int);
00656 void slotEmitRelativeValueChanged(double);
00657
00658 protected:
00659 virtual void doLayout();
00660 void resizeEvent ( QResizeEvent * );
00661
00662 virtual void resetEditBox();
00663
00664
00665 KDoubleLine* edit;
00666
00667 bool m_range;
00668 double m_lower, m_upper, m_step;
00669
00670
00671 QSize m_sizeEdit;
00672
00673 friend class KDoubleLine;
00674 private:
00675 void init(double value, double lower, double upper,
00676 double step, int precision);
00677 double mapSliderToSpin(int) const;
00678 void updateLegacyMembers();
00679
00680 QString m_specialvalue, m_prefix, m_suffix;
00681 double m_value;
00682 short m_precision;
00683
00684
00685 protected:
00686 virtual void virtual_hook( int id, void* data );
00687 private:
00688 class KDoubleNumInputPrivate;
00689 KDoubleNumInputPrivate *d;
00690 };
00691
00692
00693
00694
00704 class KDEUI_EXPORT KIntSpinBox : public QSpinBox
00705 {
00706 Q_OBJECT
00707 Q_PROPERTY( int base READ base WRITE setBase )
00708
00709 public:
00710
00718 KIntSpinBox( QWidget *parent=0, const char *name=0);
00719
00734 KIntSpinBox(int lower, int upper, int step, int value, int base = 10,
00735 QWidget* parent = 0, const char* name = 0);
00736
00740 virtual ~KIntSpinBox();
00741
00745 void setBase(int base);
00749 int base() const;
00754 void setEditFocus(bool mark);
00755
00756 protected:
00757
00762 virtual QString mapValueToText(int);
00763
00768 virtual int mapTextToValue(bool*);
00769
00770 private:
00771 int val_base;
00772 protected:
00773 virtual void virtual_hook( int id, void* data );
00774 private:
00775 class KIntSpinBoxPrivate;
00776 KIntSpinBoxPrivate *d;
00777 };
00778
00779
00780
00781
00834 class KDEUI_EXPORT 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 );
00848
00852 KDoubleSpinBox( double lower, double upper, double step, double value,
00853 int precision=2, QWidget * parent=0, const char * name=0 );
00854
00855 virtual ~KDoubleSpinBox();
00856
00858 bool acceptLocalizedNumbers() const;
00859
00862 virtual void setAcceptLocalizedNumbers( bool accept );
00863
00867 void setRange( double lower, double upper, double step=0.01, int precision=2 );
00868
00871 int precision() const;
00872
00876 void setPrecision( int precision );
00877
00890 virtual void setPrecision( int precision, bool force );
00891
00893 double value() const;
00894
00896 double minValue() const;
00897
00904 void setMinValue( double value );
00905
00907 double maxValue() const;
00908
00915 void setMaxValue( double value );
00916
00918 double lineStep() const;
00919
00924 void setLineStep( double step );
00925
00927 void setValidator( const QValidator * );
00928
00929 signals:
00931 void valueChanged( double value );
00932
00933 public slots:
00937 virtual void setValue( double value );
00938
00939 protected:
00940 virtual QString mapValueToText(int);
00941 virtual int mapTextToValue(bool*);
00942
00943 protected slots:
00944 void slotValueChanged( int value );
00945
00946 protected:
00947 virtual void virtual_hook( int id, void* data );
00948 private:
00949 typedef QSpinBox base;
00950 void updateValidator();
00951 int maxPrecision() const;
00952
00953 class Private;
00954 Private * d;
00955 };
00956
00957 #endif // K_NUMINPUT_H