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. *