Skip to content

Commit 59b10d6

Browse files
authoredNov 7, 2016
Merge pull request #3720 from sbrunner/WFS-provider-metadata
Add metadata for WFS provider in layer metadata informations
2 parents 8e7ae8f + bc1ad2c commit 59b10d6

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
@@ -386,6 +386,12 @@ class QgsVectorDataProvider : QgsDataProvider
386386
*/
387387
virtual QList<QgsRelation> discoverRelations( const QgsVectorLayer* self, const QList<QgsVectorLayer*>& layers ) const;
388388

389+
/**
390+
* Get some metadata that will be display in the metadata tab of the layer properties.
391+
* @return The provider metadata
392+
*/
393+
virtual QMap<QString, QString> metadata() const;
394+
389395
signals:
390396
/**
391397
* Signals an error in this provider

‎src/core/qgsvectordataprovider.h

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

395395
//! Returns a list of available encodings
396396
static QStringList availableEncodings();
@@ -446,6 +446,12 @@ class CORE_EXPORT QgsVectorDataProvider : public QgsDataProvider
446446
*/
447447
virtual QList<QgsRelation> discoverRelations( const QgsVectorLayer* self, const QList<QgsVectorLayer*>& layers ) const;
448448

449+
/**
450+
* Get some metadata that will be display in the metadata tab of the layer properties.
451+
* @return The provider metadata
452+
*/
453+
virtual QMap<QString, QString> metadata() const { return QMap<QString, QString>(); };
454+
449455
signals:
450456
/**
451457
* Signals an error in this provider

‎src/core/qgsvectorlayer.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3889,6 +3889,20 @@ QString QgsVectorLayer::metadata() const
38893889
myMetadata += QLatin1String( "<p>" );
38903890
myMetadata += dataProvider()->description().replace( '\n', QLatin1String( "<br>" ) );
38913891
myMetadata += QLatin1String( "</p>\n" );
3892+
3893+
QMap<QString, QString> dataProviderMetadata = mDataProvider->metadata();
3894+
if ( !dataProviderMetadata.isEmpty() )
3895+
{
3896+
myMetadata += "<p class=\"glossy\">" + tr( "Provider Metadata" ) + "</p>\n";
3897+
myMetadata += "<p><table><tr><th>" + tr( "Metadata name" ) + "</th><th>" + tr( "Metadata value" ) + "</th></tr>\n";
3898+
QMapIterator<QString, QString> i( dataProviderMetadata );
3899+
while ( i.hasNext() )
3900+
{
3901+
i.next();
3902+
myMetadata += "<tr><td>" + i.key() + ":</td><td>" + i.value() + "</td></tr>\n";
3903+
}
3904+
myMetadata += QLatin1String( "</table></p>\n" );
3905+
}
38923906
}
38933907

38943908
// 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)
Please sign in to comment.