int QgsContinuousColorRenderer::readXML( const QDomNode& rnode, QgsVectorLayer& vl ) { mGeometryType = vl.geometryType(); QDomNode classnode = rnode.namedItem( "classificationfield" ); QString classificationField = classnode.toElement().text(); QgsVectorDataProvider* theProvider = vl.dataProvider(); if ( !theProvider ) { return 1; } int classificationId = vl.fieldNameIndex( classificationField ); if ( classificationId == -1 ) { //go on. Because with joins, it might be the joined layer is not loaded yet } setClassificationField( classificationId ); //polygon outline QDomNode polyoutlinenode = rnode.namedItem( "polygonoutline" ); QString polyoutline = polyoutlinenode.toElement().text(); if ( polyoutline == "0" ) { mDrawPolygonOutline = false; } else if ( polyoutline == "1" ) { mDrawPolygonOutline = true; } //read the settings for the renderitem of the minimum value QDomNode lowernode = rnode.namedItem( "lowestsymbol" ); QDomNode lsymbolnode = lowernode.namedItem( "symbol" ); if ( ! lsymbolnode.isNull() ) { QgsSymbol* lsy = new QgsSymbol( mGeometryType ); lsy->readXML( lsymbolnode, &vl ); setMinimumSymbol( lsy ); } QDomNode uppernode = rnode.namedItem( "highestsymbol" ); QDomNode usymbolnode = uppernode.namedItem( "symbol" ); if ( ! usymbolnode.isNull() ) { QgsSymbol* usy = new QgsSymbol( mGeometryType ); usy->readXML( usymbolnode, &vl ); setMaximumSymbol( usy ); } vl.setRenderer( this ); return 0; }
int QgsUniqueValueRenderer::readXML( const QDomNode& rnode, QgsVectorLayer& vl ) { mGeometryType = vl.geometryType(); QDomNode classnode = rnode.namedItem( "classificationfield" ); QString classificationField = classnode.toElement().text(); QgsVectorDataProvider* theProvider = vl.dataProvider(); if ( !theProvider ) { return 1; } int classificationId = vl.fieldNameIndex( classificationField ); if ( classificationId == -1 ) { //go on. Because with joins, it might be the joined layer is not loaded yet } setClassificationField( classificationId ); QDomNode symbolnode = rnode.namedItem( "symbol" ); while ( !symbolnode.isNull() ) { QgsSymbol* msy = new QgsSymbol( mGeometryType ); msy->readXML( symbolnode, &vl ); insertValue( msy->lowerValue(), msy ); symbolnode = symbolnode.nextSibling(); } updateSymbolAttributes(); vl.setRenderer( this ); return 0; }
int QgsGraduatedSymbolRenderer::readXML( const QDomNode& rnode, QgsVectorLayer& vl ) { mGeometryType = vl.geometryType(); QDomNode modeNode = rnode.namedItem( "mode" ); QString modeValue = modeNode.toElement().text(); QDomNode classnode = rnode.namedItem( "classificationfield" ); QString classificationField = classnode.toElement().text(); QgsVectorDataProvider* theProvider = vl.dataProvider(); if ( !theProvider ) { return 1; } if ( modeValue == "Empty" ) { mMode = QgsGraduatedSymbolRenderer::Empty; } else if ( modeValue == "Quantile" ) { mMode = QgsGraduatedSymbolRenderer::Quantile; } else //default { mMode = QgsGraduatedSymbolRenderer::EqualInterval; } int classificationId = theProvider->fieldNameIndex( classificationField ); if ( classificationId == -1 ) { return 2; //@todo: handle gracefully in gui situation where user needs to nominate field } setClassificationField( classificationId ); QDomNode symbolnode = rnode.namedItem( "symbol" ); while ( !symbolnode.isNull() ) { QgsSymbol* sy = new QgsSymbol( mGeometryType ); sy->readXML( symbolnode, &vl ); addSymbol( sy ); symbolnode = symbolnode.nextSibling(); } updateSymbolAttributes(); vl.setRenderer( this ); return 0; }
int QgsGraduatedSymbolRenderer::readXML( const QDomNode& rnode, QgsVectorLayer& vl ) { mGeometryType = vl.geometryType(); QDomNode modeNode = rnode.namedItem( "mode" ); QString modeValue = modeNode.toElement().text(); QDomNode classnode = rnode.namedItem( "classificationfield" ); QString classificationField = classnode.toElement().text(); QgsVectorDataProvider* theProvider = vl.dataProvider(); if ( !theProvider ) { return 1; } if ( modeValue == "Empty" ) { mMode = QgsGraduatedSymbolRenderer::Empty; } else if ( modeValue == "Quantile" ) { mMode = QgsGraduatedSymbolRenderer::Quantile; } else //default { mMode = QgsGraduatedSymbolRenderer::EqualInterval; } int classificationId = vl.fieldNameIndex( classificationField ); if ( classificationId == -1 ) { //go on. Because with joins, it might be the joined layer is not loaded yet } setClassificationField( classificationId ); QDomNode symbolnode = rnode.namedItem( "symbol" ); while ( !symbolnode.isNull() ) { QgsSymbol* sy = new QgsSymbol( mGeometryType ); sy->readXML( symbolnode, &vl ); addSymbol( sy ); symbolnode = symbolnode.nextSibling(); } updateSymbolAttributes(); vl.setRenderer( this ); return 0; }
void QgsComposerSymbolItem::readXML( const QDomElement& itemElem ) { if ( itemElem.isNull() ) { return; } setText( itemElem.attribute( "text", "" ) ); setLayerID( itemElem.attribute( "layerId", "" ) ); QgsVectorLayer* vLayer = qobject_cast<QgsVectorLayer*>( QgsMapLayerRegistry::instance()->mapLayer( mLayerID ) ); if ( vLayer ) { QDomElement symbolElem = itemElem.firstChildElement( "symbol" ); if ( !symbolElem.isNull() ) { QgsSymbol* symbol = new QgsSymbol( vLayer->geometryType() ); symbol->readXML( symbolElem, vLayer ); setSymbol( symbol ); //add icon switch ( symbol->type() ) { case QGis::Point: setIcon( QIcon( QPixmap::fromImage( symbol->getPointSymbolAsImage() ) ) ); break; case QGis::Line: setIcon( QIcon( QPixmap::fromImage( symbol->getLineSymbolAsImage() ) ) ); break; case QGis::Polygon: setIcon( QIcon( QPixmap::fromImage( symbol->getPolygonSymbolAsImage() ) ) ); break; case QGis::NoGeometry: setIcon( QIcon( QgsApplication::activeThemePath() + "/mIconTableLayer.png" ) ); break; case QGis::UnknownGeometry: // should not occur break; } } } }
int QgsSingleSymbolRenderer::readXML( const QDomNode& rnode, QgsVectorLayer& vl ) { mGeometryType = vl.geometryType(); QgsSymbol* sy = new QgsSymbol( mGeometryType ); QDomNode synode = rnode.namedItem( "symbol" ); if ( synode.isNull() ) { QgsDebugMsg( "No symbol node in project file's renderitem Dom" ); // XXX abort? } else { sy->readXML( synode, &vl ); } updateSymbolAttributes(); //create a renderer and add it to the vector layer addSymbol( sy ); vl.setRenderer( this ); return 0; }