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 <kdemacros.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 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
00186 class KIntNumInput : public KNumInput
00187 {
00188 Q_OBJECT
00189 Q_PROPERTY( int value READ value WRITE setValue )
00190 Q_PROPERTY( int minValue READ minValue WRITE setMinValue )
00191 Q_PROPERTY( int maxValue READ maxValue WRITE setMaxValue )
00192 Q_PROPERTY( int referencePoint READ referencePoint WRITE setReferencePoint )
00193 Q_PROPERTY( QString suffix READ suffix WRITE setSuffix )
00194 Q_PROPERTY( QString prefix READ prefix WRITE setPrefix )
00195 Q_PROPERTY( QString specialValueText READ specialValueText WRITE setSpecialValueText )
00196
00197 public:
00202 KIntNumInput(QWidget *parent=0, const char *name=0);
00215 KIntNumInput(int value, QWidget* parent=0, int base = 10, const char *name=0);
00216
00234 KIntNumInput(KNumInput* below, int value, QWidget* parent=0, int base = 10, const char *name=0);
00235
00241 virtual ~KIntNumInput();
00242
00246 int value() const;
00247
00252 double relativeValue() const;
00253
00258 int referencePoint() const;
00259
00264 QString suffix() const;
00269 QString prefix() const;
00274 QString specialValueText() const;
00275
00282 void setRange(int min, int max, int step=1, bool slider=true);
00286 void setMinValue(int min);
00290 int minValue() const;
00294 void setMaxValue(int max);
00298 int maxValue() const;
00299
00306 void setSpecialValueText(const QString& text);
00307
00308 virtual void setLabel(const QString & label, int a = AlignLeft | AlignTop);
00309
00317 virtual QSize minimumSizeHint() const;
00318
00319 public slots:
00323 void setValue(int);
00324
00329 void setRelativeValue(double);
00330
00335 void setReferencePoint(int);
00336
00346 void setSuffix(const QString &suffix);
00347
00355 void setPrefix(const QString &prefix);
00356
00361 void setEditFocus( bool mark = true );
00362
00363 signals:
00368 void valueChanged(int);
00369
00375 void relativeValueChanged(double);
00376
00377 private slots:
00378 void spinValueChanged(int);
00379 void slotEmitRelativeValueChanged(int);
00380
00381 protected:
00382 virtual void doLayout();
00383 void resizeEvent ( QResizeEvent * );
00384
00385 KIntSpinBox* m_spin;
00386 QSize m_sizeSpin;
00387
00388 private:
00389 void init(int value, int _base);
00390
00391 protected:
00392 virtual void virtual_hook( int id, void* data );
00393 private:
00394 class KIntNumInputPrivate;
00395 KIntNumInputPrivate *d;
00396 };
00397
00398
00399
00400
00401 class KDoubleLine;
00402
00429 class KDoubleNumInput : public KNumInput
00430 {
00431 Q_OBJECT
00432 Q_PROPERTY( double value READ value WRITE setValue )
00433 Q_PROPERTY( double minValue READ minValue WRITE setMinValue )
00434 Q_PROPERTY( double maxValue READ maxValue WRITE setMaxValue )
00435 Q_PROPERTY( QString suffix READ suffix WRITE setSuffix )
00436 Q_PROPERTY( QString prefix READ prefix WRITE setPrefix )
00437 Q_PROPERTY( QString specialValueText READ specialValueText WRITE setSpecialValueText )
00438 Q_PROPERTY( int precision READ precision WRITE setPrecision )
00439
00440 public:
00445 KDoubleNumInput(QWidget *parent=0, const char *name=0);
00446
00455 KDoubleNumInput(double value, QWidget *parent=0, const char *name=0) KDE_DEPRECATED;
00456
00469 KDoubleNumInput(double lower, double upper, double value, double step=0.01,
00470 int precision=2, QWidget *parent=0, const char *name=0);
00471
00475 virtual ~KDoubleNumInput();
00476
00488 KDoubleNumInput(KNumInput* below, double value, QWidget* parent=0, const char* name=0) KDE_DEPRECATED;
00489
00511 KDoubleNumInput(KNumInput* below,
00512 double lower, double upper, double value, double step=0.02,
00513 int precision=2, QWidget *parent=0, const char *name=0);
00514
00518 double value() const;
00519
00524 QString suffix() const;
00525
00530 QString prefix() const;
00531
00536 int precision() const;
00537
00542 QString specialValueText() const { return m_specialvalue; }
00543
00550 void setRange(double min, double max, double step=1, bool slider=true);
00554 void setMinValue(double min);
00558 double minValue() const;
00562 void setMaxValue(double max);
00566 double maxValue() const;
00567
00571 void setPrecision(int precision);
00572
00577 double referencePoint() const;
00578
00583 double relativeValue() const;
00584
00591 void setSpecialValueText(const QString& text);
00592
00593 virtual void setLabel(const QString & label, int a = AlignLeft | AlignTop);
00594 virtual QSize minimumSizeHint() const;
00595 virtual bool eventFilter(QObject*, QEvent*);
00596
00597 public slots:
00601 void setValue(double);
00602
00607 void setRelativeValue(double);
00608
00615 void setReferencePoint(double ref);
00616
00624 void setSuffix(const QString &suffix);
00625
00632 void setPrefix(const QString &prefix);
00633
00634 signals:
00639 void valueChanged(double);
00647 void relativeValueChanged(double);
00648
00649 private slots:
00650 void sliderMoved(int);
00651 void slotEmitRelativeValueChanged(double);
00652
00653 protected:
00654 virtual void doLayout();
00655 void resizeEvent ( QResizeEvent * );
00656
00657 virtual void resetEditBox();
00658
00659
00660 KDoubleLine* edit;
00661
00662 bool m_range;
00663 double m_lower, m_upper, m_step;
00664
00665
00666 QSize m_sizeEdit;
00667
00668 friend class KDoubleLine;
00669 private:
00670 void init(double value, double lower, double upper,
00671 double step, int precision);
00672 double mapSliderToSpin(int) const;
00673 void updateLegacyMembers();
00674
00675 QString m_specialvalue, m_prefix, m_suffix;
00676 double m_value;
00677 short m_precision;
00678
00679
00680 protected:
00681 virtual void virtual_hook( int id, void* data );
00682 private:
00683 class KDoubleNumInputPrivate;
00684 KDoubleNumInputPrivate *d;
00685 };
00686
00687
00688
00689
00699 class KIntSpinBox : public QSpinBox
00700 {
00701 Q_OBJECT
00702 Q_PROPERTY( int base READ base WRITE setBase )
00703
00704 public:
00705
00713 KIntSpinBox( QWidget *parent=0, const char *name=0);
00714
00729 KIntSpinBox(int lower, int upper, int step, int value, int base = 10,
00730 QWidget* parent = 0, const char* name = 0);
00731
00735 virtual ~KIntSpinBox();
00736
00740 void setBase(int base);
00744 int base() const;
00749 void setEditFocus(bool mark);
00750
00751 protected:
00752
00757 virtual QString mapValueToText(int);
00758
00763 virtual int mapTextToValue(bool*);
00764
00765 private:
00766 int val_base;
00767 protected:
00768 virtual void virtual_hook( int id, void* data );
00769 private:
00770 class KIntSpinBoxPrivate;
00771 KIntSpinBoxPrivate *d;
00772 };
00773
00774
00775
00776
00825 class KDoubleSpinBox : public QSpinBox {
00826 Q_OBJECT
00827 Q_PROPERTY( bool acceptLocalizedNumbers READ acceptLocalizedNumbers WRITE setAcceptLocalizedNumbers )
00828 Q_OVERRIDE( double maxValue READ maxValue WRITE setMaxValue )
00829 Q_OVERRIDE( double minValue READ minValue WRITE setMinValue )
00830 Q_OVERRIDE( double lineStep READ lineStep WRITE setLineStep )
00831 Q_OVERRIDE( double value READ value WRITE setValue )
00832 Q_PROPERTY( int precision READ precision WRITE setPrecision )
00833
00834 public:
00838 KDoubleSpinBox( QWidget * parent=0, const char * name=0 );
00842 KDoubleSpinBox( double lower, double upper, double step, double value,
00843 int precision=2, QWidget * parent=0, const char * name=0 );
00844
00845 virtual ~KDoubleSpinBox();
00846
00848 bool acceptLocalizedNumbers() const;
00851 virtual void setAcceptLocalizedNumbers( bool accept );
00852
00856 void setRange( double lower, double upper, double step=0.01, int precision=2 );
00857
00859 int precision() const;
00863 void setPrecision( int precision );
00876 virtual void setPrecision( int precision, bool force );
00877
00879 double value() const;
00881 double minValue() const;
00888 void setMinValue( double value );
00890 double maxValue() const;
00897 void setMaxValue( double value );
00898
00900 double lineStep() const;
00905 void setLineStep( double step );
00906
00908 void setValidator( const QValidator * );
00909
00910 signals:
00912 void valueChanged( double value );
00913
00914 public slots:
00918 virtual void setValue( double value );
00919
00920 protected:
00921 virtual QString mapValueToText(int);
00922 virtual int mapTextToValue(bool*);
00923
00924 protected slots:
00925 void slotValueChanged( int value );
00926
00927 protected:
00928 virtual void virtual_hook( int id, void* data );
00929 private:
00930 typedef QSpinBox base;
00931 void updateValidator();
00932 int maxPrecision() const;
00933
00934 class Private;
00935 Private * d;
00936 };
00937
00938 #endif // K_NUMINPUT_H