int QgsLegendModel::addRasterLayerItem( QStandardItem* layerItem, QgsMapLayer* rlayer ) { if ( !layerItem || !rlayer ) { return 1; } QgsRasterLayer* rasterLayer = qobject_cast<QgsRasterLayer *>( rlayer ); if ( !rasterLayer ) { return 2; } QgsComposerRasterSymbolItem* currentSymbolItem = new QgsComposerRasterSymbolItem(); //use a vector symbol item without symbol if ( mHasTopLevelWindow ) //only use QIcon / QPixmap if we have a running x-server { currentSymbolItem->setIcon( QIcon( rasterLayer->legendAsPixmap( true ) ) ); } currentSymbolItem->setLayerID( rasterLayer->id() ); int currentRowCount = layerItem->rowCount(); layerItem->setChild( currentRowCount, 0, currentSymbolItem ); return 0; }
void QgsComposerRasterSymbolItem::readXML( const QDomElement& itemElem ) { if ( itemElem.isNull() ) { return; } setText( itemElem.attribute( "text", "" ) ); setLayerID( itemElem.attribute( "layerId", "" ) ); QgsRasterLayer* rLayer = qobject_cast<QgsRasterLayer*>( QgsMapLayerRegistry::instance()->mapLayer( mLayerID ) ); if ( rLayer ) { setIcon( QIcon( rLayer->legendAsPixmap( true ) ) ); } }