9 #include <qguardedptr.h>
11 #include <DDS_DicItem.h>
20 class Handle(DDS_Dictionary);
22 class QDS_EXPORT QDS_Datum : public QObject, public QDS
29 QDS_Datum( const QString&, QWidget* = 0, const int = All, const QString& = QString::null );
34 QString label() const;
35 QString units() const;
36 QString filter() const;
37 QString format() const;
38 QString longDescription() const;
39 QString shortDescription() const;
41 QString defaultValue() const;
42 QString minimumValue() const;
43 QString maximumValue() const;
45 virtual QVariant value() const;
47 virtual QString stringValue() const;
48 virtual double doubleValue() const;
49 virtual int integerValue() const;
53 virtual bool isEmpty() const;
58 virtual void setValue( const QVariant& );
60 virtual void setStringValue( const QString& );
61 virtual void setDoubleValue( const double );
62 virtual void setIntegerValue( const int );
64 virtual bool isEnabled( const int = Control ) const;
65 virtual void setEnabled( const bool, const int );
67 void show( const int = -1 );
68 void hide( const int = -1 );
69 void setShown( const bool, const int = -1 );
71 QWidget* widget( const int ) const;
74 virtual bool isValid( const bool = true,
75 const QString& = QString::null,
76 const QString& = QString::null ) const;
77 virtual QValidator* validator( const bool = false ) const;
79 void addTo( QVBoxLayout* );
80 void addTo( QHBoxLayout* );
81 void addTo( QGridLayout*, const int, const int, const bool = false );
83 virtual void setAlignment( const int, const int = Label );
85 static QString unitsToText( const QString& );
86 static QString textToUnits( const QString& );
88 static QString format( const QString&, const QString&, const bool = false );
89 static QString format( const int, const QString&, const bool = false );
90 static QString format( const double, const QString&, const bool = false );
91 static QString units( const QString& );
93 virtual bool eventFilter( QObject*, QEvent* );
95 operator QWidget*() const;
99 void paramChanged( QString& );
102 void setEnabled( bool );
105 virtual void onParamChanged();
109 void onDestroyed( QObject* );
112 QLabel* labelWidget() const;
113 QLabel* unitsWidget() const;
114 QWidget* controlWidget() const;
116 Handle(DDS_DicItem) dicItem() const;
117 void setDicItem( const Handle(DDS_DicItem)& );
121 void invalidateCache();
123 virtual QLabel* createLabel( QWidget* );
124 virtual QLabel* createUnits( QWidget* );
125 virtual QWidget* createControl( QWidget* ) = 0;
127 virtual QString getString() const = 0;
128 virtual void setString( const QString& ) = 0;
130 virtual bool validate( const QString& ) const;
132 QString prefix() const;
133 QString suffix() const;
134 virtual QString minValue() const;
135 virtual QString maxValue() const;
137 static QString format( const QString&, const int, const int );
138 static QString format( const QString&, const int, const double );
139 static QString format( const QString&, const int, const QString& );
141 static QString sprintf( const QString&, const int );
142 static QString sprintf( const QString&, const double );
143 static QString sprintf( const QString&, const QString& );
145 virtual void unitSystemChanged( const QString& );
147 void initDatum() const;
152 Wrapper* wrapper( QWidget* ) const;
153 Wrapper* wrapper( const int ) const;
154 int wrapperType( Wrapper* ) const;
156 static QString removeAccel( const QString& );
157 static bool isDoubleFormat( const QString& );
158 static QString canonicalFormat( const QString& );
159 static QString canonicalFormat( const QString&, QString& );
162 typedef QGuardedPtr<QLabel> GuardedLabel;
163 typedef QGuardedPtr<QWidget> GuardedWidget;
168 Handle(DDS_DicItem) myDicItem;
169 QMap<int, Wrapper*> myWrapper;
171 GuardedLabel myLabel;
172 GuardedLabel myUnits;
173 GuardedWidget myControl;
175 QString mySourceValue;
176 QString myTargetValue;