From ebc9e029f0fdb4081be563ed7ddaf242a7b551a3 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Sun, 29 Nov 2015 17:45:30 +0100 Subject: [PATCH] Relations are only valid if the id is set --- src/core/qgsrelation.cpp | 28 ++++++++++++++++++++++++++++ src/core/qgsrelation.h | 4 ++++ 2 files changed, 32 insertions(+) diff --git a/src/core/qgsrelation.cpp b/src/core/qgsrelation.cpp index b936b98f2cf..2c7c0f56fa2 100644 --- a/src/core/qgsrelation.cpp +++ b/src/core/qgsrelation.cpp @@ -111,6 +111,8 @@ void QgsRelation::writeXML( QDomNode &node, QDomDocument &doc ) const void QgsRelation::setRelationId( const QString& id ) { mRelationId = id; + + updateRelationStatus(); } void QgsRelation::setRelationName( const QString& name ) @@ -260,6 +262,29 @@ QList QgsRelation::fieldPairs() const return mFieldPairs; } +QgsAttributeList QgsRelation::referencedFields() const +{ + QgsAttributeList attrs; + + Q_FOREACH ( const FieldPair& pair, mFieldPairs ) + { + attrs << mReferencedLayer->fieldNameIndex( pair.second ); + } + return attrs; +} + +QgsAttributeList QgsRelation::referencingFields() const +{ + QgsAttributeList attrs; + + Q_FOREACH ( const FieldPair& pair, mFieldPairs ) + { + attrs << mReferencingLayer->fieldNameIndex( pair.first ); + } + return attrs; + +} + bool QgsRelation::isValid() const { return mValid; @@ -274,6 +299,9 @@ void QgsRelation::updateRelationStatus() mValid = true; + if ( mRelationId.isEmpty() ) + mValid = false; + if ( !mReferencedLayer || !mReferencingLayer ) { mValid = false; diff --git a/src/core/qgsrelation.h b/src/core/qgsrelation.h index 4bd6eb95a16..1feb513fa07 100644 --- a/src/core/qgsrelation.h +++ b/src/core/qgsrelation.h @@ -227,6 +227,10 @@ class CORE_EXPORT QgsRelation */ QList< FieldPair > fieldPairs() const; + QgsAttributeList referencedFields() const; + + QgsAttributeList referencingFields() const; + /** * Returns the validity of this relation. Don't use the information if it's not valid. *