Skip to content

Commit

Permalink
MetadataUrl - Fix some "const" and PR review
Browse files Browse the repository at this point in the history
  • Loading branch information
Gustry committed Sep 16, 2021
1 parent 2e9a151 commit e8c3e7c
Show file tree
Hide file tree
Showing 6 changed files with 70 additions and 65 deletions.
8 changes: 7 additions & 1 deletion doc/api_break.dox
Expand Up @@ -33,6 +33,12 @@ QgsNewNameDialog {#qgis_api_break_3_22_qgsnewnamedialog}
away from the deprecated QRegExp class. It has been replaced with QgsNewNameDialog::setRegularExpression which
accepts a string argument.

QgsVectorLayerServerProperties {#qgis_api_break_3_22_qgsvectorlayerserverproperties}
------------------------------

- The content of QgsVectorLayerServerProperties has been moved in QgsMapLayerServerProperties. But the member
in QgsVectorLayer::serverProperties() is still existing.

QGIS 3.20 {#qgis_api_break_3_20}
=========

Expand All @@ -48,7 +54,7 @@ QgsMapLayer {#qgis_api_break_3_20_qgsmaplayer}

- QgsMapLayer::setDataSource is no longer virtual. It has been replaced with QgsMapLayer::setDataSourcePrivate. This is only relevant for subclassing QgsMapLayer, for code that only uses the subclasses (QgsVectorLayer, QgsRasterLayer, ...) this has no effect.

- QgsVectorLayerFeatureIterator::FetchJoinInfo::joinLayer was removed. This layer pointer was dangerous and not safe to access in any situation.
- QgsVectorLayerFeatureIterator::FetchJoinInfo::joinLayer was removed. This layer pointer was dangerous and not safe to access in any situation.

QGIS 3.4 {#qgis_api_break_3_4}
========
Expand Down
45 changes: 23 additions & 22 deletions src/core/qgsmaplayer.cpp
Expand Up @@ -202,13 +202,14 @@ void QgsMapLayer::setMetadataUrl( const QString &metaUrl )
QList<QgsMapLayerServerProperties::MetadataUrl> urls = serverProperties()->metadataUrls();
if ( urls.isEmpty() )
{
QgsMapLayerServerProperties::MetadataUrl newItem( metaUrl, QLatin1String(), QLatin1String() );
urls.insert( 0, newItem );
const QgsMapLayerServerProperties::MetadataUrl newItem = QgsMapLayerServerProperties::MetadataUrl( metaUrl, QLatin1String(), QLatin1String() );
urls.prepend( newItem );
}
else
{
QgsMapLayerServerProperties::MetadataUrl old = urls.takeAt( 0 );
QgsMapLayerServerProperties::MetadataUrl newItem( metaUrl, old.type, old.format );
const QgsMapLayerServerProperties::MetadataUrl old = urls.takeFirst();
const QgsMapLayerServerProperties::MetadataUrl newItem( metaUrl, old.type, old.format );
urls.prepend( newItem );
}
serverProperties()->setMetadataUrls( urls );
}
Expand All @@ -221,7 +222,7 @@ QString QgsMapLayer::metadataUrl() const
}
else
{
return mServerProperties->metadataUrls().at( 0 ).url;
return mServerProperties->metadataUrls().first().url;
}
}

Expand All @@ -230,14 +231,14 @@ void QgsMapLayer::setMetadataUrlType( const QString &metaUrlType )
QList<QgsMapLayerServerProperties::MetadataUrl> urls = mServerProperties->metadataUrls();
if ( urls.isEmpty() )
{
QgsMapLayerServerProperties::MetadataUrl newItem( QLatin1String(), metaUrlType, QLatin1String() );
urls.insert( 0, newItem );
const QgsMapLayerServerProperties::MetadataUrl newItem( QLatin1String(), metaUrlType, QLatin1String() );
urls.prepend( newItem );
}
else
{
QgsMapLayerServerProperties::MetadataUrl old = urls.takeFirst();
QgsMapLayerServerProperties::MetadataUrl newItem( old.url, metaUrlType, old.format );
urls.insert( 0, newItem );
const QgsMapLayerServerProperties::MetadataUrl old = urls.takeFirst();
const QgsMapLayerServerProperties::MetadataUrl newItem( old.url, metaUrlType, old.format );
urls.prepend( newItem );
}
mServerProperties->setMetadataUrls( urls );
}
Expand All @@ -250,7 +251,7 @@ QString QgsMapLayer::metadataUrlType() const
}
else
{
return mServerProperties->metadataUrls().at( 0 ).type;
return mServerProperties->metadataUrls().first().type;
}
}

Expand All @@ -259,14 +260,14 @@ void QgsMapLayer::setMetadataUrlFormat( const QString &metaUrlFormat )
QList<QgsMapLayerServerProperties::MetadataUrl> urls = mServerProperties->metadataUrls();
if ( urls.isEmpty() )
{
QgsMapLayerServerProperties::MetadataUrl newItem( QLatin1String(), QLatin1String(), metaUrlFormat );
urls.insert( 0, newItem );
const QgsMapLayerServerProperties::MetadataUrl newItem( QLatin1String(), QLatin1String(), metaUrlFormat );
urls.prepend( newItem );
}
else
{
QgsMapLayerServerProperties::MetadataUrl old = urls.takeAt( 0 );
QgsMapLayerServerProperties::MetadataUrl newItem( old.url, old.type, metaUrlFormat );
urls.insert( 0, newItem );
const QgsMapLayerServerProperties::MetadataUrl old = urls.takeFirst( );
const QgsMapLayerServerProperties::MetadataUrl newItem( old.url, old.type, metaUrlFormat );
urls.prepend( newItem );
}
mServerProperties->setMetadataUrls( urls );
}
Expand All @@ -279,7 +280,7 @@ QString QgsMapLayer::metadataUrlFormat() const
}
else
{
return mServerProperties->metadataUrls().at( 0 ).format;
return mServerProperties->metadataUrls().first().format;
}
}

Expand Down Expand Up @@ -477,13 +478,13 @@ bool QgsMapLayer::readLayerXml( const QDomElement &layerElement, QgsReadWriteCon
{
// metadataUrl is still empty, maybe it's a QGIS Project < 3.22
// keep for legacy
QDomElement metaUrlElem = layerElement.firstChildElement( QStringLiteral( "metadataUrl" ) );
const QDomElement metaUrlElem = layerElement.firstChildElement( QStringLiteral( "metadataUrl" ) );
if ( !metaUrlElem.isNull() )
{
QString url = metaUrlElem.text();
QString type = metaUrlElem.attribute( QStringLiteral( "type" ), QString() );
QString format = metaUrlElem.attribute( QStringLiteral( "format" ), QString() );
QgsMapLayerServerProperties::MetadataUrl newItem( url, type, format );
const QString url = metaUrlElem.text();
const QString type = metaUrlElem.attribute( QStringLiteral( "type" ), QString() );
const QString format = metaUrlElem.attribute( QStringLiteral( "format" ), QString() );
const QgsMapLayerServerProperties::MetadataUrl newItem( url, type, format );
mServerProperties->setMetadataUrls( QList<QgsMapLayerServerProperties::MetadataUrl>() << newItem );
}
}
Expand Down
71 changes: 36 additions & 35 deletions src/core/qgsmaplayerserverproperties.cpp
Expand Up @@ -130,7 +130,7 @@ const QList< QgsServerWmsDimensionProperties::WmsDimensionInfo > QgsServerWmsDim

void QgsServerWmsDimensionProperties::readXml( const QDomNode &layer_node )
{
QgsServerWmsDimensionProperties::reset();
reset();

// Apply only for vector layers
if ( layer()->type() != QgsMapLayerType::VectorLayer )
Expand All @@ -139,53 +139,54 @@ void QgsServerWmsDimensionProperties::readXml( const QDomNode &layer_node )
const QgsFields fields = static_cast<const QgsVectorLayer *>( layer() )->fields();
// QGIS Server WMS Dimensions
const QDomNode wmsDimsNode = layer_node.namedItem( QStringLiteral( "wmsDimensions" ) );
if ( !wmsDimsNode.isNull() )
if ( wmsDimsNode.isNull() )
{
return;
}
const QDomElement wmsDimsElem = wmsDimsNode.toElement();
const QDomNodeList wmsDimsList = wmsDimsElem.elementsByTagName( QStringLiteral( "dimension" ) );
for ( int i = 0; i < wmsDimsList.size(); ++i )
{
const QDomElement wmsDimsElem = wmsDimsNode.toElement();
QDomNodeList wmsDimsList = wmsDimsElem.elementsByTagName( QStringLiteral( "dimension" ) );
for ( int i = 0; i < wmsDimsList.size(); ++i )
const QDomElement dimElem = wmsDimsList.at( i ).toElement();
const QString dimName = dimElem.attribute( QStringLiteral( "name" ) );
const QString dimFieldName = dimElem.attribute( QStringLiteral( "fieldName" ) );
// check field name
const int dimFieldNameIndex = fields.indexOf( dimFieldName );
if ( dimFieldNameIndex == -1 )
{
QDomElement dimElem = wmsDimsList.at( i ).toElement();
QString dimName = dimElem.attribute( QStringLiteral( "name" ) );
QString dimFieldName = dimElem.attribute( QStringLiteral( "fieldName" ) );
// check field name
int dimFieldNameIndex = fields.indexOf( dimFieldName );
if ( dimFieldNameIndex == -1 )
{
continue;
}
QVariant dimRefValue;
int dimDefaultDisplayType = dimElem.attribute( QStringLiteral( "defaultDisplayType" ) ).toInt();
if ( dimDefaultDisplayType == QgsServerWmsDimensionProperties::WmsDimensionInfo::AllValues )
continue;
}
QVariant dimRefValue;
const int dimDefaultDisplayType = dimElem.attribute( QStringLiteral( "defaultDisplayType" ) ).toInt();
if ( dimDefaultDisplayType == QgsServerWmsDimensionProperties::WmsDimensionInfo::AllValues )
{
const QString dimRefValueStr = dimElem.attribute( QStringLiteral( "referenceValue" ) );
if ( !dimRefValueStr.isEmpty() )
{
QString dimRefValueStr = dimElem.attribute( QStringLiteral( "referenceValue" ) );
if ( !dimRefValueStr.isEmpty() )
const QgsField dimField = fields.at( dimFieldNameIndex );
dimRefValue = QVariant( dimRefValueStr );
if ( !dimField.convertCompatible( dimRefValue ) )
{
QgsField dimField = fields.at( dimFieldNameIndex );
dimRefValue = QVariant( dimRefValueStr );
if ( !dimField.convertCompatible( dimRefValue ) )
{
continue;
}
continue;
}
}
QgsServerWmsDimensionProperties::WmsDimensionInfo dim( dimName, dimFieldName,
dimElem.attribute( QStringLiteral( "endFieldName" ) ),
dimElem.attribute( QStringLiteral( "units" ) ),
dimElem.attribute( QStringLiteral( "unitSymbol" ) ),
dimDefaultDisplayType, dimRefValue );
//XXX This add O(n^2) complexity !!!!
// addWmsDimension( dim );
// Better to trust the XML:
mWmsDimensions.append( dim );
}
QgsServerWmsDimensionProperties::WmsDimensionInfo dim( dimName, dimFieldName,
dimElem.attribute( QStringLiteral( "endFieldName" ) ),
dimElem.attribute( QStringLiteral( "units" ) ),
dimElem.attribute( QStringLiteral( "unitSymbol" ) ),
dimDefaultDisplayType, dimRefValue );
//XXX This add O(n^2) complexity !!!!
// addWmsDimension( dim );
// Better to trust the XML:
mWmsDimensions.append( dim );
}
}

void QgsServerWmsDimensionProperties::writeXml( QDomNode &layer_node, QDomDocument &document ) const
{
// save QGIS Server WMS Dimension definitions
if ( mWmsDimensions.size() > 0 )
if ( ! mWmsDimensions.isEmpty() )
{
QDomElement wmsDimsElem = document.createElement( QStringLiteral( "wmsDimensions" ) );
for ( const QgsServerWmsDimensionProperties::WmsDimensionInfo &dim : mWmsDimensions )
Expand Down
4 changes: 2 additions & 2 deletions src/gui/raster/qgsrasterlayerproperties.cpp
Expand Up @@ -823,7 +823,7 @@ void QgsRasterLayerProperties::sync()
const QList<QgsMapLayerServerProperties::MetadataUrl> &metaUrls = mRasterLayer->serverProperties()->metadataUrls();
for ( const QgsMapLayerServerProperties::MetadataUrl &metaUrl : metaUrls )
{
int row = mMetadataUrlModel->rowCount();
const int row = mMetadataUrlModel->rowCount();
mMetadataUrlModel->setItem( row, 0, new QStandardItem( metaUrl.url ) );
mMetadataUrlModel->setItem( row, 1, new QStandardItem( metaUrl.type ) );
mMetadataUrlModel->setItem( row, 2, new QStandardItem( metaUrl.format ) );
Expand Down Expand Up @@ -1535,7 +1535,7 @@ QLinearGradient QgsRasterLayerProperties::highlightGradient()

void QgsRasterLayerProperties::addMetadataUrl()
{
int row = mMetadataUrlModel->rowCount();
const int row = mMetadataUrlModel->rowCount();
mMetadataUrlModel->setItem( row, 0, new QStandardItem( QLatin1String() ) );
mMetadataUrlModel->setItem( row, 1, new QStandardItem( QLatin1String() ) );
mMetadataUrlModel->setItem( row, 2, new QStandardItem( QLatin1String() ) );
Expand Down
4 changes: 2 additions & 2 deletions src/gui/vector/qgsvectorlayerproperties.cpp
Expand Up @@ -362,7 +362,7 @@ QgsVectorLayerProperties::QgsVectorLayerProperties(
const QList<QgsMapLayerServerProperties::MetadataUrl> &metaUrls = mLayer->serverProperties()->metadataUrls();
for ( const QgsMapLayerServerProperties::MetadataUrl &metaUrl : metaUrls )
{
int row = mMetadataUrlModel->rowCount();
const int row = mMetadataUrlModel->rowCount();
mMetadataUrlModel->setItem( row, 0, new QStandardItem( metaUrl.url ) );
mMetadataUrlModel->setItem( row, 1, new QStandardItem( metaUrl.type ) );
mMetadataUrlModel->setItem( row, 2, new QStandardItem( metaUrl.format ) );
Expand Down Expand Up @@ -513,7 +513,7 @@ void QgsVectorLayerProperties::insertFieldOrExpression()

void QgsVectorLayerProperties::addMetadataUrl()
{
int row = mMetadataUrlModel->rowCount();
const int row = mMetadataUrlModel->rowCount();
mMetadataUrlModel->setItem( row, 0, new QStandardItem( QLatin1String() ) );
mMetadataUrlModel->setItem( row, 1, new QStandardItem( QLatin1String() ) );
mMetadataUrlModel->setItem( row, 2, new QStandardItem( QLatin1String() ) );
Expand Down
3 changes: 0 additions & 3 deletions tests/src/python/test_qgsvectorlayer.py
Expand Up @@ -59,7 +59,6 @@
QgsMapLayerDependency,
QgsRenderContext,
QgsPalLayerSettings,
# QgsVectorLayerServerProperties,
QgsVectorLayerSimpleLabeling,
QgsSingleCategoryDiagramRenderer,
QgsDiagramLayerSettings,
Expand Down Expand Up @@ -2920,8 +2919,6 @@ def testGetFeatureLimitWithEdits(self):
def test_server_properties(self):
""" Test server properties. """
layer = QgsVectorLayer('Point?field=fldtxt:string', 'layer_1', 'memory')
# This should pass
# self.assertIsInstance(layer.serverProperties(), QgsVectorLayerServerProperties)
self.assertIsInstance(layer.serverProperties(), QgsMapLayerServerProperties)

def testClone(self):
Expand Down

0 comments on commit e8c3e7c

Please sign in to comment.