wmts: use QObject property to make tile resolutions available to tilescalewidget

This commit is contained in:
Juergen E. Fischer 2012-05-22 21:18:32 +02:00
parent dfb8fcb971
commit e7af002b53
3 changed files with 21 additions and 27 deletions

View File

@ -18,7 +18,6 @@
#include "qgstilescalewidget.h"
#include "qgsmapcanvas.h"
#include "qgsrasterlayer.h"
#include "qgswmsprovider.h"
#include "qgsmessagelog.h"
#include "qgslogger.h"
@ -46,28 +45,24 @@ QgsTileScaleWidget::~QgsTileScaleWidget()
void QgsTileScaleWidget::layerChanged( QgsMapLayer *layer )
{
QgsRasterLayer *rl = qobject_cast<QgsRasterLayer *>( layer );
if ( !rl )
return;
QgsWmsProvider *wms = qobject_cast<QgsWmsProvider *>( rl->dataProvider() );
if ( !wms )
return;
QgsWmtsTileMatrixSet *tileMatrixSet = wms->tileMatrixSet();
if ( !tileMatrixSet )
return;
mSlider->setDisabled( true );
mResolutions = tileMatrixSet->tileMatrices.keys();
qSort( mResolutions );
QgsRasterLayer *rl = qobject_cast<QgsRasterLayer *>( layer );
if ( !rl || rl->providerType() != "wms" || !rl->dataProvider() )
return;
for ( int i = 0; i < mResolutions.size(); i++ )
QVariant res = rl->dataProvider()->property( "resolutions" );
mResolutions.clear();
foreach( QVariant r, res.toList() )
{
QgsDebugMsg( QString( "found resolution %1: %2" ).arg( i ).arg( mResolutions[i] ) );
QgsDebugMsg( QString( "found resolution: %1" ).arg( r.toDouble() ) );
mResolutions << r.toDouble();
}
if ( mResolutions.size() == 0 )
return;
mSlider->setRange( 0, mResolutions.size() - 1 );
mSlider->setTickInterval( 1 );
mSlider->setInvertedAppearance( true );

View File

@ -410,15 +410,24 @@ void QgsWmsProvider::addLayers( QStringList const &layers,
}
}
QList<QVariant> resolutions;
if ( mTileMatrixSets.contains( mTileMatrixSetId ) )
{
mTileMatrixSet = &mTileMatrixSets[ mTileMatrixSetId ];
QList<double> keys = mTileMatrixSet->tileMatrices.keys();
qSort( keys );
foreach( double key, keys )
{
resolutions << key;
}
}
else
{
mTileMatrixSet = 0;
}
setProperty( "resolutions", resolutions );
mValid = mTileLayer != 0 && mTileMatrixSet != 0;
}

View File

@ -742,16 +742,6 @@ class QgsWmsProvider : public QgsRasterDataProvider
static QVector<QgsWmsSupportedFormat> supportedFormats();
/**
returns the current tile layer (if any)
*/
QgsWmtsTileLayer *tileLayer() { return mTileLayer; }
/**
returns the current tile matrix set (if any)
*/
QgsWmtsTileMatrixSet *tileMatrixSet() { return mTileMatrixSet; }
signals:
/** \brief emit a signal to notify of a progress event */