Skip to content

Commit bc1ad2c

Browse files
committed
Add metadata for WFS provider in layer metadata informations
1 parent e7333f6 commit bc1ad2c

File tree

5 files changed

+43
-1
lines changed

5 files changed

+43
-1
lines changed

python/core/qgsvectordataprovider.sip

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,12 @@ class QgsVectorDataProvider : QgsDataProvider
379379
*/
380380
virtual QList<QgsRelation> discoverRelations( const QgsVectorLayer* self, const QList<QgsVectorLayer*>& layers ) const;
381381

382+
/**
383+
* Get some metadata that will be display in the metadata tab of the layer properties.
384+
* @return The provider metadata
385+
*/
386+
virtual QMap<QString, QString> metadata() const;
387+
382388
signals:
383389
/**
384390
* Signals an error in this provider

src/core/qgsvectordataprovider.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,7 @@ class CORE_EXPORT QgsVectorDataProvider : public QgsDataProvider
383383
* Returns true if the provider is strict about the type of inserted features
384384
* (e.g. no multipolygon in a polygon layer)
385385
*/
386-
virtual bool doesStrictFeatureTypeCheck() const { return true;}
386+
virtual bool doesStrictFeatureTypeCheck() const { return true; }
387387

388388
//! Returns a list of available encodings
389389
static QStringList availableEncodings();
@@ -439,6 +439,12 @@ class CORE_EXPORT QgsVectorDataProvider : public QgsDataProvider
439439
*/
440440
virtual QList<QgsRelation> discoverRelations( const QgsVectorLayer* self, const QList<QgsVectorLayer*>& layers ) const;
441441

442+
/**
443+
* Get some metadata that will be display in the metadata tab of the layer properties.
444+
* @return The provider metadata
445+
*/
446+
virtual QMap<QString, QString> metadata() const { return QMap<QString, QString>(); };
447+
442448
signals:
443449
/**
444450
* Signals an error in this provider

src/core/qgsvectorlayer.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3770,6 +3770,20 @@ QString QgsVectorLayer::metadata() const
37703770
myMetadata += QLatin1String( "<p>" );
37713771
myMetadata += dataProvider()->description().replace( '\n', QLatin1String( "<br>" ) );
37723772
myMetadata += QLatin1String( "</p>\n" );
3773+
3774+
QMap<QString, QString> dataProviderMetadata = mDataProvider->metadata();
3775+
if ( !dataProviderMetadata.isEmpty() )
3776+
{
3777+
myMetadata += "<p class=\"glossy\">" + tr( "Provider Metadata" ) + "</p>\n";
3778+
myMetadata += "<p><table><tr><th>" + tr( "Metadata name" ) + "</th><th>" + tr( "Metadata value" ) + "</th></tr>\n";
3779+
QMapIterator<QString, QString> i( dataProviderMetadata );
3780+
while ( i.hasNext() )
3781+
{
3782+
i.next();
3783+
myMetadata += "<tr><td>" + i.key() + ":</td><td>" + i.value() + "</td></tr>\n";
3784+
}
3785+
myMetadata += QLatin1String( "</table></p>\n" );
3786+
}
37733787
}
37743788

37753789
// data source

src/providers/wfs/qgswfsprovider.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1100,6 +1100,16 @@ bool QgsWFSProvider::changeAttributeValues( const QgsChangedAttributesMap &attr_
11001100
}
11011101
}
11021102

1103+
1104+
QMap<QString, QString> QgsWFSProvider::metadata()
1105+
{
1106+
QMap<QString, QString> result;
1107+
result[tr( "Max Features" )] = mShared->mCaps.maxFeatures == 0 ? tr( "not provided" ) : QString( mShared->mCaps.maxFeatures );
1108+
result[tr( "Supports Paging" )] = mShared->mCaps.supportsPaging ? tr( "supported" ) : tr( "unsupported" );
1109+
result[tr( "Supports Joins" )] = mShared->mCaps.supportsJoins ? tr( "supported" ) : tr( "unsupported" );
1110+
return result;
1111+
}
1112+
11031113
bool QgsWFSProvider::describeFeatureType( QString& geometryAttribute, QgsFields& fields, QgsWkbTypes::Type& geomType )
11041114
{
11051115
fields.clear();

src/providers/wfs/qgswfsprovider.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,12 @@ class QgsWFSProvider : public QgsVectorDataProvider
132132
*/
133133
virtual bool changeAttributeValues( const QgsChangedAttributesMap &attr_map ) override;
134134

135+
/**
136+
* Get some metadata description of the provider.
137+
* @return The provider metadata
138+
*/
139+
virtual QMap<QString, QString> metadata();
140+
135141
public slots:
136142
/** Reloads the data from the source. Needs to be implemented by providers with data caches to
137143
synchronize with changes in the data source*/

0 commit comments

Comments
 (0)