@@ -240,16 +240,17 @@ void QgsAttributesFormProperties::loadAttributeTypeDialog()
240
240
delete mAttributeTypeDialog ;
241
241
mAttributeTypeDialog = new QgsAttributeTypeDialog ( mLayer , index, mAttributeTypeFrame );
242
242
243
+ QgsFieldConstraints constraints = cfg.mFieldConstraints ;
244
+
243
245
mAttributeTypeDialog ->setAlias ( cfg.mAlias );
244
246
mAttributeTypeDialog ->setComment ( cfg.mComment );
245
247
mAttributeTypeDialog ->setFieldEditable ( cfg.mEditable );
246
248
mAttributeTypeDialog ->setLabelOnTop ( cfg.mLabelOnTop );
247
- mAttributeTypeDialog ->setNotNull ( cfg. mConstraints & QgsFieldConstraints::ConstraintNotNull );
248
- mAttributeTypeDialog ->setNotNullEnforced ( cfg. mConstraintStrength . value ( QgsFieldConstraints::ConstraintNotNull, QgsFieldConstraints::ConstraintStrengthHard ) == QgsFieldConstraints::ConstraintStrengthHard );
249
- mAttributeTypeDialog ->setUnique ( cfg. mConstraints & QgsFieldConstraints::ConstraintUnique );
250
- mAttributeTypeDialog ->setUniqueEnforced ( cfg. mConstraintStrength . value ( QgsFieldConstraints::ConstraintUnique, QgsFieldConstraints::ConstraintStrengthHard ) == QgsFieldConstraints::ConstraintStrengthHard );
249
+ mAttributeTypeDialog ->setNotNull ( constraints. constraints () & QgsFieldConstraints::ConstraintNotNull );
250
+ mAttributeTypeDialog ->setNotNullEnforced ( constraints. constraintStrength ( QgsFieldConstraints::ConstraintNotNull ) == QgsFieldConstraints::ConstraintStrengthHard );
251
+ mAttributeTypeDialog ->setUnique ( constraints. constraints () & QgsFieldConstraints::ConstraintUnique );
252
+ mAttributeTypeDialog ->setUniqueEnforced ( constraints. constraintStrength ( QgsFieldConstraints::ConstraintUnique ) == QgsFieldConstraints::ConstraintStrengthHard );
251
253
252
- QgsFieldConstraints constraints = cfg.mFieldConstraints ;
253
254
QgsFieldConstraints::Constraints providerConstraints = nullptr ;
254
255
if ( constraints.constraintOrigin ( QgsFieldConstraints::ConstraintNotNull ) == QgsFieldConstraints::ConstraintOriginProvider )
255
256
providerConstraints |= QgsFieldConstraints::ConstraintNotNull;
@@ -259,9 +260,9 @@ void QgsAttributesFormProperties::loadAttributeTypeDialog()
259
260
providerConstraints |= QgsFieldConstraints::ConstraintExpression;
260
261
mAttributeTypeDialog ->setProviderConstraints ( providerConstraints );
261
262
262
- mAttributeTypeDialog ->setConstraintExpression ( cfg. mConstraint );
263
- mAttributeTypeDialog ->setConstraintExpressionDescription ( cfg. mConstraintDescription );
264
- mAttributeTypeDialog ->setConstraintExpressionEnforced ( cfg. mConstraintStrength . value ( QgsFieldConstraints::ConstraintExpression, QgsFieldConstraints::ConstraintStrengthHard ) == QgsFieldConstraints::ConstraintStrengthHard );
263
+ mAttributeTypeDialog ->setConstraintExpression ( constraints. constraintExpression () );
264
+ mAttributeTypeDialog ->setConstraintExpressionDescription ( constraints. constraintDescription () );
265
+ mAttributeTypeDialog ->setConstraintExpressionEnforced ( constraints. constraintStrength ( QgsFieldConstraints::ConstraintExpression ) == QgsFieldConstraints::ConstraintStrengthHard );
265
266
mAttributeTypeDialog ->setDefaultValueExpression ( mLayer ->defaultValueDefinition ( index ).expression () );
266
267
mAttributeTypeDialog ->setApplyDefaultValueOnUpdate ( mLayer ->defaultValueDefinition ( index ).applyOnUpdate () );
267
268
@@ -287,54 +288,54 @@ void QgsAttributesFormProperties::storeAttributeTypeDialog()
287
288
cfg.mLabelOnTop = mAttributeTypeDialog ->labelOnTop ();
288
289
cfg.mAlias = mAttributeTypeDialog ->alias ();
289
290
290
- // confustion (will be removed): wir laden teilweise sachen einfach beim store anstelle des applys auf die mLayer - eingie Sachen laden wir auch vom layer anstatt über das cfg. wieso
291
- QgsFieldConstraints constraints = mLayer ->fields ().at ( mAttributeTypeDialog ->fieldIdx () ).constraints ();
292
- QgsFieldConstraints::Constraints providerConstraints = nullptr ;
293
- if ( constraints.constraintOrigin ( QgsFieldConstraints::ConstraintNotNull ) == QgsFieldConstraints::ConstraintOriginProvider )
294
- providerConstraints |= QgsFieldConstraints::ConstraintNotNull;
295
- if ( constraints.constraintOrigin ( QgsFieldConstraints::ConstraintUnique ) == QgsFieldConstraints::ConstraintOriginProvider )
296
- providerConstraints |= QgsFieldConstraints::ConstraintUnique;
297
- if ( constraints.constraintOrigin ( QgsFieldConstraints::ConstraintExpression ) == QgsFieldConstraints::ConstraintOriginProvider )
298
- providerConstraints |= QgsFieldConstraints::ConstraintExpression;
299
- cfg.mConstraints = nullptr ;
300
- if ( mAttributeTypeDialog ->notNull () && !( providerConstraints & QgsFieldConstraints::ConstraintNotNull ) )
291
+ QgsFieldConstraints constraints;
292
+ if ( mAttributeTypeDialog ->notNull () )
301
293
{
302
- cfg. mConstraints |= QgsFieldConstraints::ConstraintNotNull;
294
+ constraints. setConstraint ( QgsFieldConstraints::ConstraintNotNull ) ;
303
295
}
304
- if ( mAttributeTypeDialog ->unique () && !( providerConstraints & QgsFieldConstraints::ConstraintUnique ) )
296
+ else if ( mAttributeTypeDialog ->notNullFromProvider ( ) )
305
297
{
306
- cfg. mConstraints |= QgsFieldConstraints::ConstraintUnique ;
298
+ constraints. setConstraint ( QgsFieldConstraints::ConstraintNotNull, QgsFieldConstraints::ConstraintOriginProvider ) ;
307
299
}
308
- if ( !mAttributeTypeDialog ->constraintExpression ().isEmpty () && !( providerConstraints & QgsFieldConstraints::ConstraintExpression ) )
300
+
301
+ if ( mAttributeTypeDialog ->unique () )
302
+ {
303
+ constraints.setConstraint ( QgsFieldConstraints::ConstraintUnique );
304
+ }
305
+ else if ( mAttributeTypeDialog ->uniqueFromProvider () )
306
+ {
307
+ constraints.setConstraint ( QgsFieldConstraints::ConstraintUnique, QgsFieldConstraints::ConstraintOriginProvider );
308
+ }
309
+
310
+ if ( !mAttributeTypeDialog ->constraintExpression ().isEmpty () )
309
311
{
310
- cfg. mConstraints |= QgsFieldConstraints::ConstraintExpression;
312
+ constraints. setConstraint ( QgsFieldConstraints::ConstraintExpression ) ;
311
313
}
312
314
313
- cfg.mConstraintDescription = mAttributeTypeDialog ->constraintExpressionDescription ();
314
- cfg.mConstraint = mAttributeTypeDialog ->constraintExpression ();
315
+ constraints.setConstraintExpression ( mAttributeTypeDialog ->constraintExpressionDescription (), mAttributeTypeDialog ->constraintExpression () );
316
+
317
+ constraints.setConstraintStrength ( QgsFieldConstraints::ConstraintNotNull, mAttributeTypeDialog ->notNullEnforced () ?
318
+ QgsFieldConstraints::ConstraintStrengthHard : QgsFieldConstraints::ConstraintStrengthSoft );
319
+ constraints.setConstraintStrength ( QgsFieldConstraints::ConstraintUnique, mAttributeTypeDialog ->uniqueEnforced () ?
320
+ QgsFieldConstraints::ConstraintStrengthHard : QgsFieldConstraints::ConstraintStrengthSoft );
321
+ constraints.setConstraintStrength ( QgsFieldConstraints::ConstraintExpression, mAttributeTypeDialog ->constraintExpressionEnforced () ?
322
+ QgsFieldConstraints::ConstraintStrengthHard : QgsFieldConstraints::ConstraintStrengthSoft );
323
+
324
+ cfg.mFieldConstraints = constraints;
325
+
315
326
mLayer ->setDefaultValueDefinition ( mAttributeTypeDialog ->fieldIdx (), QgsDefaultValue ( mAttributeTypeDialog ->defaultValueExpression (), mAttributeTypeDialog ->applyDefaultValueOnUpdate () ) );
316
327
317
328
cfg.mEditorWidgetType = mAttributeTypeDialog ->editorWidgetType ();
318
329
cfg.mEditorWidgetConfig = mAttributeTypeDialog ->editorWidgetConfig ();
319
330
320
- cfg.mConstraintStrength .insert ( QgsFieldConstraints::ConstraintNotNull, mAttributeTypeDialog ->notNullEnforced () ?
321
- QgsFieldConstraints::ConstraintStrengthHard : QgsFieldConstraints::ConstraintStrengthSoft );
322
- cfg.mConstraintStrength .insert ( QgsFieldConstraints::ConstraintUnique, mAttributeTypeDialog ->uniqueEnforced () ?
323
- QgsFieldConstraints::ConstraintStrengthHard : QgsFieldConstraints::ConstraintStrengthSoft );
324
- cfg.mConstraintStrength .insert ( QgsFieldConstraints::ConstraintExpression, mAttributeTypeDialog ->constraintExpressionEnforced () ?
325
- QgsFieldConstraints::ConstraintStrengthHard : QgsFieldConstraints::ConstraintStrengthSoft );
326
-
327
331
QString fieldName = mLayer ->fields ().at ( mAttributeTypeDialog ->fieldIdx () ).name ();
328
332
329
- QTreeWidgetItemIterator itemIt ( mAvailableWidgetsTree );
330
- while ( *itemIt )
333
+ for ( auto itemIt = QTreeWidgetItemIterator ( mAvailableWidgetsTree ); *itemIt; ++itemIt )
331
334
{
332
335
QTreeWidgetItem *item = *itemIt;
333
336
if ( item->data ( 0 , FieldNameRole ).toString () == fieldName )
334
337
item->setData ( 0 , FieldConfigRole, QVariant::fromValue<FieldConfig>( cfg ) );
335
- ++itemIt;
336
338
}
337
-
338
339
}
339
340
340
341
@@ -696,28 +697,29 @@ void QgsAttributesFormProperties::apply()
696
697
697
698
editFormConfig.setReadOnly ( idx, !cfg.mEditable );
698
699
editFormConfig.setLabelOnTop ( idx, cfg.mLabelOnTop );
699
- mLayer ->setConstraintExpression ( idx, cfg.mConstraint , cfg.mConstraintDescription );
700
700
mLayer ->setEditorWidgetSetup ( idx, QgsEditorWidgetSetup ( cfg.mEditorWidgetType , cfg.mEditorWidgetConfig ) );
701
701
702
- if ( cfg.mConstraints & QgsFieldConstraints::ConstraintNotNull )
702
+ QgsFieldConstraints constraints = cfg.mFieldConstraints ;
703
+ mLayer ->setConstraintExpression ( idx, constraints.constraintExpression (), constraints.constraintDescription () );
704
+ if ( constraints.constraints () & QgsFieldConstraints::ConstraintNotNull )
703
705
{
704
- mLayer ->setFieldConstraint ( idx, QgsFieldConstraints::ConstraintNotNull, cfg. mConstraintStrength . value ( QgsFieldConstraints::ConstraintNotNull, QgsFieldConstraints::ConstraintStrengthHard ) );
706
+ mLayer ->setFieldConstraint ( idx, QgsFieldConstraints::ConstraintNotNull, constraints. constraintStrength ( QgsFieldConstraints::ConstraintNotNull ) );
705
707
}
706
708
else
707
709
{
708
710
mLayer ->removeFieldConstraint ( idx, QgsFieldConstraints::ConstraintNotNull );
709
711
}
710
- if ( cfg. mConstraints & QgsFieldConstraints::ConstraintUnique )
712
+ if ( constraints. constraints () & QgsFieldConstraints::ConstraintUnique )
711
713
{
712
- mLayer ->setFieldConstraint ( idx, QgsFieldConstraints::ConstraintUnique, cfg. mConstraintStrength . value ( QgsFieldConstraints::ConstraintUnique, QgsFieldConstraints::ConstraintStrengthHard ) );
714
+ mLayer ->setFieldConstraint ( idx, QgsFieldConstraints::ConstraintUnique, constraints. constraintStrength ( QgsFieldConstraints::ConstraintUnique ) );
713
715
}
714
716
else
715
717
{
716
718
mLayer ->removeFieldConstraint ( idx, QgsFieldConstraints::ConstraintUnique );
717
719
}
718
- if ( cfg. mConstraints & QgsFieldConstraints::ConstraintExpression )
720
+ if ( constraints. constraints () & QgsFieldConstraints::ConstraintExpression )
719
721
{
720
- mLayer ->setFieldConstraint ( idx, QgsFieldConstraints::ConstraintExpression, cfg. mConstraintStrength . value ( QgsFieldConstraints::ConstraintExpression, QgsFieldConstraints::ConstraintStrengthHard ) );
722
+ mLayer ->setFieldConstraint ( idx, QgsFieldConstraints::ConstraintExpression, constraints. constraintStrength ( QgsFieldConstraints::ConstraintExpression ) );
721
723
}
722
724
else
723
725
{
@@ -780,12 +782,6 @@ QgsAttributesFormProperties::FieldConfig::FieldConfig( QgsVectorLayer *layer, in
780
782
&& layer->fields ().fieldOrigin ( idx ) != QgsFields::OriginExpression;
781
783
mLabelOnTop = layer->editFormConfig ().labelOnTop ( idx );
782
784
mFieldConstraints = layer->fields ().at ( idx ).constraints ();
783
- mConstraints = mFieldConstraints .constraints ();
784
- mConstraint = mFieldConstraints .constraintExpression ();
785
- mConstraintStrength .insert ( QgsFieldConstraints::ConstraintNotNull, mFieldConstraints .constraintStrength ( QgsFieldConstraints::ConstraintNotNull ) );
786
- mConstraintStrength .insert ( QgsFieldConstraints::ConstraintUnique, mFieldConstraints .constraintStrength ( QgsFieldConstraints::ConstraintUnique ) );
787
- mConstraintStrength .insert ( QgsFieldConstraints::ConstraintExpression, mFieldConstraints .constraintStrength ( QgsFieldConstraints::ConstraintExpression ) );
788
- mConstraintDescription = mFieldConstraints .constraintDescription ();
789
785
const QgsEditorWidgetSetup setup = QgsGui::editorWidgetRegistry ()->findBest ( layer, layer->fields ().field ( idx ).name () );
790
786
mEditorWidgetType = setup.type ();
791
787
mEditorWidgetConfig = setup.config ();
0 commit comments