const QImage& QgsWMSLegendNode::getLegendGraphic() const { if ( ! mValid && ! mFetcher ) { // or maybe in presence of a downloader we should just delete it // and start a new one ? QgsRasterLayer* layer = qobject_cast<QgsRasterLayer*>( mLayerNode->layer() ); const QgsLayerTreeModel* mod = model(); if ( ! mod ) return mImage; const QgsMapSettings* ms = mod->legendFilterByMap(); QgsRasterDataProvider* prov = layer->dataProvider(); Q_ASSERT( ! mFetcher ); mFetcher.reset( prov->getLegendGraphicFetcher( ms ) ); if ( mFetcher ) { connect( mFetcher.data(), SIGNAL( finish( const QImage& ) ), this, SLOT( getLegendGraphicFinished( const QImage& ) ) ); connect( mFetcher.data(), SIGNAL( error( const QString& ) ), this, SLOT( getLegendGraphicErrored( const QString& ) ) ); connect( mFetcher.data(), SIGNAL( progress( qint64, qint64 ) ), this, SLOT( getLegendGraphicProgress( qint64, qint64 ) ) ); mFetcher->start(); } // else QgsDebugMsg("XXX No legend supported ?"); }
QImage QgsWmsLegendNode::getLegendGraphic() const { if ( ! mValid && ! mFetcher ) { // or maybe in presence of a downloader we should just delete it // and start a new one ? QgsRasterLayer *layer = qobject_cast<QgsRasterLayer *>( mLayerNode->layer() ); const QgsLayerTreeModel *mod = model(); if ( ! mod ) return mImage; const QgsMapSettings *ms = mod->legendFilterMapSettings(); QgsRasterDataProvider *prov = layer->dataProvider(); if ( ! prov ) return mImage; Q_ASSERT( ! mFetcher ); mFetcher.reset( prov->getLegendGraphicFetcher( ms ) ); if ( mFetcher ) { connect( mFetcher.get(), &QgsImageFetcher::finish, this, &QgsWmsLegendNode::getLegendGraphicFinished ); connect( mFetcher.get(), &QgsImageFetcher::error, this, &QgsWmsLegendNode::getLegendGraphicErrored ); connect( mFetcher.get(), &QgsImageFetcher::progress, this, &QgsWmsLegendNode::getLegendGraphicProgress ); mFetcher->start(); } // else QgsDebugMsg("XXX No legend supported?"); } return mImage; }