Skip to content

Commit

Permalink
Fix bug when exporting layer and using both displayed value and diffe…
Browse files Browse the repository at this point in the history
…rent export attribute name*

Fix #54005
  • Loading branch information
ismailsunni committed Aug 1, 2023
1 parent a519527 commit 6af7d4d
Showing 1 changed file with 12 additions and 3 deletions.
15 changes: 12 additions & 3 deletions src/app/qgisapp.cpp
Expand Up @@ -8338,7 +8338,7 @@ void QgisApp::saveStyleFile( QgsMapLayer *layer )
class QgisAppFieldValueConverter : public QgsVectorFileWriter::FieldValueConverter
{
public:
QgisAppFieldValueConverter( QgsVectorLayer *vl, const QgsAttributeList &attributesAsDisplayedValues );
QgisAppFieldValueConverter( QgsVectorLayer *vl, const QgsAttributeList &attributesAsDisplayedValues, const QStringList &attributesExportNames );

QgsField fieldDefinition( const QgsField &field ) override;

Expand All @@ -8349,11 +8349,14 @@ class QgisAppFieldValueConverter : public QgsVectorFileWriter::FieldValueConvert
private:
QPointer< QgsVectorLayer > mLayer;
QgsAttributeList mAttributesAsDisplayedValues;
QStringList mAttributesExportNames;
};

QgisAppFieldValueConverter::QgisAppFieldValueConverter( QgsVectorLayer *vl, const QgsAttributeList &attributesAsDisplayedValues )
QgisAppFieldValueConverter::QgisAppFieldValueConverter( QgsVectorLayer *vl, const QgsAttributeList &attributesAsDisplayedValues, const QStringList &attributesExportNames )
: mLayer( vl )
, mAttributesAsDisplayedValues( attributesAsDisplayedValues )
, mAttributesExportNames( attributesExportNames )

{
}

Expand All @@ -8363,6 +8366,12 @@ QgsField QgisAppFieldValueConverter::fieldDefinition( const QgsField &field )
return field;

int idx = mLayer->fields().indexFromName( field.name() );
// If not found in the original field name, it might be in the export names
if ( idx == -1 )
{
idx = mAttributesExportNames.indexOf( field.name() );
}

if ( mAttributesAsDisplayedValues.contains( idx ) )
{
return QgsField( field.name(), QVariant::String );
Expand Down Expand Up @@ -8476,7 +8485,7 @@ QString QgisApp::saveAsVectorFileGeneral( QgsVectorLayer *vlayer, bool symbology
}

QgsRectangle filterExtent = dialog->filterExtent();
QgisAppFieldValueConverter converter( vlayer, dialog->attributesAsDisplayedValues() );
QgisAppFieldValueConverter converter( vlayer, dialog->attributesAsDisplayedValues(), dialog->attributesExportNames() );
QgisAppFieldValueConverter *converterPtr = nullptr;
// No need to use the converter if there is nothing to convert
if ( !dialog->attributesAsDisplayedValues().isEmpty() )
Expand Down

0 comments on commit 6af7d4d

Please sign in to comment.