Esempio n. 1
0
void QgsLegendModel::setLayerSetAndGroups( const QStringList& layerIds, const QList< GroupLayerInfo >& groupInfo )
{
  setLayerSet( layerIds );

  QStandardItem* currentItem = 0;
  QStandardItem* currentGroupItem = 0;
  int i = 0;

  QList< GroupLayerInfo >::const_iterator infoIt = groupInfo.constBegin();
  for ( ; infoIt != groupInfo.constEnd() && i < invisibleRootItem()->rowCount(); )
  {
    currentItem = invisibleRootItem()->child( i, 0 );
    QString infoKey = infoIt->first;
    if ( infoKey.isNull() ) //a toplevel layer
    {
      ++i;
    }
    else //a group
    {
      currentGroupItem = addGroup( infoKey, i );
      ++i;
      QList<QString> layerList = infoIt->second;
      QList<QString>::const_iterator groupLayerIt = layerList.constBegin();
      for ( ; currentItem && ( groupLayerIt != layerList.constEnd() ); ++groupLayerIt )
      {
        //check if current item is contained in this group
        QgsComposerLayerItem* layerItem = dynamic_cast<QgsComposerLayerItem*>( currentItem );
        if ( !layerItem )
        {
          return; //should never happen
        }
        //QString layerID = currentItem->data(Qt::UserRole + 2).toString();
        QString layerID = layerItem->layerID();
        if ( layerList.contains( layerID ) )
        {
          takeRow( i );
          currentGroupItem->setChild( currentGroupItem->rowCount(), 0, currentItem );
        }
        else
        {
          ++i;
        }
        currentItem = invisibleRootItem()->child( i, 0 );
      }
    }
    ++infoIt;
  }
}
bool ImageCanvas::LoadObject(const QString & session, const QString & cam, const QString & img, const double & ux,
		const double & uy) {
	if ((current_session == session) && (current_cam == cam) && (current_img == img)) {
		CenterOnWorldPosition(ux, uy, 1.0);
		return true;
	}

	UnloadObject();

	QFileInfo image_file(db->GetImageLocation(session, cam, img));
	if(!image_file.isFile() || !image_file.isReadable())
		return false;

	image_layer = new QgsRasterLayer(image_file.filePath(),image_file.fileName());
	connect(image_layer,SIGNAL(progressUpdate(int)),this,SLOT(ShowProgress(int)));
	image_layer->setLayerName("image");
    image_provider = image_layer->dataProvider();
    if (!image_layer->isValid())
    	return false;

    QgsContrastEnhancement* qgsContrastEnhRed = new QgsContrastEnhancement(QGis::UInt16);
    QgsContrastEnhancement* qgsContrastEnhGreen = new QgsContrastEnhancement(QGis::UInt16);
    QgsContrastEnhancement* qgsContrastEnhBlue = new QgsContrastEnhancement(QGis::UInt16);

    QgsMultiBandColorRenderer* renderer = new QgsMultiBandColorRenderer( image_provider, 1, 2, 3,
                qgsContrastEnhRed, qgsContrastEnhGreen, qgsContrastEnhBlue);

    image_layer->setRenderer( renderer );

    layer_registry->addMapLayer(image_layer);

    QList<QgsMapCanvasLayer> layer_set;
    layer_set.append(image_layer);
	setLayerSet(layer_set);

	CenterOnWorldPosition(ux, uy, 1.0);

	current_session = session;
	current_cam = cam;
	current_img = img;

	return true;
}