@@ -77,15 +77,21 @@ QgsNewMemoryLayerDialog::QgsNewMemoryLayerDialog( QWidget *parent, Qt::WindowFla
77
77
mTypeBox ->addItem ( QgsApplication::getThemeIcon ( QStringLiteral ( " /mIconFieldDate.svg" ) ), tr ( " Date" ), " date" );
78
78
mTypeBox ->addItem ( QgsApplication::getThemeIcon ( QStringLiteral ( " /mIconFieldTime.svg" ) ), tr ( " Time" ), " time" );
79
79
mTypeBox ->addItem ( QgsApplication::getThemeIcon ( QStringLiteral ( " /mIconFieldDateTime.svg" ) ), tr ( " Date & time" ), " datetime" );
80
+ mTypeBox ->addItem ( QgsApplication::getThemeIcon ( QStringLiteral ( " /mIconFieldBinary.svg" ) ), tr ( " Binary (BLOB)" ), " binary" );
81
+ mTypeBox_currentIndexChanged ( 1 );
80
82
81
83
mWidth ->setValidator ( new QIntValidator ( 1 , 255 , this ) );
82
- mPrecision ->setValidator ( new QIntValidator ( 0 , 15 , this ) );
84
+ mPrecision ->setValidator ( new QIntValidator ( 0 , 30 , this ) );
85
+
86
+ mAddAttributeButton ->setEnabled ( false );
87
+ mRemoveAttributeButton ->setEnabled ( false );
83
88
84
89
mOkButton = mButtonBox ->button ( QDialogButtonBox::Ok );
85
90
mOkButton ->setEnabled ( false );
86
91
87
92
connect ( mGeometryTypeBox , static_cast <void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this , &QgsNewMemoryLayerDialog::geometryTypeChanged );
88
93
connect ( mFieldNameEdit , &QLineEdit::textChanged, this , &QgsNewMemoryLayerDialog::fieldNameChanged );
94
+ connect ( mTypeBox , static_cast <void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this , &QgsNewMemoryLayerDialog::mTypeBox_currentIndexChanged );
89
95
connect ( mAttributeView , &QTreeWidget::itemSelectionChanged, this , &QgsNewMemoryLayerDialog::selectionChanged );
90
96
connect ( mAddAttributeButton , &QToolButton::clicked, this , &QgsNewMemoryLayerDialog::mAddAttributeButton_clicked );
91
97
connect ( mRemoveAttributeButton , &QToolButton::clicked, this , &QgsNewMemoryLayerDialog::mRemoveAttributeButton_clicked );
@@ -123,6 +129,69 @@ void QgsNewMemoryLayerDialog::geometryTypeChanged( int )
123
129
mOkButton ->setEnabled ( ok );
124
130
}
125
131
132
+ void QgsNewMemoryLayerDialog::mTypeBox_currentIndexChanged ( int index )
133
+ {
134
+ switch ( index )
135
+ {
136
+ case 0 : // Text data
137
+ if ( mWidth ->text ().toInt () < 1 || mWidth ->text ().toInt () > 255 )
138
+ mWidth ->setText ( QStringLiteral ( " 255" ) );
139
+ mPrecision ->clear ();
140
+ mPrecision ->setEnabled ( false );
141
+ mWidth ->setValidator ( new QIntValidator ( 1 , 255 , this ) );
142
+ break ;
143
+ case 1 : // Whole number
144
+ if ( mWidth ->text ().toInt () < 1 || mWidth ->text ().toInt () > 10 )
145
+ mWidth ->setText ( QStringLiteral ( " 10" ) );
146
+ mPrecision ->clear ();
147
+ mPrecision ->setEnabled ( false );
148
+ mWidth ->setValidator ( new QIntValidator ( 1 , 10 , this ) );
149
+ break ;
150
+ case 2 : // Decimal number
151
+ if ( mWidth ->text ().toInt () < 1 || mWidth ->text ().toInt () > 30 )
152
+ mWidth ->setText ( QStringLiteral ( " 30" ) );
153
+ if ( mPrecision ->text ().toInt () < 1 || mPrecision ->text ().toInt () > 30 )
154
+ mPrecision ->setText ( QStringLiteral ( " 6" ) );
155
+ mPrecision ->setEnabled ( true );
156
+ mWidth ->setValidator ( new QIntValidator ( 1 , 20 , this ) );
157
+ break ;
158
+ case 3 : // Boolean
159
+ mWidth ->clear ();
160
+ mWidth ->setEnabled ( false );
161
+ mPrecision ->clear ();
162
+ mPrecision ->setEnabled ( false );
163
+ break ;
164
+ case 4 : // Date
165
+ mWidth ->clear ();
166
+ mWidth ->setEnabled ( false );
167
+ mPrecision ->clear ();
168
+ mPrecision ->setEnabled ( false );
169
+ break ;
170
+ case 5 : // Time
171
+ mWidth ->clear ();
172
+ mWidth ->setEnabled ( false );
173
+ mPrecision ->clear ();
174
+ mPrecision ->setEnabled ( false );
175
+ break ;
176
+ case 6 : // Datetime
177
+ mWidth ->clear ();
178
+ mWidth ->setEnabled ( false );
179
+ mPrecision ->clear ();
180
+ mPrecision ->setEnabled ( false );
181
+ break ;
182
+ case 7 : // Binary
183
+ mWidth ->clear ();
184
+ mWidth ->setEnabled ( false );
185
+ mPrecision ->clear ();
186
+ mPrecision ->setEnabled ( false );
187
+ break ;
188
+
189
+ default :
190
+ QgsDebugMsg ( QStringLiteral ( " unexpected index" ) );
191
+ break ;
192
+ }
193
+ }
194
+
126
195
void QgsNewMemoryLayerDialog::setCrs ( const QgsCoordinateReferenceSystem &crs )
127
196
{
128
197
mCrsSelector ->setCrs ( crs );
0 commit comments