@@ -559,7 +559,9 @@ void QgsFieldsProperties::attributeTypeDialog()
559559 attributeTypeDialog.setFieldEditable ( cfg.mEditable );
560560 attributeTypeDialog.setLabelOnTop ( cfg.mLabelOnTop );
561561 attributeTypeDialog.setNotNull ( cfg.mConstraints & QgsFieldConstraints::ConstraintNotNull );
562+ attributeTypeDialog.setNotNullEnforced ( cfg.mConstraintStrength .value ( QgsFieldConstraints::ConstraintNotNull, QgsFieldConstraints::ConstraintStrengthHard ) == QgsFieldConstraints::ConstraintStrengthHard );
562563 attributeTypeDialog.setUnique ( cfg.mConstraints & QgsFieldConstraints::ConstraintUnique );
564+ attributeTypeDialog.setUniqueEnforced ( cfg.mConstraintStrength .value ( QgsFieldConstraints::ConstraintUnique, QgsFieldConstraints::ConstraintStrengthHard ) == QgsFieldConstraints::ConstraintStrengthHard );
563565
564566 QgsFieldConstraints constraints = mLayer ->fields ().at ( index ).constraints ();
565567 QgsFieldConstraints::Constraints providerConstraints = 0 ;
@@ -573,6 +575,7 @@ void QgsFieldsProperties::attributeTypeDialog()
573575
574576 attributeTypeDialog.setConstraintExpression ( cfg.mConstraint );
575577 attributeTypeDialog.setConstraintExpressionDescription ( cfg.mConstraintDescription );
578+ attributeTypeDialog.setConstraintExpressionEnforced ( cfg.mConstraintStrength .value ( QgsFieldConstraints::ConstraintExpression, QgsFieldConstraints::ConstraintStrengthHard ) == QgsFieldConstraints::ConstraintStrengthHard );
576579 attributeTypeDialog.setDefaultValueExpression ( mLayer ->defaultValueExpression ( index ) );
577580
578581 attributeTypeDialog.setWidgetConfig ( cfg.mEditorWidgetConfig );
@@ -593,6 +596,10 @@ void QgsFieldsProperties::attributeTypeDialog()
593596 {
594597 cfg.mConstraints |= QgsFieldConstraints::ConstraintUnique;
595598 }
599+ if ( !attributeTypeDialog.constraintExpression ().isEmpty () && !( providerConstraints & QgsFieldConstraints::ConstraintExpression ) )
600+ {
601+ cfg.mConstraints |= QgsFieldConstraints::ConstraintExpression;
602+ }
596603
597604 cfg.mConstraintDescription = attributeTypeDialog.constraintExpressionDescription ();
598605 cfg.mConstraint = attributeTypeDialog.constraintExpression ();
@@ -601,6 +608,13 @@ void QgsFieldsProperties::attributeTypeDialog()
601608 cfg.mEditorWidgetType = attributeTypeDialog.editorWidgetType ();
602609 cfg.mEditorWidgetConfig = attributeTypeDialog.editorWidgetConfig ();
603610
611+ cfg.mConstraintStrength .insert ( QgsFieldConstraints::ConstraintNotNull, attributeTypeDialog.notNullEnforced () ?
612+ QgsFieldConstraints::ConstraintStrengthHard : QgsFieldConstraints::ConstraintStrengthSoft );
613+ cfg.mConstraintStrength .insert ( QgsFieldConstraints::ConstraintUnique, attributeTypeDialog.uniqueEnforced () ?
614+ QgsFieldConstraints::ConstraintStrengthHard : QgsFieldConstraints::ConstraintStrengthSoft );
615+ cfg.mConstraintStrength .insert ( QgsFieldConstraints::ConstraintExpression, attributeTypeDialog.constraintExpressionEnforced () ?
616+ QgsFieldConstraints::ConstraintStrengthHard : QgsFieldConstraints::ConstraintStrengthSoft );
617+
604618 pb->setText ( attributeTypeDialog.editorWidgetText () );
605619
606620 setConfigForRow ( row, cfg );
@@ -983,7 +997,18 @@ void QgsFieldsProperties::apply()
983997 editFormConfig.setWidgetType ( name, cfg.mEditorWidgetType );
984998 editFormConfig.setWidgetConfig ( name, cfg.mEditorWidgetConfig );
985999
986- mLayer ->setFieldConstraints ( i, cfg.mConstraints );
1000+ if ( cfg.mConstraints & QgsFieldConstraints::ConstraintNotNull )
1001+ {
1002+ mLayer ->setFieldConstraint ( i, QgsFieldConstraints::ConstraintNotNull, cfg.mConstraintStrength .value ( QgsFieldConstraints::ConstraintNotNull, QgsFieldConstraints::ConstraintStrengthHard ) );
1003+ }
1004+ if ( cfg.mConstraints & QgsFieldConstraints::ConstraintUnique )
1005+ {
1006+ mLayer ->setFieldConstraint ( i, QgsFieldConstraints::ConstraintUnique, cfg.mConstraintStrength .value ( QgsFieldConstraints::ConstraintUnique, QgsFieldConstraints::ConstraintStrengthHard ) );
1007+ }
1008+ if ( cfg.mConstraints & QgsFieldConstraints::ConstraintExpression )
1009+ {
1010+ mLayer ->setFieldConstraint ( i, QgsFieldConstraints::ConstraintExpression, cfg.mConstraintStrength .value ( QgsFieldConstraints::ConstraintExpression, QgsFieldConstraints::ConstraintStrengthHard ) );
1011+ }
9871012
9881013 if ( mFieldsList ->item ( i, attrWMSCol )->checkState () == Qt::Unchecked )
9891014 {
@@ -1064,6 +1089,9 @@ QgsFieldsProperties::FieldConfig::FieldConfig( QgsVectorLayer* layer, int idx )
10641089 QgsFieldConstraints constraints = layer->fields ().at ( idx ).constraints ();
10651090 mConstraints = constraints.constraints ();
10661091 mConstraint = constraints.constraintExpression ();
1092+ mConstraintStrength .insert ( QgsFieldConstraints::ConstraintNotNull, constraints.constraintStrength ( QgsFieldConstraints::ConstraintNotNull ) );
1093+ mConstraintStrength .insert ( QgsFieldConstraints::ConstraintUnique, constraints.constraintStrength ( QgsFieldConstraints::ConstraintUnique ) );
1094+ mConstraintStrength .insert ( QgsFieldConstraints::ConstraintExpression, constraints.constraintStrength ( QgsFieldConstraints::ConstraintExpression ) );
10671095 mConstraintDescription = constraints.constraintDescription ();
10681096 const QgsEditorWidgetSetup setup = QgsEditorWidgetRegistry::instance ()->findBest ( layer, layer->fields ().field ( idx ).name () );
10691097 mEditorWidgetType = setup.type ();
0 commit comments