Make sure all attributes are fetched for distance based renderers

This commit is contained in:
Nyall Dawson 2016-09-12 11:17:17 +10:00
parent 3253cdc2fb
commit 7acb07f218
6 changed files with 20 additions and 0 deletions

View File

@ -16,6 +16,7 @@ class QgsPointClusterRenderer : QgsPointDistanceRenderer
virtual void startRender( QgsRenderContext& context, const QgsFields& fields );
void stopRender( QgsRenderContext& context );
QDomElement save( QDomDocument& doc );
virtual QList<QString> usedAttributes();
//! Create a renderer from XML element
static QgsFeatureRenderer* create( QDomElement& symbologyElem ) /Factory/;

View File

@ -26,6 +26,7 @@ class QgsPointDisplacementRenderer : QgsPointDistanceRenderer
virtual void startRender( QgsRenderContext& context, const QgsFields& fields );
void stopRender( QgsRenderContext& context );
QDomElement save( QDomDocument& doc );
virtual QList<QString> usedAttributes();
//! Create a renderer from XML element
static QgsFeatureRenderer* create( QDomElement& symbologyElem ) /Factory/;

View File

@ -179,6 +179,14 @@ QDomElement QgsPointClusterRenderer::save( QDomDocument& doc )
return rendererElement;
}
QList<QString> QgsPointClusterRenderer::usedAttributes()
{
QList<QString> attr = QgsPointDistanceRenderer::usedAttributes();
if ( mClusterSymbol )
attr.append( mClusterSymbol->usedAttributes().toList() );
return attr;
}
void QgsPointClusterRenderer::setClusterSymbol( QgsMarkerSymbol* symbol )
{
mClusterSymbol.reset( symbol );

View File

@ -35,6 +35,7 @@ class CORE_EXPORT QgsPointClusterRenderer: public QgsPointDistanceRenderer
virtual void startRender( QgsRenderContext& context, const QgsFields& fields ) override;
void stopRender( QgsRenderContext& context ) override;
QDomElement save( QDomDocument& doc ) override;
virtual QList<QString> usedAttributes() override;
//! Creates a renderer from XML element
static QgsFeatureRenderer* create( QDomElement& symbologyElem );

View File

@ -211,6 +211,14 @@ QDomElement QgsPointDisplacementRenderer::save( QDomDocument& doc )
return rendererElement;
}
QList<QString> QgsPointDisplacementRenderer::usedAttributes()
{
QList<QString> attr = QgsPointDistanceRenderer::usedAttributes();
if ( mCenterSymbol )
attr.append( mCenterSymbol->usedAttributes().toList() );
return attr;
}
void QgsPointDisplacementRenderer::setCenterSymbol( QgsMarkerSymbol* symbol )
{
mCenterSymbol.reset( symbol );

View File

@ -45,6 +45,7 @@ class CORE_EXPORT QgsPointDisplacementRenderer: public QgsPointDistanceRenderer
virtual void startRender( QgsRenderContext& context, const QgsFields& fields ) override;
void stopRender( QgsRenderContext& context ) override;
QDomElement save( QDomDocument& doc ) override;
virtual QList<QString> usedAttributes() override;
//! Create a renderer from XML element
static QgsFeatureRenderer* create( QDomElement& symbologyElem );