@@ -480,6 +480,7 @@ void QgsProject::clear()
480
480
mAutoTransaction = false ;
481
481
mEvaluateDefaultValues = false ;
482
482
mDirty = false ;
483
+ mTrustLayerMetadata = false ;
483
484
mCustomVariables .clear ();
484
485
485
486
mEmbeddedLayers .clear ();
@@ -717,6 +718,12 @@ bool QgsProject::addLayer( const QDomElement &layerElem, QList<QDomNode> &broken
717
718
if ( type == QLatin1String ( " vector" ) )
718
719
{
719
720
mapLayer = new QgsVectorLayer;
721
+
722
+ // apply specific settings to vector layer
723
+ if ( QgsVectorLayer *vl = qobject_cast<QgsVectorLayer *>( mapLayer ) )
724
+ {
725
+ vl->setReadExtentFromXml ( mTrustLayerMetadata );
726
+ }
720
727
}
721
728
else if ( type == QLatin1String ( " raster" ) )
722
729
{
@@ -892,6 +899,14 @@ bool QgsProject::readProjectFile( const QString &filename )
892
899
mEvaluateDefaultValues = true ;
893
900
}
894
901
902
+ nl = doc->elementsByTagName ( QStringLiteral ( " trust" ) );
903
+ if ( nl.count () )
904
+ {
905
+ QDomElement trustElement = nl.at ( 0 ).toElement ();
906
+ if ( trustElement.attribute ( QStringLiteral ( " active" ), QStringLiteral ( " 0" ) ).toInt () == 1 )
907
+ mTrustLayerMetadata = true ;
908
+ }
909
+
895
910
// read the layer tree from project file
896
911
897
912
mRootGroup ->setCustomProperty ( QStringLiteral ( " loading" ), 1 );
@@ -1296,6 +1311,10 @@ bool QgsProject::writeProjectFile( const QString &filename )
1296
1311
evaluateDefaultValuesNode.setAttribute ( QStringLiteral ( " active" ), mEvaluateDefaultValues ? " 1" : " 0" );
1297
1312
qgisNode.appendChild ( evaluateDefaultValuesNode );
1298
1313
1314
+ QDomElement trustNode = doc->createElement ( QStringLiteral ( " trust" ) );
1315
+ trustNode.setAttribute ( QStringLiteral ( " active" ), mTrustLayerMetadata ? " 1" : " 0" );
1316
+ qgisNode.appendChild ( trustNode );
1317
+
1299
1318
QDomText titleText = doc->createTextNode ( title () ); // XXX why have title TWICE?
1300
1319
titleNode.appendChild ( titleText );
1301
1320
@@ -2260,3 +2279,17 @@ QgsCoordinateReferenceSystem QgsProject::defaultCrsForNewLayers() const
2260
2279
2261
2280
return defaultCrs;
2262
2281
}
2282
+
2283
+ void QgsProject::setTrustLayerMetadata ( bool trust )
2284
+ {
2285
+ mTrustLayerMetadata = trust;
2286
+
2287
+ Q_FOREACH ( QgsMapLayer *layer, mapLayers ().values () )
2288
+ {
2289
+ QgsVectorLayer *vl = qobject_cast<QgsVectorLayer *>( layer );
2290
+ if ( vl )
2291
+ {
2292
+ vl->setReadExtentFromXml ( trust );
2293
+ }
2294
+ }
2295
+ }
0 commit comments