@@ -682,14 +682,14 @@ QPair< bool, QList<QDomNode> > QgsProject::_getMapLayers( QDomDocument const &do
682682 QDomNode node = nl.item ( i );
683683 QDomElement element = node.toElement ();
684684
685- if ( element.attribute (" embedded" ) == " 1" )
685+ if ( element.attribute ( " embedded" ) == " 1" )
686686 {
687687 createEmbeddedLayer ( element.attribute ( " id" ), readPath ( element.attribute ( " project" ) ), brokenNodes, vLayerList );
688688 continue ;
689689 }
690690 else
691691 {
692- if ( !addLayer ( element, brokenNodes, vLayerList ) )
692+ if ( !addLayer ( element, brokenNodes, vLayerList ) )
693693 {
694694 returnStatus = false ;
695695 }
@@ -859,6 +859,7 @@ bool QgsProject::read()
859859 // project still hanging around
860860
861861 imp_->clear ();
862+ mEmbeddedLayers .clear ();
862863
863864 // now get any properties
864865 _getProperties ( *doc, imp_->properties_ );
@@ -914,52 +915,6 @@ bool QgsProject::read( QDomNode & layerNode )
914915 QList<QDomNode> brokenNodes;
915916 QList< QPair< QgsVectorLayer*, QDomElement > > vectorLayerList;
916917 return addLayer ( layerNode.toElement (), brokenNodes, vectorLayerList );
917- #if 0
918- QString type = layerNode.toElement().attribute( "type" );
919-
920- QgsMapLayer *mapLayer = NULL;
921-
922- if ( type == "vector" )
923- {
924- mapLayer = new QgsVectorLayer;
925- }
926- else if ( type == "raster" )
927- {
928- mapLayer = new QgsRasterLayer;
929- }
930- else if ( type == "plugin" )
931- {
932- QString typeName = layerNode.toElement().attribute( "name" );
933- mapLayer = QgsPluginLayerRegistry::instance()->createLayer( typeName );
934- }
935- else
936- {
937- QgsDebugMsg( "bad layer type" );
938- return false;
939- }
940-
941- if ( !mapLayer )
942- {
943- QgsDebugMsg( "unable to create layer" );
944- return false;
945- }
946-
947- // have the layer restore state that is stored in Dom node
948- if ( mapLayer->readXML( layerNode ) )
949- {
950- mapLayer = QgsMapLayerRegistry::instance()->addMapLayer( mapLayer );
951- }
952- else
953- {
954- delete mapLayer;
955-
956- QgsDebugMsg( "unable to load " + type + " layer" );
957-
958- return false;
959- }
960-
961- return true;
962- #endif // 0
963918} // QgsProject::read( QDomNode & layerNode )
964919
965920
@@ -1041,19 +996,19 @@ bool QgsProject::write()
1041996 {
1042997 QString externalProjectFile = layerIsEmbedded ( ml->id () );
1043998 QHash< QString, QPair< QString, bool > >::const_iterator emIt = mEmbeddedLayers .find ( ml->id () );
1044- if ( emIt == mEmbeddedLayers .constEnd () )
999+ if ( emIt == mEmbeddedLayers .constEnd () )
10451000 {
10461001 ml->writeXML ( projectLayersNode, *doc );
10471002 }
10481003 else // layer defined in an external project file
10491004 {
10501005 // only save embedded layer if not managed by a legend group
1051- if ( emIt.value ().second )
1006+ if ( emIt.value ().second )
10521007 {
1053- QDomElement mapLayerElem = doc->createElement (" maplayer" );
1054- mapLayerElem.setAttribute (" embedded" , 1 );
1055- mapLayerElem.setAttribute (" project" , writePath ( emIt.value ().first ) );
1056- mapLayerElem.setAttribute (" id" , ml->id () );
1008+ QDomElement mapLayerElem = doc->createElement ( " maplayer" );
1009+ mapLayerElem.setAttribute ( " embedded" , 1 );
1010+ mapLayerElem.setAttribute ( " project" , writePath ( emIt.value ().first ) );
1011+ mapLayerElem.setAttribute ( " id" , ml->id () );
10571012 projectLayersNode.appendChild ( mapLayerElem );
10581013 }
10591014 }
@@ -1566,50 +1521,50 @@ void QgsProject::setBadLayerHandler( QgsProjectBadLayerHandler* handler )
15661521QString QgsProject::layerIsEmbedded ( const QString& id ) const
15671522{
15681523 QHash< QString, QPair< QString, bool > >::const_iterator it = mEmbeddedLayers .find ( id );
1569- if ( it == mEmbeddedLayers .constEnd () )
1524+ if ( it == mEmbeddedLayers .constEnd () )
15701525 {
15711526 return QString ();
15721527 }
15731528 return it.value ().first ;
15741529};
15751530
15761531bool QgsProject::createEmbeddedLayer ( const QString& layerId, const QString& projectFilePath, QList<QDomNode>& brokenNodes,
1577- QList< QPair< QgsVectorLayer*, QDomElement > >& vectorLayerList, bool saveFlag )
1532+ QList< QPair< QgsVectorLayer*, QDomElement > >& vectorLayerList, bool saveFlag )
15781533{
15791534 QFile projectFile ( projectFilePath );
1580- if ( !projectFile.open ( QIODevice::ReadOnly ) )
1535+ if ( !projectFile.open ( QIODevice::ReadOnly ) )
15811536 {
15821537 return false ;
15831538 }
15841539
15851540 QDomDocument projectDocument;
1586- if ( !projectDocument.setContent ( &projectFile ) )
1541+ if ( !projectDocument.setContent ( &projectFile ) )
15871542 {
15881543 return false ;
15891544 }
15901545
1591- QDomElement projectLayersElem = projectDocument.documentElement ().firstChildElement (" projectlayers" );
1592- if ( projectLayersElem.isNull () )
1546+ QDomElement projectLayersElem = projectDocument.documentElement ().firstChildElement ( " projectlayers" );
1547+ if ( projectLayersElem.isNull () )
15931548 {
15941549 return false ;
15951550 }
15961551
1597- QDomNodeList mapLayerNodes = projectLayersElem.elementsByTagName (" maplayer" );
1598- for ( int i = 0 ; i < mapLayerNodes.size (); ++i )
1552+ QDomNodeList mapLayerNodes = projectLayersElem.elementsByTagName ( " maplayer" );
1553+ for ( int i = 0 ; i < mapLayerNodes.size (); ++i )
15991554 {
16001555 // get layer id
1601- QDomElement mapLayerElem = mapLayerNodes.at (i ).toElement ();
1602- QString id = mapLayerElem.firstChildElement (" id" ).text ();
1603- if ( id == layerId )
1556+ QDomElement mapLayerElem = mapLayerNodes.at ( i ).toElement ();
1557+ QString id = mapLayerElem.firstChildElement ( " id" ).text ();
1558+ if ( id == layerId )
16041559 {
16051560 // layer can be embedded only once
1606- if ( mapLayerElem.attribute (" embedded" ) == " 1" )
1561+ if ( mapLayerElem.attribute ( " embedded" ) == " 1" )
16071562 {
16081563 return false ;
16091564 }
16101565
16111566 mEmbeddedLayers .insert ( layerId, qMakePair ( projectFilePath, saveFlag ) );
1612- if ( addLayer ( mapLayerElem, brokenNodes, vectorLayerList ) )
1567+ if ( addLayer ( mapLayerElem, brokenNodes, vectorLayerList ) )
16131568 {
16141569 return true ;
16151570 }
0 commit comments