Skip to content

Commit 4395b8e

Browse files
committed
Silence annoying 'appendChild() on a null node does nothing' warning
(cherry-picked from 0449874)
1 parent c5e7998 commit 4395b8e

File tree

1 file changed

+100
-96
lines changed

1 file changed

+100
-96
lines changed

src/core/qgsprojectfiletransform.cpp

+100-96
Original file line numberDiff line numberDiff line change
@@ -625,115 +625,119 @@ void QgsProjectFileTransform::transform2990()
625625
{
626626
// transform OTF off to "no projection" for project
627627
QDomElement propsElem = mDom.firstChildElement( QStringLiteral( "qgis" ) ).toElement().firstChildElement( QStringLiteral( "properties" ) );
628-
QDomNodeList srsNodes = propsElem.elementsByTagName( QStringLiteral( "SpatialRefSys" ) );
629-
QDomElement srsElem;
630-
QDomElement projElem;
631-
if ( srsNodes.count() > 0 )
628+
if ( !propsElem.isNull() )
632629
{
633-
srsElem = srsNodes.at( 0 ).toElement();
634-
QDomNodeList projNodes = srsElem.elementsByTagName( QStringLiteral( "ProjectionsEnabled" ) );
635-
if ( projNodes.count() == 0 )
630+
QDomNodeList srsNodes = propsElem.elementsByTagName( QStringLiteral( "SpatialRefSys" ) );
631+
QDomElement srsElem;
632+
QDomElement projElem;
633+
if ( srsNodes.count() > 0 )
636634
{
635+
srsElem = srsNodes.at( 0 ).toElement();
636+
QDomNodeList projNodes = srsElem.elementsByTagName( QStringLiteral( "ProjectionsEnabled" ) );
637+
if ( projNodes.count() == 0 )
638+
{
639+
projElem = mDom.createElement( QStringLiteral( "ProjectionsEnabled" ) );
640+
projElem.setAttribute( QStringLiteral( "type" ), QStringLiteral( "int" ) );
641+
QDomText projText = mDom.createTextNode( QStringLiteral( "0" ) );
642+
projElem.appendChild( projText );
643+
srsElem.appendChild( projElem );
644+
}
645+
}
646+
else
647+
{
648+
srsElem = mDom.createElement( QStringLiteral( "SpatialRefSys" ) );
637649
projElem = mDom.createElement( QStringLiteral( "ProjectionsEnabled" ) );
638650
projElem.setAttribute( QStringLiteral( "type" ), QStringLiteral( "int" ) );
639651
QDomText projText = mDom.createTextNode( QStringLiteral( "0" ) );
640652
projElem.appendChild( projText );
641653
srsElem.appendChild( projElem );
654+
propsElem.appendChild( srsElem );
642655
}
643-
}
644-
else
645-
{
646-
srsElem = mDom.createElement( QStringLiteral( "SpatialRefSys" ) );
647-
projElem = mDom.createElement( QStringLiteral( "ProjectionsEnabled" ) );
648-
projElem.setAttribute( QStringLiteral( "type" ), QStringLiteral( "int" ) );
649-
QDomText projText = mDom.createTextNode( QStringLiteral( "0" ) );
650-
projElem.appendChild( projText );
651-
srsElem.appendChild( projElem );
652-
propsElem.appendChild( srsElem );
653-
}
654-
// transform map canvas CRS to project CRS - this is because project CRS was inconsistently used
655-
// prior to 3.0. In >= 3.0 main canvas CRS is forced to match project CRS, so we need to make
656-
// sure we can read the project CRS correctly
657-
QDomNodeList canvasNodes = mDom.elementsByTagName( QStringLiteral( "mapcanvas" ) );
658-
if ( canvasNodes.count() > 0 )
659-
{
660-
QDomElement canvasElem = canvasNodes.at( 0 ).toElement();
661-
QDomNodeList canvasSrsNodes = canvasElem.elementsByTagName( QStringLiteral( "spatialrefsys" ) );
662-
if ( canvasSrsNodes.count() > 0 )
663-
{
664-
QDomElement canvasSrsElem = canvasSrsNodes.at( 0 ).toElement();
665-
QString proj;
666-
QString authid;
667-
QString srsid;
668656

669-
QDomNodeList proj4Nodes = canvasSrsElem.elementsByTagName( QStringLiteral( "proj4" ) );
670-
if ( proj4Nodes.count() > 0 )
671-
{
672-
QDomElement proj4Node = proj4Nodes.at( 0 ).toElement();
673-
proj = proj4Node.text();
674-
}
675-
QDomNodeList authidNodes = canvasSrsElem.elementsByTagName( QStringLiteral( "authid" ) );
676-
if ( authidNodes.count() > 0 )
677-
{
678-
QDomElement authidNode = authidNodes.at( 0 ).toElement();
679-
authid = authidNode.text();
680-
}
681-
QDomNodeList srsidNodes = canvasSrsElem.elementsByTagName( QStringLiteral( "srsid" ) );
682-
if ( srsidNodes.count() > 0 )
657+
// transform map canvas CRS to project CRS - this is because project CRS was inconsistently used
658+
// prior to 3.0. In >= 3.0 main canvas CRS is forced to match project CRS, so we need to make
659+
// sure we can read the project CRS correctly
660+
QDomNodeList canvasNodes = mDom.elementsByTagName( QStringLiteral( "mapcanvas" ) );
661+
if ( canvasNodes.count() > 0 )
662+
{
663+
QDomElement canvasElem = canvasNodes.at( 0 ).toElement();
664+
QDomNodeList canvasSrsNodes = canvasElem.elementsByTagName( QStringLiteral( "spatialrefsys" ) );
665+
if ( canvasSrsNodes.count() > 0 )
683666
{
684-
QDomElement srsidNode = srsidNodes.at( 0 ).toElement();
685-
srsid = srsidNode.text();
686-
}
667+
QDomElement canvasSrsElem = canvasSrsNodes.at( 0 ).toElement();
668+
QString proj;
669+
QString authid;
670+
QString srsid;
687671

688-
// clear existing project CRS nodes
689-
QDomNodeList oldProjectProj4Nodes = srsElem.elementsByTagName( QStringLiteral( "ProjectCRSProj4String" ) );
690-
for ( int i = oldProjectProj4Nodes.count(); i >= 0; --i )
691-
{
692-
srsElem.removeChild( oldProjectProj4Nodes.at( i ) );
693-
}
694-
QDomNodeList oldProjectCrsNodes = srsElem.elementsByTagName( QStringLiteral( "ProjectCrs" ) );
695-
for ( int i = oldProjectCrsNodes.count(); i >= 0; --i )
696-
{
697-
srsElem.removeChild( oldProjectCrsNodes.at( i ) );
698-
}
699-
QDomNodeList oldProjectCrsIdNodes = srsElem.elementsByTagName( QStringLiteral( "ProjectCRSID" ) );
700-
for ( int i = oldProjectCrsIdNodes.count(); i >= 0; --i )
701-
{
702-
srsElem.removeChild( oldProjectCrsIdNodes.at( i ) );
703-
}
704-
QDomNodeList projectionsEnabledNodes = srsElem.elementsByTagName( QStringLiteral( "ProjectionsEnabled" ) );
705-
for ( int i = projectionsEnabledNodes.count(); i >= 0; --i )
706-
{
707-
srsElem.removeChild( projectionsEnabledNodes.at( i ) );
708-
}
672+
QDomNodeList proj4Nodes = canvasSrsElem.elementsByTagName( QStringLiteral( "proj4" ) );
673+
if ( proj4Nodes.count() > 0 )
674+
{
675+
QDomElement proj4Node = proj4Nodes.at( 0 ).toElement();
676+
proj = proj4Node.text();
677+
}
678+
QDomNodeList authidNodes = canvasSrsElem.elementsByTagName( QStringLiteral( "authid" ) );
679+
if ( authidNodes.count() > 0 )
680+
{
681+
QDomElement authidNode = authidNodes.at( 0 ).toElement();
682+
authid = authidNode.text();
683+
}
684+
QDomNodeList srsidNodes = canvasSrsElem.elementsByTagName( QStringLiteral( "srsid" ) );
685+
if ( srsidNodes.count() > 0 )
686+
{
687+
QDomElement srsidNode = srsidNodes.at( 0 ).toElement();
688+
srsid = srsidNode.text();
689+
}
709690

710-
QDomElement proj4Elem = mDom.createElement( QStringLiteral( "ProjectCRSProj4String" ) );
711-
proj4Elem.setAttribute( QStringLiteral( "type" ), QStringLiteral( "QString" ) );
712-
QDomText proj4Text = mDom.createTextNode( proj );
713-
proj4Elem.appendChild( proj4Text );
714-
QDomElement projectCrsElem = mDom.createElement( QStringLiteral( "ProjectCrs" ) );
715-
projectCrsElem.setAttribute( QStringLiteral( "type" ), QStringLiteral( "QString" ) );
716-
QDomText projectCrsText = mDom.createTextNode( authid );
717-
projectCrsElem.appendChild( projectCrsText );
718-
QDomElement projectCrsIdElem = mDom.createElement( QStringLiteral( "ProjectCRSID" ) );
719-
projectCrsIdElem.setAttribute( QStringLiteral( "type" ), QStringLiteral( "int" ) );
720-
QDomText srsidText = mDom.createTextNode( srsid );
721-
projectCrsIdElem.appendChild( srsidText );
722-
QDomElement projectionsEnabledElem = mDom.createElement( QStringLiteral( "ProjectionsEnabled" ) );
723-
projectionsEnabledElem.setAttribute( QStringLiteral( "type" ), QStringLiteral( "int" ) );
724-
QDomText projectionsEnabledText = mDom.createTextNode( QStringLiteral( "1" ) );
725-
projectionsEnabledElem.appendChild( projectionsEnabledText );
726-
srsElem.appendChild( proj4Elem );
727-
srsElem.appendChild( projectCrsElem );
728-
srsElem.appendChild( projectCrsIdElem );
729-
srsElem.appendChild( projectionsEnabledElem );
730-
731-
QDomNodeList srsNodes = propsElem.elementsByTagName( QStringLiteral( "SpatialRefSys" ) );
732-
for ( int i = srsNodes.count(); i >= 0; --i )
733-
{
734-
propsElem.removeChild( srsNodes.at( i ) );
691+
// clear existing project CRS nodes
692+
QDomNodeList oldProjectProj4Nodes = srsElem.elementsByTagName( QStringLiteral( "ProjectCRSProj4String" ) );
693+
for ( int i = oldProjectProj4Nodes.count(); i >= 0; --i )
694+
{
695+
srsElem.removeChild( oldProjectProj4Nodes.at( i ) );
696+
}
697+
QDomNodeList oldProjectCrsNodes = srsElem.elementsByTagName( QStringLiteral( "ProjectCrs" ) );
698+
for ( int i = oldProjectCrsNodes.count(); i >= 0; --i )
699+
{
700+
srsElem.removeChild( oldProjectCrsNodes.at( i ) );
701+
}
702+
QDomNodeList oldProjectCrsIdNodes = srsElem.elementsByTagName( QStringLiteral( "ProjectCRSID" ) );
703+
for ( int i = oldProjectCrsIdNodes.count(); i >= 0; --i )
704+
{
705+
srsElem.removeChild( oldProjectCrsIdNodes.at( i ) );
706+
}
707+
QDomNodeList projectionsEnabledNodes = srsElem.elementsByTagName( QStringLiteral( "ProjectionsEnabled" ) );
708+
for ( int i = projectionsEnabledNodes.count(); i >= 0; --i )
709+
{
710+
srsElem.removeChild( projectionsEnabledNodes.at( i ) );
711+
}
712+
713+
QDomElement proj4Elem = mDom.createElement( QStringLiteral( "ProjectCRSProj4String" ) );
714+
proj4Elem.setAttribute( QStringLiteral( "type" ), QStringLiteral( "QString" ) );
715+
QDomText proj4Text = mDom.createTextNode( proj );
716+
proj4Elem.appendChild( proj4Text );
717+
QDomElement projectCrsElem = mDom.createElement( QStringLiteral( "ProjectCrs" ) );
718+
projectCrsElem.setAttribute( QStringLiteral( "type" ), QStringLiteral( "QString" ) );
719+
QDomText projectCrsText = mDom.createTextNode( authid );
720+
projectCrsElem.appendChild( projectCrsText );
721+
QDomElement projectCrsIdElem = mDom.createElement( QStringLiteral( "ProjectCRSID" ) );
722+
projectCrsIdElem.setAttribute( QStringLiteral( "type" ), QStringLiteral( "int" ) );
723+
QDomText srsidText = mDom.createTextNode( srsid );
724+
projectCrsIdElem.appendChild( srsidText );
725+
QDomElement projectionsEnabledElem = mDom.createElement( QStringLiteral( "ProjectionsEnabled" ) );
726+
projectionsEnabledElem.setAttribute( QStringLiteral( "type" ), QStringLiteral( "int" ) );
727+
QDomText projectionsEnabledText = mDom.createTextNode( QStringLiteral( "1" ) );
728+
projectionsEnabledElem.appendChild( projectionsEnabledText );
729+
srsElem.appendChild( proj4Elem );
730+
srsElem.appendChild( projectCrsElem );
731+
srsElem.appendChild( projectCrsIdElem );
732+
srsElem.appendChild( projectionsEnabledElem );
733+
734+
QDomNodeList srsNodes = propsElem.elementsByTagName( QStringLiteral( "SpatialRefSys" ) );
735+
for ( int i = srsNodes.count(); i >= 0; --i )
736+
{
737+
propsElem.removeChild( srsNodes.at( i ) );
738+
}
739+
propsElem.appendChild( srsElem );
735740
}
736-
propsElem.appendChild( srsElem );
737741
}
738742
}
739743

0 commit comments

Comments
 (0)