diff --git a/python/core/auto_generated/metadata/qgslayermetadataformatter.sip.in b/python/core/auto_generated/metadata/qgslayermetadataformatter.sip.in index d72760d4d5c..60c6728dfb9 100644 --- a/python/core/auto_generated/metadata/qgslayermetadataformatter.sip.in +++ b/python/core/auto_generated/metadata/qgslayermetadataformatter.sip.in @@ -39,10 +39,12 @@ Formats the "Contacts" section according to a ``metadata`` object. This will return a HTML table. %End - QString extentSectionHtml() const; + QString extentSectionHtml( const bool showSpatialExtent = true ) const; %Docstring -Formats the "Extents" section according to a ``metadata`` object. +Formats the "Extents" section according to a ``metadata`` object (extent and temporal). This will return a HTML table. + +:param showSpatialExtent: flag if the spatial extent needs to be displayed. Default to true. %End QString identificationSectionHtml() const; diff --git a/src/core/metadata/qgslayermetadataformatter.cpp b/src/core/metadata/qgslayermetadataformatter.cpp index ad0053fb724..fa2691aa33c 100644 --- a/src/core/metadata/qgslayermetadataformatter.cpp +++ b/src/core/metadata/qgslayermetadataformatter.cpp @@ -107,50 +107,53 @@ QString QgsLayerMetadataFormatter::contactsSectionHtml() const return myMetadata; } -QString QgsLayerMetadataFormatter::extentSectionHtml() const +QString QgsLayerMetadataFormatter::extentSectionHtml( const bool showSpatialExtent ) const { - QString myMetadata = QStringLiteral( "\n" ); - myMetadata += QStringLiteral( "\n" ); - const QgsLayerMetadata::Extent extent = mMetadata.extent(); - myMetadata += QStringLiteral( "
" ) + QObject::tr( "CRS" ) + QStringLiteral( "" ); - if ( mMetadata.crs().isValid() ) - { - myMetadata += mMetadata.crs().authid() + QStringLiteral( " - " ); - myMetadata += mMetadata.crs().description() + QStringLiteral( " - " ); - if ( mMetadata.crs().isGeographic() ) - myMetadata += QObject::tr( "Geographic" ); - else - myMetadata += QObject::tr( "Projected" ); - } - myMetadata += QLatin1String( "
" ) + QObject::tr( "Spatial Extent" ) + QStringLiteral( "" ); - const QList< QgsLayerMetadata::SpatialExtent > spatialExtents = extent.spatialExtents(); bool notFirstRow = false; - for ( const QgsLayerMetadata::SpatialExtent &spatialExtent : spatialExtents ) + QString myMetadata = QStringLiteral( "\n" ); + if ( showSpatialExtent ) { - if ( notFirstRow ) + myMetadata += QStringLiteral( "\n" ); + + myMetadata += QStringLiteral( "\n" ); } - myMetadata += QLatin1String( "\n" ); myMetadata += QStringLiteral( "
" ) + QObject::tr( "CRS" ) + QStringLiteral( "" ); + if ( mMetadata.crs().isValid() ) { - myMetadata += QLatin1String( "
\n" ); + myMetadata += mMetadata.crs().authid() + QStringLiteral( " - " ); + myMetadata += mMetadata.crs().description() + QStringLiteral( " - " ); + if ( mMetadata.crs().isGeographic() ) + myMetadata += QObject::tr( "Geographic" ); + else + myMetadata += QObject::tr( "Projected" ); } - myMetadata += QStringLiteral( "" ) + QObject::tr( "CRS" ) + QStringLiteral( ": " ) + spatialExtent.extentCrs.authid() + QStringLiteral( " - " ); - myMetadata += spatialExtent.extentCrs.description() + QStringLiteral( " - " ); - if ( spatialExtent.extentCrs.isGeographic() ) - myMetadata += QObject::tr( "Geographic" ); - else - myMetadata += QObject::tr( "Projected" ); - myMetadata += QStringLiteral( "
" ); - myMetadata += QStringLiteral( "" ) + QObject::tr( "X Minimum" ) + QStringLiteral( ": " ) + qgsDoubleToString( spatialExtent.bounds.xMinimum() ) + QStringLiteral( "
" ); - myMetadata += QStringLiteral( "" ) + QObject::tr( "Y Minimum" ) + QStringLiteral( ": " ) + qgsDoubleToString( spatialExtent.bounds.yMinimum() ) + QStringLiteral( "
" ); - myMetadata += QStringLiteral( "" ) + QObject::tr( "X Maximum" ) + QStringLiteral( ": " ) + qgsDoubleToString( spatialExtent.bounds.xMaximum() ) + QStringLiteral( "
" ); - myMetadata += QStringLiteral( "" ) + QObject::tr( "Y Maximum" ) + QStringLiteral( ": " ) + qgsDoubleToString( spatialExtent.bounds.yMaximum() ) + QStringLiteral( "
" ); - if ( spatialExtent.bounds.zMinimum() || spatialExtent.bounds.zMaximum() ) + myMetadata += QLatin1String( "
" ) + QObject::tr( "Spatial Extent" ) + QStringLiteral( "" ); + const QList< QgsLayerMetadata::SpatialExtent > spatialExtents = extent.spatialExtents(); + for ( const QgsLayerMetadata::SpatialExtent &spatialExtent : spatialExtents ) { - myMetadata += QStringLiteral( "" ) + QObject::tr( "Z Minimum" ) + QStringLiteral( ": " ) + qgsDoubleToString( spatialExtent.bounds.zMinimum() ) + QStringLiteral( "
" ); - myMetadata += QStringLiteral( "" ) + QObject::tr( "Z Maximum" ) + QStringLiteral( ": " ) + qgsDoubleToString( spatialExtent.bounds.zMaximum() ); + if ( notFirstRow ) + { + myMetadata += QLatin1String( "
\n" ); + } + myMetadata += QStringLiteral( "" ) + QObject::tr( "CRS" ) + QStringLiteral( ": " ) + spatialExtent.extentCrs.authid() + QStringLiteral( " - " ); + myMetadata += spatialExtent.extentCrs.description() + QStringLiteral( " - " ); + if ( spatialExtent.extentCrs.isGeographic() ) + myMetadata += QObject::tr( "Geographic" ); + else + myMetadata += QObject::tr( "Projected" ); + myMetadata += QStringLiteral( "
" ); + myMetadata += QStringLiteral( "" ) + QObject::tr( "X Minimum" ) + QStringLiteral( ": " ) + qgsDoubleToString( spatialExtent.bounds.xMinimum() ) + QStringLiteral( "
" ); + myMetadata += QStringLiteral( "" ) + QObject::tr( "Y Minimum" ) + QStringLiteral( ": " ) + qgsDoubleToString( spatialExtent.bounds.yMinimum() ) + QStringLiteral( "
" ); + myMetadata += QStringLiteral( "" ) + QObject::tr( "X Maximum" ) + QStringLiteral( ": " ) + qgsDoubleToString( spatialExtent.bounds.xMaximum() ) + QStringLiteral( "
" ); + myMetadata += QStringLiteral( "" ) + QObject::tr( "Y Maximum" ) + QStringLiteral( ": " ) + qgsDoubleToString( spatialExtent.bounds.yMaximum() ) + QStringLiteral( "
" ); + if ( spatialExtent.bounds.zMinimum() || spatialExtent.bounds.zMaximum() ) + { + myMetadata += QStringLiteral( "" ) + QObject::tr( "Z Minimum" ) + QStringLiteral( ": " ) + qgsDoubleToString( spatialExtent.bounds.zMinimum() ) + QStringLiteral( "
" ); + myMetadata += QStringLiteral( "" ) + QObject::tr( "Z Maximum" ) + QStringLiteral( ": " ) + qgsDoubleToString( spatialExtent.bounds.zMaximum() ); + } + notFirstRow = true; } - notFirstRow = true; + myMetadata += QLatin1String( "
" ) + QObject::tr( "Temporal Extent" ) + QStringLiteral( "" ); const QList< QgsDateTimeRange > temporalExtents = extent.temporalExtents(); notFirstRow = false; diff --git a/src/core/metadata/qgslayermetadataformatter.h b/src/core/metadata/qgslayermetadataformatter.h index 558899bc202..ca1a73e9bf0 100644 --- a/src/core/metadata/qgslayermetadataformatter.h +++ b/src/core/metadata/qgslayermetadataformatter.h @@ -50,10 +50,11 @@ class CORE_EXPORT QgsLayerMetadataFormatter QString contactsSectionHtml() const; /** - * Formats the "Extents" section according to a \a metadata object. + * Formats the "Extents" section according to a \a metadata object (extent and temporal). * This will return a HTML table. + * \param showSpatialExtent flag if the spatial extent needs to be displayed. Default to true. */ - QString extentSectionHtml() const; + QString extentSectionHtml( const bool showSpatialExtent = true ) const; /** * Formats the "Identification" section according to a \a metadata object. diff --git a/src/core/qgsvectorlayer.cpp b/src/core/qgsvectorlayer.cpp index 8e3241fac5d..2f0e6292c51 100644 --- a/src/core/qgsvectorlayer.cpp +++ b/src/core/qgsvectorlayer.cpp @@ -4282,7 +4282,7 @@ QString QgsVectorLayer::htmlMetadata() const // extent section myMetadata += QStringLiteral( "

" ) + tr( "Extent" ) + QStringLiteral( "

\n
\n" ); - myMetadata += htmlFormatter.extentSectionHtml( ); + myMetadata += htmlFormatter.extentSectionHtml( isSpatial() ); myMetadata += QLatin1String( "

\n" ); // Start the Access section