From c844ba28b0977bd1faafa9b6d3124e7e92db52c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germ=C3=A1n=20Carrillo?= Date: Fri, 11 Apr 2025 14:39:34 -0500 Subject: [PATCH] Manually bring remaining merge policy changes from PR #60710; fix doc strings --- src/gui/vector/qgsattributesformmodel.cpp | 1 + src/gui/vector/qgsattributesformmodel.h | 11 ++++++----- src/gui/vector/qgsattributesformproperties.cpp | 13 +++++++++++++ src/gui/vector/qgsattributesformproperties.h | 2 +- 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/gui/vector/qgsattributesformmodel.cpp b/src/gui/vector/qgsattributesformmodel.cpp index c2119df0f08..adaaee904d2 100644 --- a/src/gui/vector/qgsattributesformmodel.cpp +++ b/src/gui/vector/qgsattributesformmodel.cpp @@ -47,6 +47,7 @@ QgsAttributesFormData::FieldConfig::FieldConfig( QgsVectorLayer *layer, int idx mEditorWidgetConfig = setup.config(); mSplitPolicy = layer->fields().at( idx ).splitPolicy(); mDuplicatePolicy = layer->fields().at( idx ).duplicatePolicy(); + mMergePolicy = layer->fields().at( idx ).mergePolicy(); } QgsAttributesFormData::FieldConfig::operator QVariant() diff --git a/src/gui/vector/qgsattributesformmodel.h b/src/gui/vector/qgsattributesformmodel.h index 2c17b61c365..8d7abde8efc 100644 --- a/src/gui/vector/qgsattributesformmodel.h +++ b/src/gui/vector/qgsattributesformmodel.h @@ -29,7 +29,7 @@ #include /** - * \brief Class to describe editor data contained within a QgsAttributesFormModel. + * \brief Describes editor data contained in a QgsAttributesFormModel. * * \warning Not part of stable API and may change in future QGIS releases. * \ingroup gui @@ -78,6 +78,7 @@ class GUI_EXPORT QgsAttributesFormData QString mComment; Qgis::FieldDomainSplitPolicy mSplitPolicy = Qgis::FieldDomainSplitPolicy::Duplicate; Qgis::FieldDuplicatePolicy mDuplicatePolicy = Qgis::FieldDuplicatePolicy::Duplicate; + Qgis::FieldDomainMergePolicy mMergePolicy = Qgis::FieldDomainMergePolicy::DefaultValue; operator QVariant(); }; @@ -114,7 +115,7 @@ class GUI_EXPORT QgsAttributesFormData }; /** - * \brief Main class to store and transfer editor data contained within a QgsAttributesFormModel. + * \brief Main class to store and transfer editor data contained in a QgsAttributesFormModel. * * \ingroup gui * \note Prior to QGIS 3.44 this was available as QgsAttributesFormProperties::DnDTreeItemData @@ -365,7 +366,7 @@ class GUI_EXPORT QgsAttributesFormData /** - * \brief Class to hold parent-child relations as well as item data contained within a QgsAttributesFormModel. + * \brief Holds parent-child relations as well as item data contained in a QgsAttributesFormModel. * * \warning Not part of stable API and may change in future QGIS releases. * \ingroup gui @@ -618,7 +619,7 @@ class GUI_EXPORT QgsAttributesFormModel : public QAbstractItemModel /** - * \brief Class for available widgets when configuring attributes forms. + * \brief Manages available widgets when configuring attributes forms. * * \warning Not part of stable API and may change in future QGIS releases. * \ingroup gui @@ -693,7 +694,7 @@ class GUI_EXPORT QgsAttributesAvailableWidgetsModel : public QgsAttributesFormMo /** - * \brief Class for form layouts when configuring attributes forms via drag and drop designer. + * \brief Manages form layouts when configuring attributes forms via drag and drop designer. * * \warning Not part of stable API and may change in future QGIS releases. * \ingroup gui diff --git a/src/gui/vector/qgsattributesformproperties.cpp b/src/gui/vector/qgsattributesformproperties.cpp index b92efb11d5b..dc222fa94b3 100644 --- a/src/gui/vector/qgsattributesformproperties.cpp +++ b/src/gui/vector/qgsattributesformproperties.cpp @@ -1608,6 +1608,11 @@ void QgsAttributesFormProperties::copyWidgetConfiguration() duplicatePolicyElement.setAttribute( QStringLiteral( "policy" ), qgsEnumValueToKey( field.duplicatePolicy() ) ); documentElement.appendChild( duplicatePolicyElement ); + // Merge policy + QDomElement mergePolicyElement = doc.createElement( QStringLiteral( "mergePolicy" ) ); + mergePolicyElement.setAttribute( QStringLiteral( "policy" ), qgsEnumValueToKey( field.mergePolicy() ) ); + documentElement.appendChild( mergePolicyElement ); + // Default expressions QDomElement defaultElem = doc.createElement( QStringLiteral( "default" ) ); defaultElem.setAttribute( QStringLiteral( "expression" ), field.defaultValueDefinition().expression() ); @@ -1704,6 +1709,14 @@ void QgsAttributesFormProperties::pasteWidgetConfiguration() // // Get base config from target item and ovewrite settings when possible // FieldConfig config = item->data( 0, FieldConfigRole ).value(); + // Merge policy + const QDomElement mergePolicyElement = docElem.firstChildElement( QStringLiteral( "mergePolicy" ) ); + if ( !mergePolicyElement.isNull() ) + { + const Qgis::FieldDomainMergePolicy policy = qgsEnumKeyToValue( mergePolicyElement.attribute( QStringLiteral( "policy" ) ), Qgis::FieldDomainMergePolicy::DefaultValue ); + config.mMergePolicy = policy; + } + // Default expressions const QDomElement defaultElement = docElem.firstChildElement( QStringLiteral( "default" ) ); if ( !defaultElement.isNull() ) diff --git a/src/gui/vector/qgsattributesformproperties.h b/src/gui/vector/qgsattributesformproperties.h index 0f5b2429af6..4e7b63b8137 100644 --- a/src/gui/vector/qgsattributesformproperties.h +++ b/src/gui/vector/qgsattributesformproperties.h @@ -50,7 +50,7 @@ class QgsAttributeWidgetEdit; class QgsAttributesFormBaseView; /** - * \brief Class to create a panel to configure attributes forms. + * \brief Creates panels to configure attributes forms. * * \warning Not part of stable API and may change in future QGIS releases. * \ingroup gui