Skip to content

Commit fb2279f

Browse files
committed
Add a changed signal to QgsRelationManager
1 parent 808464f commit fb2279f

File tree

3 files changed

+25
-1
lines changed

3 files changed

+25
-1
lines changed

python/core/qgsrelationmanager.sip

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,10 @@ class QgsRelationManager : QObject
2222

2323
signals:
2424
void relationsLoaded();
25+
26+
/**
27+
* Emitted when relations are added or removed to the manager.
28+
* @note added in QGIS 2.5
29+
*/
30+
void changed();
2531
};

src/core/qgsrelationmanager.cpp

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ void QgsRelationManager::setRelations( const QList<QgsRelation>& relations )
3737
{
3838
addRelation( rel );
3939
}
40+
emit changed();
4041
}
4142

4243
const QMap<QString, QgsRelation>& QgsRelationManager::relations() const
@@ -52,16 +53,19 @@ void QgsRelationManager::addRelation( const QgsRelation& relation )
5253
mRelations.insert( relation.id(), relation );
5354

5455
mProject->dirty( true );
56+
emit changed();
5557
}
5658

5759
void QgsRelationManager::removeRelation( const QString& name )
5860
{
5961
mRelations.remove( name );
62+
emit changed();
6063
}
6164

6265
void QgsRelationManager::removeRelation( const QgsRelation& relation )
6366
{
6467
mRelations.remove( relation.id() );
68+
emit changed();
6569
}
6670

6771
QgsRelation QgsRelationManager::relation( const QString& id ) const
@@ -72,6 +76,7 @@ QgsRelation QgsRelationManager::relation( const QString& id ) const
7276
void QgsRelationManager::clear()
7377
{
7478
mRelations.clear();
79+
emit changed();
7580
}
7681

7782
QList<QgsRelation> QgsRelationManager::referencingRelations( QgsVectorLayer* layer, int fieldIdx ) const
@@ -152,6 +157,7 @@ void QgsRelationManager::readProject( const QDomDocument & doc )
152157
}
153158

154159
emit( relationsLoaded() );
160+
emit changed();
155161
}
156162

157163
void QgsRelationManager::writeProject( QDomDocument & doc )
@@ -175,7 +181,8 @@ void QgsRelationManager::writeProject( QDomDocument & doc )
175181

176182
void QgsRelationManager::layersRemoved( const QStringList& layers )
177183
{
178-
Q_FOREACH ( const QString& layer, layers )
184+
bool relationsChanged = false;
185+
Q_FOREACH( const QString& layer, layers )
179186
{
180187
QMapIterator<QString, QgsRelation> it( mRelations );
181188

@@ -187,7 +194,12 @@ void QgsRelationManager::layersRemoved( const QStringList& layers )
187194
|| it.value().referencingLayerId() == layer )
188195
{
189196
mRelations.remove( it.key() );
197+
relationsChanged = true;
190198
}
191199
}
192200
}
201+
if ( relationsChanged )
202+
{
203+
emit changed();
204+
}
193205
}

src/core/qgsrelationmanager.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,12 @@ class CORE_EXPORT QgsRelationManager : public QObject
107107
signals:
108108
void relationsLoaded();
109109

110+
/**
111+
* Emitted when relations are added or removed to the manager.
112+
* @note added in QGIS 2.5
113+
*/
114+
void changed();
115+
110116
private slots:
111117
void readProject( const QDomDocument &doc );
112118
void writeProject( QDomDocument &doc );

0 commit comments

Comments
 (0)