Skip to content

Commit

Permalink
correct set of forceSuppressPopup state
Browse files Browse the repository at this point in the history
renamed cardinality to nmRelationId since it's not a cardinality - it's the id of the relation connected through the many-to-many cardinality in this relation editor widget
  • Loading branch information
signedav committed Aug 13, 2020
1 parent 292c622 commit f0a390d
Show file tree
Hide file tree
Showing 15 changed files with 85 additions and 68 deletions.
9 changes: 5 additions & 4 deletions python/core/auto_generated/qgsattributeeditorelement.sip.in
Expand Up @@ -441,16 +441,17 @@ opening of the attribute form dialog when digitizing is completed.
.. versionadded:: 3.16
%End

void setCardinality( const QVariant &cardinality = QVariant() );
QVariant nmRelationId() const;
%Docstring
Sets combo cardinality to ``cardinality``
Determines the nmRelationId used for the many-to-many cardinality.

.. versionadded:: 3.16
%End

QVariant cardinality() const;
void setNmRelationId( const QVariant &nmRelationId = QVariant() );
%Docstring
Determines combo cardinality
Sets ``nmRelationId`` in a many-to-many cardinality.
If it's empty, then it's considered as a one-to-many relationship.

.. versionadded:: 3.16
%End
Expand Down
Expand Up @@ -115,32 +115,36 @@ Returns the buttons which are shown

bool forceSuppressFormPopup() const;
%Docstring
Returns the force suppress form popup status.
Determines the force suppress form popup status.

.. versionadded:: 3.16
%End

void setForceSuppressFormPopup( bool forceSuppressFormPopup );
%Docstring
Defines the force suppress form popup status
Sets force suppress form popup status to ``forceSuppressFormPopup``.
This flag will override the layer and general settings regarding the automatic
opening of the attribute form dialog when digitizing is completed.

.. versionadded:: 3.16
%End

void setCardinality( const QVariant &cardinality = QVariant() );
QVariant nmRelationId() const;
%Docstring
Defines the cardinality
Determines the nmRelationId used for the many-to-many cardinality.

.. versionadded:: 3.16
%End

QVariant cardinality() const;
void setNmRelationId( const QVariant &nmRelationId = QVariant() );
%Docstring
Returns the cardinality
Sets ``nmRelationId`` in a many-to-many cardinality.
If it's empty, then it's considered as a one-to-many relationship

.. versionadded:: 3.16
%End


QgsRelation relation() const;
%Docstring
The relation for which this wrapper is created.
Expand Down
15 changes: 9 additions & 6 deletions python/gui/auto_generated/qgsrelationeditorwidget.sip.in
Expand Up @@ -185,28 +185,31 @@ Returns the buttons which are shown

bool forceSuppressFormPopup() const;
%Docstring
Returns the force suppress form popup status.
Determines the force suppress form popup status.

.. versionadded:: 3.16
%End

void setForceSuppressFormPopup( bool forceSuppressFormPopup );
%Docstring
Defines the force suppress form popup status
Sets force suppress form popup status to ``forceSuppressFormPopup``.
This flag will override the layer and general settings regarding the automatic
opening of the attribute form dialog when digitizing is completed.

.. versionadded:: 3.16
%End

void setCardinality( const QVariant &cardinality = QVariant() );
QVariant nmRelationId() const;
%Docstring
Defines the cardinality
Determines the nmRelationId used for the many-to-many cardinality.

.. versionadded:: 3.16
%End

QVariant cardinality() const;
void setNmRelationId( const QVariant &nmRelationId = QVariant() );
%Docstring
Returns the cardinality
Sets ``nmRelationId`` in a many-to-many cardinality.
If it's empty, then it's considered as a one-to-many relationship

.. versionadded:: 3.16
%End
Expand Down
14 changes: 7 additions & 7 deletions src/core/qgsattributeeditorelement.cpp
Expand Up @@ -98,7 +98,7 @@ QgsAttributeEditorElement *QgsAttributeEditorRelation::clone( QgsAttributeEditor
element->mRelation = mRelation;
element->mButtons = mButtons;
element->mForceSuppressFormPopup = mForceSuppressFormPopup;
element->mCardinality = mCardinality;
element->mNmRelationId = mNmRelationId;

return element;
}
Expand Down Expand Up @@ -136,7 +136,7 @@ void QgsAttributeEditorRelation::saveConfiguration( QDomElement &elem ) const
elem.setAttribute( QStringLiteral( "relation" ), mRelation.id() );
elem.setAttribute( QStringLiteral( "buttons" ), qgsFlagValueToKeys( mButtons ) );
elem.setAttribute( QStringLiteral( "forceSuppressFormPopup" ), mForceSuppressFormPopup );
elem.setAttribute( QStringLiteral( "cardinality" ), mCardinality.toString() );
elem.setAttribute( QStringLiteral( "nmRelationId" ), mNmRelationId.toString() );
}

QString QgsAttributeEditorRelation::typeIdentifier() const
Expand Down Expand Up @@ -181,22 +181,22 @@ void QgsAttributeEditorRelation::setVisibleButtons( const QgsAttributeEditorRela

void QgsAttributeEditorRelation::setForceSuppressFormPopup( bool forceSuppressFormPopup )
{
mForceSuppressFormPopup = mForceSuppressFormPopup;
mForceSuppressFormPopup = forceSuppressFormPopup;
}

bool QgsAttributeEditorRelation::forceSuppressFormPopup() const
{
return mForceSuppressFormPopup;
}

void QgsAttributeEditorRelation::setCardinality( const QVariant &cardinality )
void QgsAttributeEditorRelation::setNmRelationId( const QVariant &nmRelationId )
{
mCardinality = cardinality;
mNmRelationId = nmRelationId;
}

QVariant QgsAttributeEditorRelation::cardinality() const
QVariant QgsAttributeEditorRelation::nmRelationId() const
{
return mCardinality;
return mNmRelationId;
}

QgsAttributeEditorElement *QgsAttributeEditorQmlElement::clone( QgsAttributeEditorElement *parent ) const
Expand Down
11 changes: 6 additions & 5 deletions src/core/qgsattributeeditorelement.h
Expand Up @@ -482,16 +482,17 @@ class CORE_EXPORT QgsAttributeEditorRelation : public QgsAttributeEditorElement
void setForceSuppressFormPopup( bool forceSuppressFormPopup );

/**
* Sets combo cardinality to \a cardinality
* Determines the nmRelationId used for the many-to-many cardinality.
* \since QGIS 3.16
*/
void setCardinality( const QVariant &cardinality = QVariant() );
QVariant nmRelationId() const;

/**
* Determines combo cardinality
* Sets \a nmRelationId in a many-to-many cardinality.
* If it's empty, then it's considered as a one-to-many relationship.
* \since QGIS 3.16
*/
QVariant cardinality() const;
void setNmRelationId( const QVariant &nmRelationId = QVariant() );

private:
void saveConfiguration( QDomElement &elem ) const override;
Expand All @@ -500,7 +501,7 @@ class CORE_EXPORT QgsAttributeEditorRelation : public QgsAttributeEditorElement
QgsRelation mRelation;
Buttons mButtons = Buttons( Button::AllButtons );
bool mForceSuppressFormPopup;
QVariant mCardinality;
QVariant mNmRelationId;
};

Q_DECLARE_OPERATORS_FOR_FLAGS( QgsAttributeEditorRelation::Buttons )
Expand Down
6 changes: 3 additions & 3 deletions src/core/qgseditformconfig.cpp
Expand Up @@ -639,14 +639,14 @@ QgsAttributeEditorElement *QgsEditFormConfig::attributeEditorElementFromDomEleme
relElement->setForceSuppressFormPopup( widgetConfig( elem.attribute( QStringLiteral( "relation" ) ) ).value( QStringLiteral( "force-suppress-popup" ), false ).toBool() );
}

if ( elem.hasAttribute( QStringLiteral( "cardinality" ) ) )
if ( elem.hasAttribute( QStringLiteral( "nmRelationId" ) ) )
{
relElement->setCardinality( elem.attribute( QStringLiteral( "cardinality" ) ) );
relElement->setNmRelationId( elem.attribute( QStringLiteral( "nmRelationId" ) ) );
}
else
{
// pre QGIS 3.16 compatibility - the widgets section is read before
relElement->setCardinality( widgetConfig( elem.attribute( QStringLiteral( "relation" ) ) ).value( QStringLiteral( "nm-rel" ) ) );
relElement->setNmRelationId( widgetConfig( elem.attribute( QStringLiteral( "relation" ) ) ).value( QStringLiteral( "nm-rel" ) ) );
}
newElement = relElement;
}
Expand Down
7 changes: 4 additions & 3 deletions src/gui/attributeformconfig/qgsattributewidgetedit.cpp
Expand Up @@ -116,7 +116,8 @@ void QgsAttributeWidgetRelationEditWidget::setRelationEditorConfiguration( const
}

mRelationCardinalityCombo->setToolTip( tr( "For a many to many (N:M) relation, the direct link has to be selected. The in-between table will be hidden." ) );
setCardinality( config.cardinality );
setNmRelationId( config.nmRelationId );

mRelationForceSuppressFormPopupCheckBox->setChecked( config.forceSuppressFormPopup );
}

Expand All @@ -132,7 +133,7 @@ QgsAttributesFormProperties::RelationEditorConfiguration QgsAttributeWidgetRelat
buttons.setFlag( QgsAttributeEditorRelation::Button::DeleteChildFeature, mRelationDeleteChildFeatureCheckBox->isChecked() );
buttons.setFlag( QgsAttributeEditorRelation::Button::SaveChildEdits, mRelationShowSaveChildEditsCheckBox->isChecked() );
relEdCfg.buttons = buttons;
relEdCfg.cardinality = mRelationCardinalityCombo->currentData();
relEdCfg.nmRelationId = mRelationCardinalityCombo->currentData();
relEdCfg.forceSuppressFormPopup = mRelationForceSuppressFormPopupCheckBox->isChecked();
return relEdCfg;
}
Expand All @@ -142,7 +143,7 @@ void QgsAttributeWidgetRelationEditWidget::setCardinalityCombo( const QString &c
mRelationCardinalityCombo->addItem( cardinalityComboItem, auserData );
}

void QgsAttributeWidgetRelationEditWidget::setCardinality( const QVariant &auserData )
void QgsAttributeWidgetRelationEditWidget::setNmRelationId( const QVariant &auserData )
{
int idx = mRelationCardinalityCombo->findData( auserData );

Expand Down
2 changes: 1 addition & 1 deletion src/gui/attributeformconfig/qgsattributewidgetedit.h
Expand Up @@ -71,7 +71,7 @@ class GUI_EXPORT QgsAttributeWidgetRelationEditWidget : public QWidget, private

private:
void setCardinalityCombo( const QString &cardinalityComboItem, const QVariant &auserData = QVariant() );
void setCardinality( const QVariant &auserData = QVariant() );
void setNmRelationId( const QVariant &auserData = QVariant() );
};

#endif // QGSATTRIBUTEWIDGETEDIT_H
10 changes: 5 additions & 5 deletions src/gui/editorwidgets/qgsrelationwidgetwrapper.cpp
Expand Up @@ -245,13 +245,13 @@ bool QgsRelationWidgetWrapper::forceSuppressFormPopup() const
return false;
}

void QgsRelationWidgetWrapper::setCardinality( const QVariant &cardinality )
void QgsRelationWidgetWrapper::setNmRelationId( const QVariant &nmRelationId )
{
if ( mWidget )
{
mWidget->setCardinality( cardinality );
mWidget->setNmRelationId( nmRelationId );

mNmRelation = QgsProject::instance()->relationManager()->relation( cardinality.toString() );
mNmRelation = QgsProject::instance()->relationManager()->relation( nmRelationId.toString() );

// If this widget is already embedded by the same relation, reduce functionality
const QgsAttributeEditorContext *ctx = &context();
Expand All @@ -271,9 +271,9 @@ void QgsRelationWidgetWrapper::setCardinality( const QVariant &cardinality )
}
}

QVariant QgsRelationWidgetWrapper::cardinality() const
QVariant QgsRelationWidgetWrapper::nmRelationId() const
{
if ( mWidget )
return mWidget->cardinality();
return mWidget->nmRelationId();
return QVariant();
}
20 changes: 12 additions & 8 deletions src/gui/editorwidgets/qgsrelationwidgetwrapper.h
Expand Up @@ -107,28 +107,32 @@ class GUI_EXPORT QgsRelationWidgetWrapper : public QgsWidgetWrapper
QgsAttributeEditorRelation::Buttons visibleButtons() const;

/**
* Returns the force suppress form popup status.
* Determines the force suppress form popup status.
* \since QGIS 3.16
*/
bool forceSuppressFormPopup() const;

/**
* Defines the force suppress form popup status
* Sets force suppress form popup status to \a forceSuppressFormPopup.
* This flag will override the layer and general settings regarding the automatic
* opening of the attribute form dialog when digitizing is completed.
* \since QGIS 3.16
*/
void setForceSuppressFormPopup( bool forceSuppressFormPopup );

/**
* Defines the cardinality
* \since QGIS 3.16
*/
void setCardinality( const QVariant &cardinality = QVariant() );
* Determines the nmRelationId used for the many-to-many cardinality.
* \since QGIS 3.16
*/
QVariant nmRelationId() const;

/**
* Returns the cardinality
* Sets \a nmRelationId in a many-to-many cardinality.
* If it's empty, then it's considered as a one-to-many relationship
* \since QGIS 3.16
*/
QVariant cardinality() const;
void setNmRelationId( const QVariant &nmRelationId = QVariant() );


/**
* The relation for which this wrapper is created.
Expand Down
2 changes: 1 addition & 1 deletion src/gui/qgsattributeform.cpp
Expand Up @@ -1953,7 +1953,7 @@ QgsAttributeForm::WidgetInfo QgsAttributeForm::createWidgetFromDef( const QgsAtt
// below directly alter the widget and check for it.
rww->setVisibleButtons( relDef->visibleButtons() );
rww->setShowLabel( relDef->showLabel() );
rww->setCardinality( relDef->cardinality() );
rww->setNmRelationId( relDef->nmRelationId() );
rww->setForceSuppressFormPopup( relDef->forceSuppressFormPopup() );

mWidgets.append( rww );
Expand Down
8 changes: 4 additions & 4 deletions src/gui/qgsrelationeditorwidget.cpp
Expand Up @@ -995,14 +995,14 @@ bool QgsRelationEditorWidget::forceSuppressFormPopup() const
return mForceSuppressFormPopup;
}

void QgsRelationEditorWidget::setCardinality( const QVariant &cardinality )
void QgsRelationEditorWidget::setNmRelationId( const QVariant &nmRelationId )
{
mCardinality = cardinality;
mNmRelationId = nmRelationId;
}

QVariant QgsRelationEditorWidget::cardinality() const
QVariant QgsRelationEditorWidget::nmRelationId() const
{
return mCardinality;
return mNmRelationId;
}

void QgsRelationEditorWidget::setShowUnlinkButton( bool showUnlinkButton )
Expand Down
25 changes: 14 additions & 11 deletions src/gui/qgsrelationeditorwidget.h
Expand Up @@ -222,28 +222,31 @@ class GUI_EXPORT QgsRelationEditorWidget : public QgsCollapsibleGroupBox
QgsAttributeEditorRelation::Buttons visibleButtons() const;

/**
* Returns the force suppress form popup status.
* \since QGIS 3.16
*/
* Determines the force suppress form popup status.
* \since QGIS 3.16
*/
bool forceSuppressFormPopup() const;

/**
* Defines the force suppress form popup status
* Sets force suppress form popup status to \a forceSuppressFormPopup.
* This flag will override the layer and general settings regarding the automatic
* opening of the attribute form dialog when digitizing is completed.
* \since QGIS 3.16
*/
void setForceSuppressFormPopup( bool forceSuppressFormPopup );

/**
* Defines the cardinality
* \since QGIS 3.16
*/
void setCardinality( const QVariant &cardinality = QVariant() );
* Determines the nmRelationId used for the many-to-many cardinality.
* \since QGIS 3.16
*/
QVariant nmRelationId() const;

/**
* Returns the cardinality
* Sets \a nmRelationId in a many-to-many cardinality.
* If it's empty, then it's considered as a one-to-many relationship
* \since QGIS 3.16
*/
QVariant cardinality() const;
void setNmRelationId( const QVariant &nmRelationId = QVariant() );

/**
* Returns the widget's current feature
Expand Down Expand Up @@ -318,7 +321,7 @@ class GUI_EXPORT QgsRelationEditorWidget : public QgsCollapsibleGroupBox
bool mVisible = false;

bool mForceSuppressFormPopup;
QVariant mCardinality;
QVariant mNmRelationId;

/**
* Deletes the features
Expand Down

0 comments on commit f0a390d

Please sign in to comment.