void QgsZonalStatisticsDialog::insertAvailableLayers()
{
  //insert available raster layers
  //enter available layers into the combo box
  QMap<QString, QgsMapLayer*> mapLayers = QgsMapLayerRegistry::instance()->mapLayers();
  QMap<QString, QgsMapLayer*>::iterator layer_it = mapLayers.begin();

  for ( ; layer_it != mapLayers.end(); ++layer_it )
  {
    QgsRasterLayer* rl = dynamic_cast<QgsRasterLayer*>( layer_it.value() );
    if ( rl )
    {
      QgsRasterDataProvider* rp = rl->dataProvider();
      if ( rp && rp->name() == "gdal" )
      {
        mRasterLayerComboBox->addItem( rl->name(), QVariant( rl->source() ) );
      }
    }
    else
    {
      QgsVectorLayer* vl = dynamic_cast<QgsVectorLayer*>( layer_it.value() );
      if ( vl && vl->geometryType() == QGis::Polygon )
      {
        QgsVectorDataProvider* provider  = vl->dataProvider();
        if ( provider->capabilities() & QgsVectorDataProvider::AddAttributes )
        {
          mPolygonLayerComboBox->addItem( vl->name(), QVariant( vl->id() ) );
        }
      }
    }
  }
}
void QgsTileScaleWidget::layerChanged( QgsMapLayer *layer )
{
  QgsRasterLayer *rl = qobject_cast<QgsRasterLayer *>( layer );

  mResolutions.clear();
  mSlider->setDisabled( true );

  if ( !rl || rl->providerType() != "wms" )
    return;

  QString uri = rl->source();
  int tiledpos = uri.indexOf( "tiled=" );
  int urlpos = uri.indexOf( "url=" );

  if ( tiledpos >= 0 && urlpos >= 0 && urlpos > tiledpos )
  {
    uri = uri.mid( tiledpos + 6 );
    int pos = uri.indexOf( "," );
    if ( pos >= 0 )
      uri = uri.left( pos );
    QStringList params = uri.split( ";" );
    if ( params.size() < 3 )
      return;

    params.takeFirst();
    params.takeFirst();

    mResolutions.clear();
    foreach( QString r, params )
    {
      mResolutions << r.toDouble();
    }
    qSort( mResolutions );

    for ( int i = 0; i < mResolutions.size(); i++ )
      QgsDebugMsg( QString( "found resolution %1: %2" ).arg( i ).arg( mResolutions[i] ) );

    mSlider->setRange( 0, mResolutions.size() - 1 );
    mSlider->setTickInterval( 1 );
    mSlider->setInvertedAppearance( true );
    mSlider->setPageStep( 1 );
    mSlider->setTracking( false );

    scaleChanged( mMapCanvas->scale() );

    mSlider->setEnabled( true );
    show();
  }
QString QgsZonalStatisticsDialog::rasterFilePath() const
{
  QgsRasterLayer* layer = rasterLayer();
  return layer ? layer->source() : QString();
}