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 ) ) );
  }
}