Salome HOME
Libraries for several kinds of controls (line edit, spinbox, combobox, ...). These...
[modules/gui.git] / src / QDS / QDS_Validator.cxx
1 #include "QDS_Validator.h"
2
3 /*!
4     Class: QDS_IntegerValidator
5 */
6
7 QDS_IntegerValidator::QDS_IntegerValidator( QObject* p )
8 : QIntValidator( p )
9 {
10 }
11
12 QDS_IntegerValidator::QDS_IntegerValidator( const QString& f, QObject* p )
13 : QIntValidator( p ),
14 myFilter( f )
15 {
16 }
17
18 QDS_IntegerValidator::~QDS_IntegerValidator()
19 {
20 }
21
22 QValidator::State QDS_IntegerValidator::validate( QString& input, int& pos ) const
23 {
24   State rgState = Acceptable;
25   State ivState = QIntValidator::validate( input, pos );
26   if ( ivState != Invalid && !myFilter.isEmpty() )
27     rgState = QRegExpValidator( QRegExp( myFilter ), 0 ).validate( input, pos );
28
29   ivState = QMIN( ivState, rgState );
30
31   return ivState;
32 }
33
34 /*!
35     Class: QDS_DoubleValidator
36 */
37
38 QDS_DoubleValidator::QDS_DoubleValidator( QObject* p )
39 : QDoubleValidator( p )
40 {
41 }
42
43 QDS_DoubleValidator::QDS_DoubleValidator( const QString& f, QObject* p )
44 : QDoubleValidator( p ),
45 myFilter( f )
46 {
47 }
48
49 QDS_DoubleValidator::~QDS_DoubleValidator()
50 {
51 }
52
53 QValidator::State QDS_DoubleValidator::validate( QString& input, int& pos ) const
54 {
55   State rgState = Acceptable;
56   State dvState = QDoubleValidator::validate( input, pos );
57   if ( dvState != Invalid && !myFilter.isEmpty() )
58     rgState = QRegExpValidator( QRegExp( myFilter ), 0 ).validate( input, pos );
59
60   dvState = QMIN( dvState, rgState );
61
62   return dvState;
63 }
64
65 /*!
66     Class: QDS_StringValidator
67 */
68
69 QDS_StringValidator::QDS_StringValidator( QObject* p ) 
70 : QValidator( p ), 
71 myLen( -1 ) 
72 {
73 }
74
75 QDS_StringValidator::QDS_StringValidator( const QString& f, QObject* p ) 
76 : QValidator( p ), 
77 myFlags( f ), 
78 myLen( -1 ) 
79 {
80 }
81
82 QDS_StringValidator::QDS_StringValidator( const QString& ft, const QString& fg, QObject* p ) 
83 : QValidator( p ), 
84 myLen( -1 ), 
85 myFilter( ft ), 
86 myFlags( fg ) 
87 {
88 }
89
90 QDS_StringValidator::~QDS_StringValidator() 
91 {
92 }
93
94 int QDS_StringValidator::length() const 
95
96   return myLen; 
97 }
98
99 void QDS_StringValidator::setLength( const int l ) 
100
101   myLen = l; 
102 }
103
104 QValidator::State QDS_StringValidator::validate( QString& input, int& pos ) const
105 {
106   if ( input.isEmpty() )
107     return Acceptable;
108
109   QString orig = input;
110   if ( myFlags.contains( 'u', false ) )
111     input = input.upper();
112   if ( myFlags.contains( 'l', false ) )
113     input = input.lower();
114
115   State rgState = Acceptable;
116   State svState = orig == input ? Acceptable : Intermediate;
117
118   if ( myLen >= 0 && (int)input.length() > myLen )
119       svState = Intermediate;
120
121   if ( !myFilter.isEmpty() )
122     rgState = QRegExpValidator( QRegExp( myFilter ), 0 ).validate( input, pos );
123
124   svState = QMIN( svState, rgState );
125
126   return svState;
127 }