Skip to content

Commit

Permalink
Merge pull request #46167 from domi4484/fixNoAttributeFormUpdateForRe…
Browse files Browse the repository at this point in the history
…latedLayer
  • Loading branch information
m-kuhn committed Dec 9, 2021
2 parents 5f956a3 + 9c6d305 commit e622068
Show file tree
Hide file tree
Showing 8 changed files with 205 additions and 91 deletions.
Expand Up @@ -242,6 +242,17 @@ Forward the signal to the embedded form
virtual bool valid() const;


signals:

void relatedFeaturesChanged();
%Docstring
Emit this signal, whenever the related features changed.
This happens for example when related features are added, removed,
linked or unlinked.

.. versionadded:: 3.22
%End

public slots:
virtual void setFeature( const QgsFeature &feature );

Expand Down
11 changes: 11 additions & 0 deletions python/gui/auto_generated/qgsabstractrelationeditorwidget.sip.in
Expand Up @@ -172,6 +172,17 @@ Defines the widget configuration
Returns true if editing multiple features at a time

.. versionadded:: 3.24
%End

signals:

void relatedFeaturesChanged();
%Docstring
Emit this signal, whenever the related features changed.
This happens for example when related features are added, removed,
linked or unlinked.

.. versionadded:: 3.22
%End

public slots:
Expand Down
10 changes: 6 additions & 4 deletions src/gui/editorwidgets/qgsrelationwidgetwrapper.cpp
Expand Up @@ -42,15 +42,17 @@ QWidget *QgsRelationWidgetWrapper::createWidget( QWidget *parent )
if ( form )
connect( form, &QgsAttributeForm::widgetValueChanged, this, &QgsRelationWidgetWrapper::widgetValueChanged );

QWidget *widget = QgsGui::instance()->relationWidgetRegistry()->create( mRelationEditorId, widgetConfig(), parent );
QgsAbstractRelationEditorWidget *relationEditorWidget = QgsGui::instance()->relationWidgetRegistry()->create( mRelationEditorId, widgetConfig(), parent );

if ( !widget )
if ( !relationEditorWidget )
{
QgsLogger::warning( QStringLiteral( "Failed to create relation widget \"%1\", fallback to \"basic\" relation widget" ).arg( mRelationEditorId ) );
widget = QgsGui::instance()->relationWidgetRegistry()->create( QStringLiteral( "relation_editor" ), widgetConfig(), parent );
relationEditorWidget = QgsGui::instance()->relationWidgetRegistry()->create( QStringLiteral( "relation_editor" ), widgetConfig(), parent );
}

return widget;
connect( relationEditorWidget, &QgsAbstractRelationEditorWidget::relatedFeaturesChanged, this, &QgsRelationWidgetWrapper::relatedFeaturesChanged );

return relationEditorWidget;
}

void QgsRelationWidgetWrapper::setFeature( const QgsFeature &feature )
Expand Down
11 changes: 11 additions & 0 deletions src/gui/editorwidgets/qgsrelationwidgetwrapper.h
Expand Up @@ -210,6 +210,17 @@ class GUI_EXPORT QgsRelationWidgetWrapper : public QgsWidgetWrapper
void initWidget( QWidget *editor ) override;
bool valid() const override;

signals:

/**
* Emit this signal, whenever the related features changed.
* This happens for example when related features are added, removed,
* linked or unlinked.
*
* \since QGIS 3.22
*/
void relatedFeaturesChanged();

public slots:
void setFeature( const QgsFeature &feature ) override;

Expand Down
14 changes: 14 additions & 0 deletions src/gui/qgsabstractrelationeditorwidget.cpp
Expand Up @@ -297,12 +297,16 @@ QgsFeatureIds QgsAbstractRelationEditorWidget::addFeature( const QgsGeometry &ge

updateUi();

emit relatedFeaturesChanged();

return addedFeatureIds;
}

void QgsAbstractRelationEditorWidget::deleteFeature( const QgsFeatureId fid )
{
deleteFeatures( QgsFeatureIds() << fid );

emit relatedFeaturesChanged();
}

void QgsAbstractRelationEditorWidget::deleteFeatures( const QgsFeatureIds &fids )
Expand Down Expand Up @@ -419,6 +423,8 @@ void QgsAbstractRelationEditorWidget::deleteFeatures( const QgsFeatureIds &fids
}

updateUi();

emit relatedFeaturesChanged();
}
}

Expand Down Expand Up @@ -561,6 +567,8 @@ void QgsAbstractRelationEditorWidget::onLinkFeatureDlgAccepted()
}

updateUi();

emit relatedFeaturesChanged();
}

void QgsAbstractRelationEditorWidget::unlinkFeature( const QgsFeatureId fid )
Expand Down Expand Up @@ -654,6 +662,8 @@ void QgsAbstractRelationEditorWidget::unlinkFeatures( const QgsFeatureIds &fids
}

updateUi();

emit relatedFeaturesChanged();
}

void QgsAbstractRelationEditorWidget::updateUi()
Expand Down Expand Up @@ -685,6 +695,8 @@ void QgsAbstractRelationEditorWidget::afterSetRelations()
void QgsAbstractRelationEditorWidget::duplicateFeature( const QgsFeatureId &fid )
{
duplicateFeatures( QgsFeatureIds() << fid );

emit relatedFeaturesChanged();
}

void QgsAbstractRelationEditorWidget::duplicateFeatures( const QgsFeatureIds &fids )
Expand All @@ -698,6 +710,8 @@ void QgsAbstractRelationEditorWidget::duplicateFeatures( const QgsFeatureIds &fi
QgsVectorLayerUtils::QgsDuplicateFeatureContext duplicatedFeatureContext;
QgsVectorLayerUtils::duplicateFeature( layer, f, QgsProject::instance(), duplicatedFeatureContext );
}

emit relatedFeaturesChanged();
}

void QgsAbstractRelationEditorWidget::showEvent( QShowEvent * )
Expand Down
11 changes: 11 additions & 0 deletions src/gui/qgsabstractrelationeditorwidget.h
Expand Up @@ -183,6 +183,17 @@ class GUI_EXPORT QgsAbstractRelationEditorWidget : public QWidget
*/
bool multiEditModeActive() const;

signals:

/**
* Emit this signal, whenever the related features changed.
* This happens for example when related features are added, removed,
* linked or unlinked.
*
* \since QGIS 3.22
*/
void relatedFeaturesChanged();

public slots:

/**
Expand Down

0 comments on commit e622068

Please sign in to comment.