Manually bring remaining merge policy changes from PR #60710; fix doc strings

This commit is contained in:
Germán Carrillo 2025-04-11 14:39:34 -05:00
parent f9188d772f
commit c844ba28b0
4 changed files with 21 additions and 6 deletions

View File

@ -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()

View File

@ -29,7 +29,7 @@
#include <QPushButton>
/**
* \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

View File

@ -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<FieldConfig>();
// 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() )

View File

@ -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