8 #include <qguardedptr.h>
10 #include <DDS_DicItem.h>
19 class Handle(DDS_Dictionary);
21 class QDS_EXPORT QDS_Datum : public QObject, public QDS
28 QDS_Datum( const QString&, QWidget* = 0, const int = All, const QString& = QString::null );
33 QString label() const;
34 QString units() const;
35 QString filter() const;
36 QString format() const;
37 QString longDescription() const;
38 QString shortDescription() const;
40 QString defaultValue() const;
41 QString minimumValue() const;
42 QString maximumValue() const;
44 virtual QString stringValue() const;
45 virtual double doubleValue() const;
46 virtual int integerValue() const;
50 virtual bool isEmpty() const;
55 virtual void setStringValue( const QString& );
56 virtual void setDoubleValue( const double );
57 virtual void setIntegerValue( const int );
59 virtual bool isEnabled( const int = Control ) const;
60 virtual void setEnabled( const bool, const int );
62 void show( const int = -1 );
63 void hide( const int = -1 );
64 void setShown( const bool, const int = -1 );
66 QWidget* widget( const int ) const;
69 virtual bool isValid( const bool = true,
70 const QString& = QString::null,
71 const QString& = QString::null ) const;
72 virtual QValidator* validator( const bool = false ) const;
74 void addTo( QVBoxLayout* );
75 void addTo( QHBoxLayout* );
76 void addTo( QGridLayout*, const int, const int, const bool = false );
78 virtual void setAlignment( const int, const int = Label );
80 static QString unitsToText( const QString& );
81 static QString textToUnits( const QString& );
83 static QString format( const QString&, const QString&, const bool = false );
84 static QString format( const int, const QString&, const bool = false );
85 static QString format( const double, const QString&, const bool = false );
86 static QString units( const QString& );
88 virtual bool eventFilter( QObject*, QEvent* );
92 void paramChanged( QString& );
95 void setEnabled( bool );
98 virtual void onParamChanged();
102 void onDestroyed( QObject* );
105 QLabel* labelWidget() const;
106 QLabel* unitsWidget() const;
107 QWidget* controlWidget() const;
109 Handle(DDS_DicItem) dicItem() const;
110 void setDicItem( const Handle(DDS_DicItem)& );
114 void invalidateCache();
116 virtual QLabel* createLabel( QWidget* );
117 virtual QLabel* createUnits( QWidget* );
118 virtual QWidget* createControl( QWidget* ) = 0;
120 virtual QString getString() const = 0;
121 virtual void setString( const QString& ) = 0;
123 virtual bool validate( const QString& ) const;
125 QString prefix() const;
126 QString suffix() const;
127 virtual QString minValue() const;
128 virtual QString maxValue() const;
130 static QString format( const QString&, const int, const int );
131 static QString format( const QString&, const int, const double );
132 static QString format( const QString&, const int, const QString& );
134 static QString sprintf( const QString&, const int );
135 static QString sprintf( const QString&, const double );
136 static QString sprintf( const QString&, const QString& );
138 virtual void unitSystemChanged( const QString& );
142 void initDatum() const;
144 Wrapper* wrapper( QWidget* ) const;
145 Wrapper* wrapper( const int ) const;
146 int wrapperType( Wrapper* ) const;
148 static QString removeAccel( const QString& );
149 static bool isDoubleFormat( const QString& );
150 static QString canonicalFormat( const QString& );
151 static QString canonicalFormat( const QString&, QString& );
154 typedef QGuardedPtr<QLabel> GuardedLabel;
155 typedef QGuardedPtr<QWidget> GuardedWidget;
160 Handle(DDS_DicItem) myDicItem;
161 QMap<int, Wrapper*> myWrapper;
163 GuardedLabel myLabel;
164 GuardedLabel myUnits;
165 GuardedWidget myControl;
167 QString mySourceValue;
168 QString myTargetValue;