00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef KPTDURATIONWIDGET_H
00021 #define KPTDURATIONWIDGET_H
00022
00023 #include "ui_kptdurationwidget.h"
00024
00025 #include <QFrame>
00026
00027 #include "kptduration.h"
00028
00029 class QRegExpValidator;
00030 class QLineEdit;
00031 class QLabel;
00032 class QString;
00033
00034 namespace KPlato
00035 {
00036
00037 class DurationWidget : public QFrame, public Ui_DurationWidget
00038 {
00039 Q_OBJECT
00040 public:
00041 enum { Days = 0x1, Hours = 0x2, Minutes = 0x4, Seconds = 0x8, Milliseconds = 0x10 } Fields;
00042
00043 DurationWidget(QWidget *parent=0);
00044 ~DurationWidget();
00045
00049 struct FieldDescriptor
00050 {
00051
00052 QLineEdit *left;
00053 double leftScale;
00054
00055
00056 QLineEdit *current;
00057 const char *format;
00058
00059
00060 QLineEdit *right;
00061 double rightScale;
00062
00063
00064 QLabel *separator;
00065
00066
00067 double fullScale;
00068 double scale;
00069
00070
00071 QLabel *unit;
00072 };
00073
00074 Duration value() const;
00075
00076 void setVisibleFields( int fieldMask );
00077 int visibleFields();
00078 void setFieldLeftscale(int f, double ls);
00079 void setFieldRightscale(int f, double rs);
00080 void setFieldScale(int f, double scale);
00081 void setFieldUnit(int f, QString unit);
00082
00083 signals:
00084 void valueChanged();
00085
00086 public slots:
00087 virtual void setValue( const KPlato::Duration & newDuration );
00088 virtual void handleLostFocus( int field );
00089
00090 private:
00091 QString m_decimalPoint;
00092 QRegExpValidator *m_validator;
00093 struct FieldDescriptor *m_fields;
00094
00095 qint64 setValueMilliseconds( qint64 milliseconds );
00096 qint64 setValueSeconds( qint64 seconds );
00097 qint64 setValueMinutes( qint64 mins );
00098 qint64 setValueHours( qint64 mins );
00099 qint64 setValueDays( qint64 mins );
00100 double power( double m, int e );
00101 double fraction( QString number, int * exp );
00102
00103 private slots:
00104 virtual void dddLostFocus();
00105 virtual void hhLostFocus();
00106 virtual void mmLostFocus();
00107 virtual void ssLostFocus();
00108 virtual void msLostFocus();
00109
00110 };
00111
00112 }
00113
00114 #endif