koUnitWidgets.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __KOUNITWIDGETS_H__
00022 #define __KOUNITWIDGETS_H__
00023
00024 #include <knuminput.h>
00025 #include <knumvalidator.h>
00026 #include <klineedit.h>
00027 #include <kcombobox.h>
00028 #include <koUnit.h>
00029
00030 class KoUnitDoubleBase;
00031
00032 class KoUnitDoubleValidator : public KDoubleValidator
00033 {
00034 public:
00035 KoUnitDoubleValidator( KoUnitDoubleBase *base, QObject *parent, const char *name = 0 );
00036
00037 virtual QValidator::State validate( QString &, int & ) const;
00038
00039 private:
00040 KoUnitDoubleBase *m_base;
00041 };
00042
00043 class KoUnitDoubleBase
00044 {
00045 public:
00046 KoUnitDoubleBase( KoUnit::Unit unit, unsigned int precision ) : m_unit( unit ), m_precision( precision ) {}
00047 virtual ~KoUnitDoubleBase() {}
00048
00049 virtual void changeValue( double ) = 0;
00050 virtual void setUnit( KoUnit::Unit = KoUnit::U_PT ) = 0;
00051
00052 void setValueInUnit( double value, KoUnit::Unit unit )
00053 {
00054 changeValue( KoUnit::ptToUnit( KoUnit::ptFromUnit( value, unit ), m_unit ) );
00055 }
00056
00057 void setPrecision( unsigned int precision ) { m_precision = precision; };
00058
00059 protected:
00060 friend class KoUnitDoubleValidator;
00061
00067 QString getVisibleText( double value ) const;
00074 static double toDouble( const QString& str, bool* ok );
00075
00076 KoUnitDoubleValidator *m_validator;
00077 KoUnit::Unit m_unit;
00078 unsigned int m_precision;
00079 };
00080
00081 class KoUnitDoubleSpinBox : public KDoubleSpinBox, public KoUnitDoubleBase
00082 {
00083 public:
00084 KoUnitDoubleSpinBox( QWidget *parent, double lower, double upper, double step, double value = 0.0,
00085 KoUnit::Unit unit = KoUnit::U_PT, unsigned int precision = 2, const char *name = 0 );
00086
00087 virtual void changeValue( double );
00088 virtual void setUnit( KoUnit::Unit = KoUnit::U_PT );
00089 };
00090
00091 class KoUnitDoubleLineEdit : public KLineEdit, public KoUnitDoubleBase
00092 {
00093 public:
00094 KoUnitDoubleLineEdit( QWidget *parent, double lower, double upper, double value = 0.0, KoUnit::Unit unit = KoUnit::U_PT, unsigned int precision = 2, const char *name = 0 );
00095
00096 virtual void changeValue( double );
00097 virtual void setUnit( KoUnit::Unit = KoUnit::U_PT );
00098
00099 double value() const { return m_value; }
00100
00101 protected:
00102 bool eventFilter( QObject* obj, QEvent* ev );
00103
00104 private:
00105 double m_value;
00106 double m_lower;
00107 double m_upper;
00108 };
00109
00110 class KoUnitDoubleComboBox : public KComboBox, public KoUnitDoubleBase
00111 {
00112 Q_OBJECT
00113 public:
00114 KoUnitDoubleComboBox( QWidget *parent, double lower, double upper, double value = 0.0, KoUnit::Unit unit = KoUnit::U_PT, unsigned int precision = 2, const char *name = 0 );
00115
00116 virtual void changeValue( double );
00117 void updateValue( double );
00118 virtual void setUnit( KoUnit::Unit = KoUnit::U_PT );
00119
00120 double value() const { return m_value; }
00121 void insertItem( double, int index = -1 );
00122
00123 protected:
00124 bool eventFilter( QObject* obj, QEvent* ev );
00125
00126 signals:
00127 void valueChanged(double);
00128
00129 private slots:
00130 void slotActivated( int );
00131
00132 protected:
00133 double m_value;
00134 double m_lower;
00135 double m_upper;
00136 };
00137
00138 class KoUnitDoubleSpinComboBox : public QWidget
00139 {
00140 Q_OBJECT
00141 public:
00142 KoUnitDoubleSpinComboBox( QWidget *parent, double lower, double upper, double step, double value = 0.0, KoUnit::Unit unit = KoUnit::U_PT, unsigned int precision = 2, const char *name = 0 );
00143
00144 void insertItem( double, int index = -1 );
00145 void updateValue( double );
00146 double value() const;
00147
00148 signals:
00149 void valueChanged(double);
00150
00151 private slots:
00152 void slotUpClicked();
00153 void slotDownClicked();
00154
00155 private:
00156 KoUnitDoubleComboBox *m_combo;
00157 double m_step;
00158 };
00159
00160 #endif
00161
This file is part of the documentation for lib Library Version 1.3.5.