29
29
#include " qgslonglongvalidator.h"
30
30
#include " qgsfield.h"
31
31
32
- QgsFieldValidator::QgsFieldValidator ( QObject *parent, const QgsField &field, QString dateFormat )
32
+ QgsFieldValidator::QgsFieldValidator ( QObject *parent, const QgsField &field, QString defaultValue, QString dateFormat )
33
33
: QValidator( parent )
34
34
, mField( field )
35
+ , mDefaultValue( defaultValue )
35
36
, mDateFormat( dateFormat )
36
37
{
37
38
switch ( mField .type () )
@@ -105,6 +106,9 @@ QValidator::State QgsFieldValidator::validate( QString &s, int &i ) const
105
106
return Acceptable;
106
107
}
107
108
109
+ if ( s == mDefaultValue )
110
+ return Acceptable;
111
+
108
112
// delegate to the child validator if any
109
113
if ( mValidator )
110
114
{
@@ -115,10 +119,10 @@ QValidator::State QgsFieldValidator::validate( QString &s, int &i ) const
115
119
{
116
120
// allow to enter the NULL representation, which might be
117
121
// longer than the actual field
118
- if ( mNullValue .size () > 0 &&
119
- s. size () > 0 &&
120
- s. size () < mNullValue . size () &&
121
- s == mNullValue .left ( s.size () ) )
122
+ if ( mNullValue .size () > 0 && s. size () > 0 && s. size () < mNullValue . size () && s == mNullValue . left ( s. size () ) )
123
+ return Intermediate;
124
+
125
+ if ( mDefaultValue . size () > 0 && s. size () > 0 && s. size () < mDefaultValue . size () && s == mDefaultValue .left ( s.size () ) )
122
126
return Intermediate;
123
127
124
128
if ( s == mNullValue )
@@ -146,7 +150,7 @@ void QgsFieldValidator::fixup( QString &s ) const
146
150
{
147
151
mValidator ->fixup ( s );
148
152
}
149
- else if ( mField .type () == QVariant::String && mField .length () > 0 && s.size () > mField .length () )
153
+ else if ( mField .type () == QVariant::String && mField .length () > 0 && s.size () > mField .length () && s != mDefaultValue )
150
154
{
151
155
// if the value is longer, this must be a partial NULL representation
152
156
s = mNullValue ;
0 commit comments