Exemplo n.º 1
0
int QgsLegendModel::addRasterLayerItems( QStandardItem* layerItem, QgsMapLayer* rlayer )
{
  if ( !layerItem || !rlayer )
  {
    return 1;
  }

  QgsRasterLayer* rasterLayer = qobject_cast<QgsRasterLayer *>( rlayer );
  if ( !rasterLayer )
  {
    return 2;
  }

  QList< QPair< QString, QColor > > rasterItemList = rasterLayer->legendSymbologyItems();
  QList< QPair< QString, QColor > >::const_iterator itemIt = rasterItemList.constBegin();
  for(; itemIt != rasterItemList.constEnd(); ++itemIt )
  {
    QgsComposerRasterSymbolItem* currentSymbolItem = new QgsComposerRasterSymbolItem( itemIt->first );
    if( mHasTopLevelWindow )
    {
      QPixmap itemPixmap( 20, 20 );
      itemPixmap.fill( itemIt->second );
      currentSymbolItem->setIcon( QIcon( itemPixmap ) );
    }
    currentSymbolItem->setLayerID( rasterLayer->id() );
    currentSymbolItem->setColor( itemIt->second );
    int currentRowCount = layerItem->rowCount();
    layerItem->setChild( currentRowCount, 0, currentSymbolItem );
  }

  return 0;
}
Exemplo n.º 2
0
QStandardItem* QgsComposerRasterSymbolItem::clone() const
{
  QgsComposerRasterSymbolItem* cloneItem  = new QgsComposerRasterSymbolItem();
  *cloneItem = *this;
  cloneItem->setLayerID( mLayerID );
  return cloneItem;
}
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;
}
Exemplo n.º 4
0
int QgsLegendModel::addRasterLayerItems( QStandardItem* layerItem, QgsMapLayer* rlayer )
{
  if ( !layerItem || !rlayer )
  {
    return 1;
  }

  QgsRasterLayer* rasterLayer = qobject_cast<QgsRasterLayer *>( rlayer );
  if ( !rasterLayer )
  {
    return 2;
  }

  QList< QPair< QString, QColor > > rasterItemList = rasterLayer->legendSymbologyItems();
  QList< QPair< QString, QColor > >::const_iterator itemIt = rasterItemList.constBegin();
  int row = 0;
  for ( ; itemIt != rasterItemList.constEnd(); ++itemIt )
  {
    QgsComposerRasterSymbolItem* currentSymbolItem = new QgsComposerRasterSymbolItem( itemIt->first );

    QgsComposerRasterSymbolItem* oldSymbolItem = dynamic_cast<QgsComposerRasterSymbolItem*>( layerItem->child( row, 0 ) );
    if ( oldSymbolItem )
    {
      currentSymbolItem->setUserText( oldSymbolItem->userText() );
      currentSymbolItem->setText( currentSymbolItem->userText() );
    }

    if ( mHasTopLevelWindow )
    {
      QPixmap itemPixmap( 20, 20 );
      itemPixmap.fill( itemIt->second );
      currentSymbolItem->setIcon( QIcon( itemPixmap ) );
    }
    currentSymbolItem->setLayerID( rasterLayer->id() );
    currentSymbolItem->setColor( itemIt->second );
    int currentRowCount = layerItem->rowCount();
    layerItem->setChild( currentRowCount, 0, currentSymbolItem );
    row++;
  }

  // Delete following old items (if current number of items decreased)
  for ( int i = layerItem->rowCount() - 1; i >= row; --i )
  {
    layerItem->removeRow( i );
  }

  return 0;
}