56 const QDomNode propsNode = parentNode.namedItem( u
"customproperties"_s );
57 if ( propsNode.isNull() )
60 if ( !keyStartsWith.isEmpty() )
63 QStringList keysToRemove;
64 QMap<QString, QVariant>::const_iterator pIt =
mMap.constBegin();
65 for ( ; pIt !=
mMap.constEnd(); ++pIt )
67 if ( pIt.key().startsWith( keyStartsWith ) )
69 keysToRemove.push_back( pIt.key() );
73 QStringList::const_iterator sIt = keysToRemove.constBegin();
74 for ( ; sIt != keysToRemove.constEnd(); ++sIt )
85 if ( newProps.userType() == QMetaType::Type::QVariantMap )
87 mMap.insert( newProps.toMap() );
92 const QDomNodeList nodes = propsNode.childNodes();
94 for (
int i = 0; i < nodes.size(); i++ )
96 const QDomNode propNode = nodes.at( i );
97 if ( propNode.isNull() || propNode.nodeName() !=
"property"_L1 )
99 const QDomElement propElement = propNode.toElement();
101 const QString key = propElement.attribute( u
"key"_s );
102 if ( key.isEmpty() || key.startsWith( keyStartsWith ) )
104 if ( propElement.hasAttribute( u
"value"_s ) )
106 const QString
value = propElement.attribute( u
"value"_s );
113 for ( QDomElement itemElement = propElement.firstChildElement( u
"value"_s );
114 !itemElement.isNull();
115 itemElement = itemElement.nextSiblingElement( u
"value"_s ) )
117 list << itemElement.text();
120 mMap[key] = QVariant( list );
130 const QDomNodeList propertyList = parentNode.toElement().elementsByTagName( u
"customproperties"_s );
131 for (
int i = 0; i < propertyList.size(); ++i )
133 parentNode.removeChild( propertyList.at( i ) );
136 QDomElement propsElement = doc.createElement( u
"customproperties"_s );
138 parentNode.appendChild( propsElement );