@@ -36,7 +36,7 @@ QgsNewVectorLayerDialog::QgsNewVectorLayerDialog( QWidget *parent, Qt::WFlags fl
3636 mTypeBox ->addItem ( tr ( " Decimal number" ), " Real" );
3737
3838 mWidth ->setValidator ( new QIntValidator ( 1 , 255 , this ) );
39- mPrecision ->setValidator ( new QIntValidator ( 0 , 20 , this ) );
39+ mPrecision ->setValidator ( new QIntValidator ( 0 , 5 , this ) );
4040
4141 mPointRadioButton ->setChecked ( true );
4242 mFileFormatComboBox ->addItem ( tr ( " ESRI Shapefile" ), " ESRI Shapefile" );
@@ -65,7 +65,33 @@ QgsNewVectorLayerDialog::~QgsNewVectorLayerDialog()
6565
6666void QgsNewVectorLayerDialog::on_mTypeBox_currentIndexChanged ( int index )
6767{
68- mPrecision ->setEnabled ( index == 2 ); // Real
68+ // FIXME: sync with providers/ogr/qgsogrprovider.cpp
69+ switch ( index )
70+ {
71+ case 0 : // Text data
72+ mWidth ->setValidator ( new QIntValidator ( 1 , 255 , this ) );
73+ mPrecision ->setEnabled ( false );
74+ break ;
75+
76+ case 1 : // Whole number
77+ if ( mWidth ->text ().toInt () > 10 )
78+ mWidth ->setText ( " 10" );
79+ mPrecision ->setEnabled ( false );
80+ mWidth ->setValidator ( new QIntValidator ( 1 , 10 , this ) );
81+ break ;
82+
83+ case 2 : // Decimal number
84+ if ( mWidth ->text ().toInt () > 20 )
85+ mWidth ->setText ( " 20" );
86+ mPrecision ->setEnabled ( false );
87+ mWidth ->setValidator ( new QIntValidator ( 1 , 20 , this ) );
88+ mPrecision ->setEnabled ( true );
89+ break ;
90+
91+ default :
92+ QgsDebugMsg ( " unexpected index" );
93+ break ;
94+ }
6995}
7096
7197QGis::WkbType QgsNewVectorLayerDialog::selectedType () const
0 commit comments