@@ -1543,6 +1543,18 @@ bool QgsProject::createEmbeddedLayer( const QString& layerId, const QString& pro
1543
1543
return false ;
1544
1544
}
1545
1545
1546
+ // does project store pathes absolute or relative?
1547
+ bool useAbsolutePathes = true ;
1548
+ QDomElement propertiesElem = projectDocument.documentElement ().firstChildElement ( " properties" );
1549
+ if ( !propertiesElem.isNull () )
1550
+ {
1551
+ QDomElement absElem = propertiesElem.firstChildElement ( " Paths" ).firstChildElement ( " Absolute" );
1552
+ if ( !absElem.isNull () )
1553
+ {
1554
+ useAbsolutePathes = absElem.text ().compare ( " true" , Qt::CaseInsensitive ) == 0 ;
1555
+ }
1556
+ }
1557
+
1546
1558
QDomElement projectLayersElem = projectDocument.documentElement ().firstChildElement ( " projectlayers" );
1547
1559
if ( projectLayersElem.isNull () )
1548
1560
{
@@ -1564,6 +1576,20 @@ bool QgsProject::createEmbeddedLayer( const QString& layerId, const QString& pro
1564
1576
}
1565
1577
1566
1578
mEmbeddedLayers .insert ( layerId, qMakePair ( projectFilePath, saveFlag ) );
1579
+
1580
+ // change datasource path from relative to absolute if necessary
1581
+ if ( !useAbsolutePathes )
1582
+ {
1583
+ QDomElement dsElem = mapLayerElem.firstChildElement ( " datasource" );
1584
+ QString debug ( QFileInfo ( projectFilePath ).absolutePath () + " /" + dsElem.text () );
1585
+ QFileInfo absoluteDs ( QFileInfo ( projectFilePath ).absolutePath () + " /" + dsElem.text () );
1586
+ if ( absoluteDs.exists () )
1587
+ {
1588
+ dsElem.removeChild ( dsElem.childNodes ().at ( 0 ) );
1589
+ dsElem.appendChild ( projectDocument.createTextNode ( absoluteDs.absoluteFilePath () ) );
1590
+ }
1591
+ }
1592
+
1567
1593
if ( addLayer ( mapLayerElem, brokenNodes, vectorLayerList ) )
1568
1594
{
1569
1595
return true ;
@@ -1576,7 +1602,6 @@ bool QgsProject::createEmbeddedLayer( const QString& layerId, const QString& pro
1576
1602
}
1577
1603
}
1578
1604
1579
- // brokenNodes.push_back( );
1580
1605
return false ;
1581
1606
}
1582
1607
0 commit comments