Skip to content

Commit

Permalink
Merge pull request #42384 from domi4484/missingNmRelationQgsAbstractR…
Browse files Browse the repository at this point in the history
…elationEditorConfigWidget (#42542)

Set missing nm relation for QgsAbstractRelationEditorConfigWidget

Co-authored-by: Alessandro Pasotti <elpaso@itopen.it>
  • Loading branch information
github-actions[bot] and elpaso committed Mar 29, 2021
1 parent 9164e04 commit b3d15ed
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 0 deletions.
13 changes: 13 additions & 0 deletions python/gui/auto_generated/qgsabstractrelationeditorwidget.sip.in
Expand Up @@ -323,6 +323,19 @@ Returns the relation for which this configuration widget applies
:return: The relation
%End

virtual void setNmRelation( const QgsRelation &nmRelation );
%Docstring
Set the nm relation for this widget.

:param nmRelation: The nm relation
%End

virtual QgsRelation nmRelation() const;
%Docstring
Returns the nm relation for which this configuration widget applies

:return: The nm relation
%End

};

Expand Down
15 changes: 15 additions & 0 deletions src/gui/attributeformconfig/qgsattributewidgetedit.cpp
Expand Up @@ -100,11 +100,14 @@ QgsAttributeWidgetRelationEditWidget::QgsAttributeWidgetRelationEditWidget( QWid
it.next();
mWidgetTypeComboBox->addItem( it.value()->name(), it.key() );
}

connect( mRelationCardinalityCombo, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsAttributeWidgetRelationEditWidget::relationCardinalityComboCurrentIndexChanged );
}

void QgsAttributeWidgetRelationEditWidget::setRelationEditorConfiguration( const QgsAttributesFormProperties::RelationEditorConfiguration &config, const QString &relationId )
{
//load the combo mRelationCardinalityCombo
mRelationCardinalityCombo->clear();
setCardinalityCombo( tr( "Many to one relation" ) );

QgsRelation relation = QgsProject::instance()->relationManager()->relation( relationId );
Expand Down Expand Up @@ -163,6 +166,18 @@ QgsAttributesFormProperties::RelationEditorConfiguration QgsAttributeWidgetRelat
return relEdCfg;
}

void QgsAttributeWidgetRelationEditWidget::relationCardinalityComboCurrentIndexChanged( int index )
{
if ( index < 0 )
return;

if ( !mConfigWidget )
return;

QgsRelation nmRelation = QgsProject::instance()->relationManager()->relation( mRelationCardinalityCombo->currentData().toString() );
mConfigWidget->setNmRelation( nmRelation );
}

void QgsAttributeWidgetRelationEditWidget::setCardinalityCombo( const QString &cardinalityComboItem, const QVariant &auserData )
{
mRelationCardinalityCombo->addItem( cardinalityComboItem, auserData );
Expand Down
3 changes: 3 additions & 0 deletions src/gui/attributeformconfig/qgsattributewidgetedit.h
Expand Up @@ -70,6 +70,9 @@ class GUI_EXPORT QgsAttributeWidgetRelationEditWidget : public QWidget, private

static QString title() { return tr( "Relation" ); }

private slots:
void relationCardinalityComboCurrentIndexChanged( int index );

private:
void setCardinalityCombo( const QString &cardinalityComboItem, const QVariant &auserData = QVariant() );
void setNmRelationId( const QVariant &auserData = QVariant() );
Expand Down
10 changes: 10 additions & 0 deletions src/gui/qgsabstractrelationeditorwidget.cpp
Expand Up @@ -655,6 +655,16 @@ QgsRelation QgsAbstractRelationEditorConfigWidget::relation() const
return mRelation;
}

void QgsAbstractRelationEditorConfigWidget::setNmRelation( const QgsRelation &nmRelation )
{
mNmRelation = nmRelation;
}

QgsRelation QgsAbstractRelationEditorConfigWidget::nmRelation() const
{
return mNmRelation;
}


///////////////////////////////////////////////////////////////////////////////

Expand Down
14 changes: 14 additions & 0 deletions src/gui/qgsabstractrelationeditorwidget.h
Expand Up @@ -351,10 +351,24 @@ class GUI_EXPORT QgsAbstractRelationEditorConfigWidget : public QWidget
*/
QgsRelation relation() const;

/**
* \brief Set the nm relation for this widget.
*
* \param nmRelation The nm relation
*/
virtual void setNmRelation( const QgsRelation &nmRelation );

/**
* Returns the nm relation for which this configuration widget applies
*
* \returns The nm relation
*/
virtual QgsRelation nmRelation() const;

private:
QgsVectorLayer *mLayer = nullptr;
QgsRelation mRelation;
QgsRelation mNmRelation;
};


Expand Down

0 comments on commit b3d15ed

Please sign in to comment.