diff --git a/src/core/layertree/qgslayertreemodel.cpp b/src/core/layertree/qgslayertreemodel.cpp index b3223fa7d68..00f375f75a0 100644 --- a/src/core/layertree/qgslayertreemodel.cpp +++ b/src/core/layertree/qgslayertreemodel.cpp @@ -614,7 +614,8 @@ void QgsLayerTreeModel::setLegendFilterByScale( double scale ) // this could be later done in more efficient way // by just updating active legend nodes, without refreshing original legend nodes - Q_FOREACH ( QgsLayerTreeLayer *nodeLayer, mRootNode->findLayers() ) + const auto constFindLayers = mRootNode->findLayers(); + for ( QgsLayerTreeLayer *nodeLayer : constFindLayers ) refreshLayerLegend( nodeLayer ); } @@ -634,7 +635,8 @@ void QgsLayerTreeModel::setLegendFilter( const QgsMapSettings *settings, bool us // collect expression filters if ( useExpressions ) { - Q_FOREACH ( QgsLayerTreeLayer *nodeLayer, mRootNode->findLayers() ) + const auto constFindLayers = mRootNode->findLayers(); + for ( QgsLayerTreeLayer *nodeLayer : constFindLayers ) { bool enabled; QString expr = QgsLayerTreeUtils::legendFilterByExpression( *nodeLayer, &enabled ); @@ -670,7 +672,8 @@ void QgsLayerTreeModel::setLegendFilter( const QgsMapSettings *settings, bool us // this could be later done in more efficient way // by just updating active legend nodes, without refreshing original legend nodes - Q_FOREACH ( QgsLayerTreeLayer *nodeLayer, mRootNode->findLayers() ) + const auto constFindLayers = mRootNode->findLayers(); + for ( QgsLayerTreeLayer *nodeLayer : constFindLayers ) refreshLayerLegend( nodeLayer ); setAutoCollapseLegendNodes( bkAutoCollapse ); @@ -902,7 +905,8 @@ void QgsLayerTreeModel::connectToLayer( QgsLayerTreeLayer *nodeLayer ) static int _numLayerCount( QgsLayerTreeGroup *group, const QString &layerId ) { int count = 0; - Q_FOREACH ( QgsLayerTreeNode *child, group->children() ) + const auto constChildren = group->children(); + for ( QgsLayerTreeNode *child : constChildren ) { if ( QgsLayerTree::isLayer( child ) ) { @@ -938,7 +942,8 @@ void QgsLayerTreeModel::disconnectFromLayer( QgsLayerTreeLayer *nodeLayer ) void QgsLayerTreeModel::connectToLayers( QgsLayerTreeGroup *parentGroup ) { - Q_FOREACH ( QgsLayerTreeNode *node, parentGroup->children() ) + const auto constChildren = parentGroup->children(); + for ( QgsLayerTreeNode *node : constChildren ) { if ( QgsLayerTree::isGroup( node ) ) connectToLayers( QgsLayerTree::toGroup( node ) ); @@ -949,7 +954,8 @@ void QgsLayerTreeModel::connectToLayers( QgsLayerTreeGroup *parentGroup ) void QgsLayerTreeModel::disconnectFromLayers( QgsLayerTreeGroup *parentGroup ) { - Q_FOREACH ( QgsLayerTreeNode *node, parentGroup->children() ) + const auto constChildren = parentGroup->children(); + for ( QgsLayerTreeNode *node : constChildren ) { if ( QgsLayerTree::isGroup( node ) ) disconnectFromLayers( QgsLayerTree::toGroup( node ) ); diff --git a/src/core/layertree/qgslayertreenode.cpp b/src/core/layertree/qgslayertreenode.cpp index 60daad9ddd5..5118645065e 100644 --- a/src/core/layertree/qgslayertreenode.cpp +++ b/src/core/layertree/qgslayertreenode.cpp @@ -142,7 +142,8 @@ void fetchCheckedLayers( const QgsLayerTreeNode *node, QList &lay layers << nodeLayer->layer(); } - Q_FOREACH ( QgsLayerTreeNode *child, node->children() ) + const auto constChildren = node->children(); + for ( QgsLayerTreeNode *child : constChildren ) fetchCheckedLayers( child, layers ); } diff --git a/src/core/layertree/qgslayertreeutils.cpp b/src/core/layertree/qgslayertreeutils.cpp index c259a53654f..d2168cd9215 100644 --- a/src/core/layertree/qgslayertreeutils.cpp +++ b/src/core/layertree/qgslayertreeutils.cpp @@ -154,7 +154,8 @@ static QDomElement _writeOldLegendGroup( QDomDocument &doc, QgsLayerTreeGroup *n static void _writeOldLegendGroupChildren( QDomDocument &doc, QDomElement &groupElem, QgsLayerTreeGroup *nodeGroup, bool hasCustomOrder, const QList &order ) { - Q_FOREACH ( QgsLayerTreeNode *node, nodeGroup->children() ) + const auto constChildren = nodeGroup->children(); + for ( QgsLayerTreeNode *node : constChildren ) { if ( QgsLayerTree::isGroup( node ) ) { @@ -294,7 +295,8 @@ bool QgsLayerTreeUtils::layersModified( const QList &layerN void QgsLayerTreeUtils::removeInvalidLayers( QgsLayerTreeGroup *group ) { QList nodesToRemove; - Q_FOREACH ( QgsLayerTreeNode *node, group->children() ) + const auto constChildren = group->children(); + for ( QgsLayerTreeNode *node : constChildren ) { if ( QgsLayerTree::isGroup( node ) ) removeInvalidLayers( QgsLayerTree::toGroup( node ) ); @@ -382,7 +384,8 @@ QStringList QgsLayerTreeUtils::invisibleLayerList( QgsLayerTreeNode *node ) void QgsLayerTreeUtils::replaceChildrenOfEmbeddedGroups( QgsLayerTreeGroup *group ) { - Q_FOREACH ( QgsLayerTreeNode *child, group->children() ) + const auto constChildren = group->children(); + for ( QgsLayerTreeNode *child : constChildren ) { if ( QgsLayerTree::isGroup( child ) ) { @@ -402,7 +405,8 @@ void QgsLayerTreeUtils::replaceChildrenOfEmbeddedGroups( QgsLayerTreeGroup *grou void QgsLayerTreeUtils::updateEmbeddedGroupsProjectPath( QgsLayerTreeGroup *group, const QgsProject *project ) { - Q_FOREACH ( QgsLayerTreeNode *node, group->children() ) + const auto constChildren = group->children(); + for ( QgsLayerTreeNode *node : constChildren ) { if ( !node->customProperty( QStringLiteral( "embedded_project" ) ).toString().isEmpty() ) { @@ -433,7 +437,8 @@ QString QgsLayerTreeUtils::legendFilterByExpression( const QgsLayerTreeLayer &la bool QgsLayerTreeUtils::hasLegendFilterExpression( const QgsLayerTreeGroup &group ) { - Q_FOREACH ( QgsLayerTreeLayer *l, group.findLayers() ) + const auto constFindLayers = group.findLayers(); + for ( QgsLayerTreeLayer *l : constFindLayers ) { bool exprEnabled; QString expr = legendFilterByExpression( *l, &exprEnabled ); @@ -453,7 +458,8 @@ QgsLayerTreeLayer *QgsLayerTreeUtils::insertLayerBelow( QgsLayerTreeGroup *group return nullptr; int idx = 0; - Q_FOREACH ( QgsLayerTreeNode *vl, inTree->parent()->children() ) + const auto constChildren = inTree->parent()->children(); + for ( QgsLayerTreeNode *vl : constChildren ) { if ( vl->nodeType() == QgsLayerTreeNode::NodeLayer && static_cast( vl )->layer() == refLayer ) { diff --git a/src/core/layout/qgslayoutitemlegend.cpp b/src/core/layout/qgslayoutitemlegend.cpp index dee7f7e91e8..4f5f2f4f408 100644 --- a/src/core/layout/qgslayoutitemlegend.cpp +++ b/src/core/layout/qgslayoutitemlegend.cpp @@ -744,7 +744,8 @@ void QgsLayoutItemLegend::mapLayerStyleOverridesChanged() { mLegendModel->setLayerStyleOverrides( mMap->layerStyleOverrides() ); - Q_FOREACH ( QgsLayerTreeLayer *nodeLayer, mLegendModel->rootGroup()->findLayers() ) + const auto constFindLayers = mLegendModel->rootGroup()->findLayers(); + for ( QgsLayerTreeLayer *nodeLayer : constFindLayers ) mLegendModel->refreshLayerLegend( nodeLayer ); } diff --git a/src/core/metadata/qgslayermetadatavalidator.cpp b/src/core/metadata/qgslayermetadatavalidator.cpp index ac51664610e..1708fb4438d 100644 --- a/src/core/metadata/qgslayermetadatavalidator.cpp +++ b/src/core/metadata/qgslayermetadatavalidator.cpp @@ -94,7 +94,8 @@ bool QgsNativeMetadataBaseValidator::validate( const QgsAbstractMetadataBase *me // validate contacts index = 0; - Q_FOREACH ( const QgsAbstractMetadataBase::Contact &contact, metadata->contacts() ) + const auto constContacts = metadata->contacts(); + for ( const QgsAbstractMetadataBase::Contact &contact : constContacts ) { if ( contact.name.isEmpty() ) { @@ -106,7 +107,8 @@ bool QgsNativeMetadataBaseValidator::validate( const QgsAbstractMetadataBase *me // validate links index = 0; - Q_FOREACH ( const QgsAbstractMetadataBase::Link &link, metadata->links() ) + const auto constLinks = metadata->links(); + for ( const QgsAbstractMetadataBase::Link &link : constLinks ) { if ( link.name.isEmpty() ) { @@ -158,7 +160,8 @@ bool QgsNativeMetadataValidator::validate( const QgsAbstractMetadataBase *baseMe } int index = 0; - Q_FOREACH ( const QgsLayerMetadata::SpatialExtent &extent, metadata->extent().spatialExtents() ) + const auto constSpatialExtents = metadata->extent().spatialExtents(); + for ( const QgsLayerMetadata::SpatialExtent &extent : constSpatialExtents ) { if ( !extent.extentCrs.isValid() ) { diff --git a/src/core/processing/models/qgsprocessingmodelalgorithm.cpp b/src/core/processing/models/qgsprocessingmodelalgorithm.cpp index 185a349a6fc..b43a53097aa 100644 --- a/src/core/processing/models/qgsprocessingmodelalgorithm.cpp +++ b/src/core/processing/models/qgsprocessingmodelalgorithm.cpp @@ -99,7 +99,8 @@ QgsProcessingAlgorithm::Flags QgsProcessingModelAlgorithm::flags() const QVariantMap QgsProcessingModelAlgorithm::parametersForChildAlgorithm( const QgsProcessingModelChildAlgorithm &child, const QVariantMap &modelParameters, const QVariantMap &results, const QgsExpressionContext &expressionContext ) const { QVariantMap childParams; - Q_FOREACH ( const QgsProcessingParameterDefinition *def, child.algorithm()->parameterDefinitions() ) + const auto constParameterDefinitions = child.algorithm()->parameterDefinitions(); + for ( const QgsProcessingParameterDefinition *def : constParameterDefinitions ) { if ( !def->isDestination() ) { @@ -219,7 +220,8 @@ bool QgsProcessingModelAlgorithm::childOutputIsRequired( const QString &childId, QMap::const_iterator childParamIt = candidateChildParams.constBegin(); for ( ; childParamIt != candidateChildParams.constEnd(); ++childParamIt ) { - Q_FOREACH ( const QgsProcessingModelChildParameterSource &source, childParamIt.value() ) + const auto constValue = childParamIt.value(); + for ( const QgsProcessingModelChildParameterSource &source : constValue ) { if ( source.source() == QgsProcessingModelChildParameterSource::ChildOutput && source.outputChildId() == childId @@ -869,7 +871,8 @@ QgsProcessingModelChildParameterSources QgsProcessingModelAlgorithm::availableSo continue; bool ok = sourceDef->dataTypes().isEmpty(); - Q_FOREACH ( int type, sourceDef->dataTypes() ) + const auto constDataTypes = sourceDef->dataTypes(); + for ( int type : constDataTypes ) { if ( dataTypes.contains( type ) || type == QgsProcessing::TypeMapLayer || type == QgsProcessing::TypeVector || type == QgsProcessing::TypeVectorAnyGeometry ) { @@ -905,7 +908,8 @@ QgsProcessingModelChildParameterSources QgsProcessingModelAlgorithm::availableSo if ( !alg ) continue; - Q_FOREACH ( const QgsProcessingOutputDefinition *out, alg->outputDefinitions() ) + const auto constOutputDefinitions = alg->outputDefinitions(); + for ( const QgsProcessingOutputDefinition *out : constOutputDefinitions ) { if ( outputTypes.contains( out->type() ) ) { @@ -1283,7 +1287,8 @@ bool QgsProcessingModelAlgorithm::childAlgorithmsDependOnParameter( const QStrin QMap::const_iterator paramIt = childParams.constBegin(); for ( ; paramIt != childParams.constEnd(); ++paramIt ) { - Q_FOREACH ( const QgsProcessingModelChildParameterSource &source, paramIt.value() ) + const auto constValue = paramIt.value(); + for ( const QgsProcessingModelChildParameterSource &source : constValue ) { if ( source.source() == QgsProcessingModelChildParameterSource::ModelParameter && source.parameterName() == name ) @@ -1336,7 +1341,8 @@ void QgsProcessingModelAlgorithm::dependentChildAlgorithmsRecursive( const QStri QMap::const_iterator paramIt = childParams.constBegin(); for ( ; paramIt != childParams.constEnd(); ++paramIt ) { - Q_FOREACH ( const QgsProcessingModelChildParameterSource &source, paramIt.value() ) + const auto constValue = paramIt.value(); + for ( const QgsProcessingModelChildParameterSource &source : constValue ) { if ( source.source() == QgsProcessingModelChildParameterSource::ChildOutput && source.outputChildId() == childId ) @@ -1372,7 +1378,8 @@ void QgsProcessingModelAlgorithm::dependsOnChildAlgorithmsRecursive( const QStri const QgsProcessingModelChildAlgorithm &alg = mChildAlgorithms.value( childId ); // add direct dependencies - Q_FOREACH ( const QString &c, alg.dependencies() ) + const auto constDependencies = alg.dependencies(); + for ( const QString &c : constDependencies ) { if ( !depends.contains( c ) ) { @@ -1386,7 +1393,8 @@ void QgsProcessingModelAlgorithm::dependsOnChildAlgorithmsRecursive( const QStri QMap::const_iterator paramIt = childParams.constBegin(); for ( ; paramIt != childParams.constEnd(); ++paramIt ) { - Q_FOREACH ( const QgsProcessingModelChildParameterSource &source, paramIt.value() ) + const auto constValue = paramIt.value(); + for ( const QgsProcessingModelChildParameterSource &source : constValue ) { if ( source.source() == QgsProcessingModelChildParameterSource::ChildOutput && !depends.contains( source.outputChildId() ) ) { diff --git a/src/core/processing/models/qgsprocessingmodelchildalgorithm.cpp b/src/core/processing/models/qgsprocessingmodelchildalgorithm.cpp index 207499a8c3a..e2eebec6be8 100644 --- a/src/core/processing/models/qgsprocessingmodelchildalgorithm.cpp +++ b/src/core/processing/models/qgsprocessingmodelchildalgorithm.cpp @@ -98,7 +98,8 @@ QVariant QgsProcessingModelChildAlgorithm::toVariant() const for ( ; paramIt != mParams.constEnd(); ++paramIt ) { QVariantList sources; - Q_FOREACH ( const QgsProcessingModelChildParameterSource &source, paramIt.value() ) + const auto constValue = paramIt.value(); + for ( const QgsProcessingModelChildParameterSource &source : constValue ) { sources << source.toVariant(); } @@ -137,7 +138,8 @@ bool QgsProcessingModelChildAlgorithm::loadVariant( const QVariant &child ) for ( ; paramIt != paramMap.constEnd(); ++paramIt ) { QgsProcessingModelChildParameterSources sources; - Q_FOREACH ( const QVariant &sourceVar, paramIt->toList() ) + const auto constToList = paramIt->toList(); + for ( const QVariant &sourceVar : constToList ) { QgsProcessingModelChildParameterSource param; if ( !param.loadVariant( sourceVar.toMap() ) ) diff --git a/src/core/processing/qgsprocessingparameters.cpp b/src/core/processing/qgsprocessingparameters.cpp index 4715eae1d74..524c94da6f6 100644 --- a/src/core/processing/qgsprocessingparameters.cpp +++ b/src/core/processing/qgsprocessingparameters.cpp @@ -287,7 +287,8 @@ QList QgsProcessingParameters::parameterAsEnums( const QgsProcessingParamet resultList << val.value< QgsProperty >().valueAsString( context.expressionContext(), definition->defaultValue().toString() ); else if ( val.type() == QVariant::List ) { - Q_FOREACH ( const QVariant &var, val.toList() ) + const auto constToList = val.toList(); + for ( const QVariant &var : constToList ) resultList << var; } else if ( val.type() == QVariant::String ) @@ -307,7 +308,8 @@ QList QgsProcessingParameters::parameterAsEnums( const QgsProcessingParamet // check default if ( definition->defaultValue().type() == QVariant::List ) { - Q_FOREACH ( const QVariant &var, definition->defaultValue().toList() ) + const auto constToList = definition->defaultValue().toList(); + for ( const QVariant &var : constToList ) resultList << var; } else if ( definition->defaultValue().type() == QVariant::String ) @@ -1313,14 +1315,16 @@ QList QgsProcessingParameters::parameterAsLayerList( const QgsPro { if ( var.type() == QVariant::List ) { - Q_FOREACH ( const QVariant &listVar, var.toList() ) + const auto constToList = var.toList(); + for ( const QVariant &listVar : constToList ) { processVariant( listVar ); } } else if ( var.type() == QVariant::StringList ) { - Q_FOREACH ( const QString &s, var.toStringList() ) + const auto constToStringList = var.toStringList(); + for ( const QString &s : constToStringList ) { processVariant( s ); } @@ -1360,7 +1364,8 @@ QList QgsProcessingParameters::parameterAsLayerList( const QgsPro } else if ( definition->defaultValue().type() == QVariant::List ) { - Q_FOREACH ( const QVariant &var, definition->defaultValue().toList() ) + const auto constToList = definition->defaultValue().toList(); + for ( const QVariant &var : constToList ) { if ( QgsMapLayer *layer = qobject_cast< QgsMapLayer * >( qvariant_cast( var ) ) ) { @@ -1398,7 +1403,8 @@ QList QgsProcessingParameters::parameterAsRange( const QgsProcessingPara resultStringList << val.value< QgsProperty >().valueAsString( context.expressionContext(), definition->defaultValue().toString() ); else if ( val.type() == QVariant::List ) { - Q_FOREACH ( const QVariant &var, val.toList() ) + const auto constToList = val.toList(); + for ( const QVariant &var : constToList ) resultStringList << var.toString(); } else @@ -1410,7 +1416,8 @@ QList QgsProcessingParameters::parameterAsRange( const QgsProcessingPara // check default if ( definition->defaultValue().type() == QVariant::List ) { - Q_FOREACH ( const QVariant &var, definition->defaultValue().toList() ) + const auto constToList = definition->defaultValue().toList(); + for ( const QVariant &var : constToList ) resultStringList << var.toString(); } else @@ -1450,7 +1457,8 @@ QStringList QgsProcessingParameters::parameterAsFields( const QgsProcessingParam resultStringList << val.value< QgsProperty >().valueAsString( context.expressionContext(), definition->defaultValue().toString() ); else if ( val.type() == QVariant::List ) { - Q_FOREACH ( const QVariant &var, val.toList() ) + const auto constToList = val.toList(); + for ( const QVariant &var : constToList ) resultStringList << var.toString(); } else @@ -1465,7 +1473,8 @@ QStringList QgsProcessingParameters::parameterAsFields( const QgsProcessingParam { if ( definition->defaultValue().type() == QVariant::List ) { - Q_FOREACH ( const QVariant &var, definition->defaultValue().toList() ) + const auto constToList = definition->defaultValue().toList(); + for ( const QVariant &var : constToList ) resultStringList << var.toString(); } else @@ -2353,7 +2362,8 @@ QString QgsProcessingParameterMatrix::valueAsPythonString( const QVariant &value if ( v.type() == QVariant::List ) { QStringList parts2; - Q_FOREACH ( const QVariant &v2, v.toList() ) + const auto constToList = v.toList(); + for ( const QVariant &v2 : constToList ) { if ( v2.isNull() || !v2.isValid() ) parts2 << QStringLiteral( "None" ); @@ -2503,7 +2513,8 @@ bool QgsProcessingParameterMultipleLayers::checkValueIsAcceptable( const QVarian if ( !context ) return true; - Q_FOREACH ( const QVariant &v, input.toList() ) + const auto constToList = input.toList(); + for ( const QVariant &v : constToList ) { if ( qobject_cast< QgsMapLayer * >( qvariant_cast( v ) ) ) continue; @@ -2524,7 +2535,8 @@ bool QgsProcessingParameterMultipleLayers::checkValueIsAcceptable( const QVarian if ( !context ) return true; - Q_FOREACH ( const QString &v, input.toStringList() ) + const auto constToStringList = input.toStringList(); + for ( const QString &v : constToStringList ) { if ( !QgsProcessingUtils::mapLayerFromString( v, *context ) ) return false; @@ -2582,7 +2594,8 @@ QString QgsProcessingParameterMultipleLayers::asScriptCode() const if ( mDefault.type() == QVariant::List ) { QStringList parts; - Q_FOREACH ( const QVariant &var, mDefault.toList() ) + const auto constToList = mDefault.toList(); + for ( const QVariant &var : constToList ) { parts << var.toString(); } @@ -3097,7 +3110,8 @@ QString QgsProcessingParameterEnum::valueAsPythonString( const QVariant &value, if ( value.type() == QVariant::List ) { QStringList parts; - Q_FOREACH ( const QVariant &val, value.toList() ) + const auto constToList = value.toList(); + for ( const QVariant &val : constToList ) { parts << QString::number( static_cast< int >( val.toDouble() ) ); } @@ -3723,7 +3737,8 @@ QString QgsProcessingParameterField::valueAsPythonString( const QVariant &value, if ( value.type() == QVariant::List ) { QStringList parts; - Q_FOREACH ( const QVariant &val, value.toList() ) + const auto constToList = value.toList(); + for ( const QVariant &val : constToList ) { parts << QgsProcessingUtils::stringToPythonLiteral( val.toString() ); } @@ -3732,7 +3747,8 @@ QString QgsProcessingParameterField::valueAsPythonString( const QVariant &value, else if ( value.type() == QVariant::StringList ) { QStringList parts; - Q_FOREACH ( QString s, value.toStringList() ) + const auto constToStringList = value.toStringList(); + for ( QString s : constToStringList ) { parts << QgsProcessingUtils::stringToPythonLiteral( s ); } diff --git a/src/core/processing/qgsprocessingregistry.cpp b/src/core/processing/qgsprocessingregistry.cpp index 9de9992d667..1ae5028d92a 100644 --- a/src/core/processing/qgsprocessingregistry.cpp +++ b/src/core/processing/qgsprocessingregistry.cpp @@ -138,7 +138,8 @@ const QgsProcessingAlgorithm *QgsProcessingRegistry::algorithmById( const QStrin QMap::const_iterator it = mProviders.constBegin(); for ( ; it != mProviders.constEnd(); ++it ) { - Q_FOREACH ( const QgsProcessingAlgorithm *alg, it.value()->algorithms() ) + const auto constAlgorithms = it.value()->algorithms(); + for ( const QgsProcessingAlgorithm *alg : constAlgorithms ) if ( alg->id() == id ) return alg; } diff --git a/src/core/qgsblockingnetworkrequest.cpp b/src/core/qgsblockingnetworkrequest.cpp index 6dc09cf7037..c0921b3d4c9 100644 --- a/src/core/qgsblockingnetworkrequest.cpp +++ b/src/core/qgsblockingnetworkrequest.cpp @@ -333,7 +333,8 @@ void QgsBlockingNetworkRequest::replyFinished() QNetworkCacheMetaData cmd = nam->cache()->metaData( mReply->request().url() ); QNetworkCacheMetaData::RawHeaderList hl; - Q_FOREACH ( const QNetworkCacheMetaData::RawHeader &h, cmd.rawHeaders() ) + const auto constRawHeaders = cmd.rawHeaders(); + for ( const QNetworkCacheMetaData::RawHeader &h : constRawHeaders ) { if ( h.first != "Cache-Control" ) hl.append( h ); diff --git a/src/core/qgsbrowsermodel.cpp b/src/core/qgsbrowsermodel.cpp index e4b05b061d6..46c2717290b 100644 --- a/src/core/qgsbrowsermodel.cpp +++ b/src/core/qgsbrowsermodel.cpp @@ -147,7 +147,8 @@ void QgsBrowserModel::addRootItems() } // add as sorted groups by QgsDataProvider::DataCapability enum - Q_FOREACH ( int key, providerMap.uniqueKeys() ) + const auto constUniqueKeys = providerMap.uniqueKeys(); + for ( int key : constUniqueKeys ) { QList providerGroup = providerMap.values( key ); if ( providerGroup.size() > 1 ) diff --git a/src/core/qgsdatasourceuri.cpp b/src/core/qgsdatasourceuri.cpp index 0829e63330b..2625349d680 100644 --- a/src/core/qgsdatasourceuri.cpp +++ b/src/core/qgsdatasourceuri.cpp @@ -588,8 +588,9 @@ void QgsDataSourceUri::setEncodedUri( const QByteArray &uri ) mParams.clear(); QUrl url; url.setEncodedQuery( uri ); - QPair item; - Q_FOREACH ( item, url.queryItems() ) + + const auto constQueryItems = url.queryItems(); + for ( const QPair &item : constQueryItems ) { mParams.insertMulti( item.first, item.second ); } diff --git a/src/core/qgsdiagramrenderer.cpp b/src/core/qgsdiagramrenderer.cpp index f97cfba5e10..7faa128c91b 100644 --- a/src/core/qgsdiagramrenderer.cpp +++ b/src/core/qgsdiagramrenderer.cpp @@ -474,7 +474,8 @@ QSet QgsDiagramRenderer::referencedFields( const QgsExpressionContext & Q_FOREACH ( const QString &att, diagramAttributes() ) { QgsExpression *expression = mDiagram->getExpression( att, context ); - Q_FOREACH ( const QString &field, expression->referencedColumns() ) + const auto constReferencedColumns = expression->referencedColumns(); + for ( const QString &field : constReferencedColumns ) { referenced << field; } @@ -632,7 +633,8 @@ QSet QgsLinearlyInterpolatedDiagramRenderer::referencedFields( const Qg if ( mInterpolationSettings.classificationAttributeIsExpression ) { QgsExpression *expression = mDiagram->getExpression( mInterpolationSettings.classificationAttributeExpression, context ); - Q_FOREACH ( const QString &field, expression->referencedColumns() ) + const auto constReferencedColumns = expression->referencedColumns(); + for ( const QString &field : constReferencedColumns ) { referenced << field; } @@ -786,7 +788,8 @@ QList< QgsLayerTreeModelLegendNode * > QgsLinearlyInterpolatedDiagramRenderer::l else { // manual classes need to get size scaled because the QgsSizeScaleTransformer is not used in diagrams :-( - Q_FOREACH ( const QgsDataDefinedSizeLegend::SizeClass &sc, ddSizeLegend.classes() ) + const auto constClasses = ddSizeLegend.classes(); + for ( const QgsDataDefinedSizeLegend::SizeClass &sc : constClasses ) { double size = mDiagram->legendSize( sc.size, mSettings, mInterpolationSettings ); sizeClasses << QgsDataDefinedSizeLegend::SizeClass( size, sc.label ); @@ -794,7 +797,8 @@ QList< QgsLayerTreeModelLegendNode * > QgsLinearlyInterpolatedDiagramRenderer::l } ddSizeLegend.setClasses( sizeClasses ); - Q_FOREACH ( const QgsLegendSymbolItem &si, ddSizeLegend.legendSymbolList() ) + const auto constLegendSymbolList = ddSizeLegend.legendSymbolList(); + for ( const QgsLegendSymbolItem &si : constLegendSymbolList ) { if ( si.dataDefinedSizeLegendSettings() ) nodes << new QgsDataDefinedSizeLegendNode( nodeLayer, *si.dataDefinedSizeLegendSettings() ); diff --git a/src/core/qgsfeature.cpp b/src/core/qgsfeature.cpp index e28ff53f4da..b7186bf609c 100644 --- a/src/core/qgsfeature.cpp +++ b/src/core/qgsfeature.cpp @@ -319,7 +319,8 @@ QDataStream &operator>>( QDataStream &in, QgsFeature &feature ) uint qHash( const QgsFeature &key, uint seed ) { uint hash = seed; - Q_FOREACH ( const QVariant &attr, key.attributes() ) + const auto constAttributes = key.attributes(); + for ( const QVariant &attr : constAttributes ) { hash ^= qHash( attr.toString() ); } diff --git a/src/core/qgsinterval.cpp b/src/core/qgsinterval.cpp index 120f14fe458..447e58b9898 100644 --- a/src/core/qgsinterval.cpp +++ b/src/core/qgsinterval.cpp @@ -81,7 +81,8 @@ QgsInterval QgsInterval::fromString( const QString &string ) for ( ; it != map.constEnd(); ++it ) { int duration = it.key(); - Q_FOREACH ( const QString &name, it.value() ) + const auto constValue = it.value(); + for ( const QString &name : constValue ) { if ( match.contains( name, Qt::CaseInsensitive ) ) { diff --git a/src/core/qgsjsonutils.cpp b/src/core/qgsjsonutils.cpp index e03cfecf9fe..ff4bac83680 100644 --- a/src/core/qgsjsonutils.cpp +++ b/src/core/qgsjsonutils.cpp @@ -340,7 +340,8 @@ QVariantList QgsJsonUtils::parseArray( const QString &json, QVariant::Type type QgsLogger::warning( QStringLiteral( "Cannot parse json (%1) as array: %2" ).arg( error.errorString(), json ) ); return result; } - Q_FOREACH ( const QJsonValue &cur, jsonDoc.array() ) + const auto constArray = jsonDoc.array(); + for ( const QJsonValue &cur : constArray ) { QVariant curVariant = cur.toVariant(); if ( curVariant.convert( type ) ) diff --git a/src/core/qgslegendrenderer.cpp b/src/core/qgslegendrenderer.cpp index 4bd8f7c9cf6..9dac15e83e9 100644 --- a/src/core/qgslegendrenderer.cpp +++ b/src/core/qgslegendrenderer.cpp @@ -236,7 +236,8 @@ QList QgsLegendRenderer::createAtomList( QgsLayerTreeGr if ( !parentGroup ) return atoms; - Q_FOREACH ( QgsLayerTreeNode *node, parentGroup->children() ) + const auto constChildren = parentGroup->children(); + for ( QgsLayerTreeNode *node : constChildren ) { if ( QgsLayerTree::isGroup( node ) ) { diff --git a/src/core/qgsmaphittest.cpp b/src/core/qgsmaphittest.cpp index 3779aa5ad09..f31d564df04 100644 --- a/src/core/qgsmaphittest.cpp +++ b/src/core/qgsmaphittest.cpp @@ -56,7 +56,8 @@ void QgsMapHitTest::run() QgsRenderContext context = QgsRenderContext::fromMapSettings( mSettings ); context.setPainter( &painter ); // we are not going to draw anything, but we still need a working painter - Q_FOREACH ( QgsMapLayer *layer, mSettings.layers() ) + const auto constLayers = mSettings.layers(); + for ( QgsMapLayer *layer : constLayers ) { QgsVectorLayer *vl = qobject_cast( layer ); if ( !vl || !vl->renderer() ) diff --git a/src/core/qgsmaplayer.cpp b/src/core/qgsmaplayer.cpp index aca4f3893bc..0864a5d1e5f 100644 --- a/src/core/qgsmaplayer.cpp +++ b/src/core/qgsmaplayer.cpp @@ -110,7 +110,8 @@ void QgsMapLayer::clone( QgsMapLayer *layer ) const { layer->setBlendMode( blendMode() ); - Q_FOREACH ( const QString &s, styleManager()->styles() ) + const auto constStyles = styleManager()->styles(); + for ( const QString &s : constStyles ) { layer->styleManager()->addStyle( s, styleManager()->style( s ) ); } @@ -1830,7 +1831,8 @@ static QList _depOutEdges( const QgsMapLayer *vl, const Qgs } else { - Q_FOREACH ( const QgsMapLayerDependency &dep, vl->dependencies() ) + const auto constDependencies = vl->dependencies(); + for ( const QgsMapLayerDependency &dep : constDependencies ) { if ( const QgsMapLayer *l = QgsProject::instance()->mapLayer( dep.layerId() ) ) lst << l; diff --git a/src/core/qgsmaplayerlegend.cpp b/src/core/qgsmaplayerlegend.cpp index 14e9e1d8499..8dda0da876a 100644 --- a/src/core/qgsmaplayerlegend.cpp +++ b/src/core/qgsmaplayerlegend.cpp @@ -216,7 +216,8 @@ QList QgsDefaultVectorLayerLegend::createLayerTre nodes.append( new QgsSimpleLegendNode( nodeLayer, r->legendClassificationAttribute() ) ); } - Q_FOREACH ( const QgsLegendSymbolItem &i, r->legendSymbolItems() ) + const auto constLegendSymbolItems = r->legendSymbolItems(); + for ( const QgsLegendSymbolItem &i : constLegendSymbolItems ) { if ( i.dataDefinedSizeLegendSettings() ) nodes << new QgsDataDefinedSizeLegendNode( nodeLayer, *i.dataDefinedSizeLegendSettings() ); diff --git a/src/core/qgsmaprendererjob.cpp b/src/core/qgsmaprendererjob.cpp index 46eaba33837..f5ce9dc9e5c 100644 --- a/src/core/qgsmaprendererjob.cpp +++ b/src/core/qgsmaprendererjob.cpp @@ -419,7 +419,8 @@ void QgsMapRendererJob::cleanupJobs( LayerRenderJobs &jobs ) if ( job.renderer ) { - Q_FOREACH ( const QString &message, job.renderer->errors() ) + const auto constErrors = job.renderer->errors(); + for ( const QString &message : constErrors ) mErrors.append( Error( job.renderer->layerId(), message ) ); delete job.renderer; diff --git a/src/core/qgsmapsettingsutils.cpp b/src/core/qgsmapsettingsutils.cpp index 53d65526eed..6ba20f9c99d 100644 --- a/src/core/qgsmapsettingsutils.cpp +++ b/src/core/qgsmapsettingsutils.cpp @@ -28,7 +28,8 @@ const QStringList QgsMapSettingsUtils::containsAdvancedEffects( const QgsMapSett QSet< QString > layers; QgsTextFormat layerFormat; - Q_FOREACH ( QgsMapLayer *layer, mapSettings.layers() ) + const auto constLayers = mapSettings.layers(); + for ( QgsMapLayer *layer : constLayers ) { if ( layer ) { diff --git a/src/core/qgsmapthemecollection.cpp b/src/core/qgsmapthemecollection.cpp index efadcb08431..23f1b6c467d 100644 --- a/src/core/qgsmapthemecollection.cpp +++ b/src/core/qgsmapthemecollection.cpp @@ -78,7 +78,8 @@ static QString _groupId( QgsLayerTreeNode *node ) void QgsMapThemeCollection::createThemeFromCurrentState( QgsLayerTreeGroup *parent, QgsLayerTreeModel *model, QgsMapThemeCollection::MapThemeRecord &rec ) { - Q_FOREACH ( QgsLayerTreeNode *node, parent->children() ) + const auto constChildren = parent->children(); + for ( QgsLayerTreeNode *node : constChildren ) { if ( QgsLayerTree::isGroup( node ) ) { @@ -170,7 +171,8 @@ void QgsMapThemeCollection::applyThemeToLayer( QgsLayerTreeLayer *nodeLayer, Qgs void QgsMapThemeCollection::applyThemeToGroup( QgsLayerTreeGroup *parent, QgsLayerTreeModel *model, const QgsMapThemeCollection::MapThemeRecord &rec ) { - Q_FOREACH ( QgsLayerTreeNode *node, parent->children() ) + const auto constChildren = parent->children(); + for ( QgsLayerTreeNode *node : constChildren ) { if ( QgsLayerTree::isGroup( node ) ) { @@ -344,7 +346,8 @@ void QgsMapThemeCollection::applyMapThemeCheckedLegendNodesToLayer( const MapThe bool someNodesUnchecked = layerRec.usingLegendItems; - Q_FOREACH ( const QgsLegendSymbolItem &item, vlayer->renderer()->legendSymbolItems() ) + const auto constLegendSymbolItems = vlayer->renderer()->legendSymbolItems(); + for ( const QgsLegendSymbolItem &item : constLegendSymbolItems ) { bool checked = renderer->legendSymbolItemChecked( item.ruleKey() ); bool shouldBeChecked = someNodesUnchecked ? layerRec.checkedLegendItems.contains( item.ruleKey() ) : true; diff --git a/src/core/qgsnetworkaccessmanager.cpp b/src/core/qgsnetworkaccessmanager.cpp index 75149606f53..9134854c19a 100644 --- a/src/core/qgsnetworkaccessmanager.cpp +++ b/src/core/qgsnetworkaccessmanager.cpp @@ -58,7 +58,8 @@ class QgsNetworkProxyFactory : public QNetworkProxyFactory QgsNetworkAccessManager *nam = QgsNetworkAccessManager::instance(); // iterate proxies factories and take first non empty list - Q_FOREACH ( QNetworkProxyFactory *f, nam->proxyFactories() ) + const auto constProxyFactories = nam->proxyFactories(); + for ( QNetworkProxyFactory *f : constProxyFactories ) { QList systemproxies = f->systemProxyForQuery( query ); if ( !systemproxies.isEmpty() ) @@ -75,7 +76,8 @@ class QgsNetworkProxyFactory : public QNetworkProxyFactory QString url = query.url().toString(); - Q_FOREACH ( const QString &exclude, nam->excludeList() ) + const auto constExcludeList = nam->excludeList(); + for ( const QString &exclude : constExcludeList ) { if ( !exclude.trimmed().isEmpty() && url.startsWith( exclude ) ) { diff --git a/src/core/qgsnetworkreplyparser.cpp b/src/core/qgsnetworkreplyparser.cpp index 592ba3607e6..ec760bf3b44 100644 --- a/src/core/qgsnetworkreplyparser.cpp +++ b/src/core/qgsnetworkreplyparser.cpp @@ -38,7 +38,8 @@ QgsNetworkReplyParser::QgsNetworkReplyParser( QNetworkReply *reply ) { // reply is not multipart, copy body and headers QMap headers; - Q_FOREACH ( QByteArray h, mReply->rawHeaderList() ) + const auto constRawHeaderList = mReply->rawHeaderList(); + for ( QByteArray h : constRawHeaderList ) { headers.insert( h, mReply->rawHeader( h ) ); } diff --git a/src/core/qgsobjectcustomproperties.cpp b/src/core/qgsobjectcustomproperties.cpp index 6e7e401c50c..1f8a9890cf3 100644 --- a/src/core/qgsobjectcustomproperties.cpp +++ b/src/core/qgsobjectcustomproperties.cpp @@ -128,7 +128,8 @@ void QgsObjectCustomProperties::writeXml( QDomNode &parentNode, QDomDocument &do } else if ( it.value().canConvert() ) { - Q_FOREACH ( const QString &value, it.value().toStringList() ) + const auto constToStringList = it.value().toStringList(); + for ( const QString &value : constToStringList ) { QDomElement itemElement = doc.createElement( QStringLiteral( "value" ) ); itemElement.appendChild( doc.createTextNode( value ) ); diff --git a/src/core/qgsogcutils.cpp b/src/core/qgsogcutils.cpp index 426c27431f3..f8251ef81e1 100644 --- a/src/core/qgsogcutils.cpp +++ b/src/core/qgsogcutils.cpp @@ -2112,7 +2112,8 @@ QDomElement QgsOgcUtilsExprToFilter::expressionInOperatorToOgcFilter( const QgsE QDomElement orElem = mDoc.createElement( mFilterPrefix + ":Or" ); QDomElement leftNode = expressionNodeToOgcFilter( node->node(), expression, context ); - Q_FOREACH ( QgsExpressionNode *n, node->list()->list() ) + const auto constList = node->list()->list(); + for ( QgsExpressionNode *n : constList ) { QDomElement listNode = expressionNodeToOgcFilter( n, expression, context ); if ( !mErrorMessage.isEmpty() ) @@ -2317,7 +2318,8 @@ QDomElement QgsOgcUtilsExprToFilter::expressionFunctionToOgcFilter( const QgsExp // this is somehow wrong - we are just hoping that the other side supports the same functions as we do... QDomElement funcElem = mDoc.createElement( mFilterPrefix + ":Function" ); funcElem.setAttribute( QStringLiteral( "name" ), fd->name() ); - Q_FOREACH ( QgsExpressionNode *n, node->args()->list() ) + const auto constList = node->args()->list(); + for ( QgsExpressionNode *n : constList ) { QDomElement childElem = expressionNodeToOgcFilter( n, expression, context ); if ( !mErrorMessage.isEmpty() ) @@ -2563,7 +2565,8 @@ QDomElement QgsOgcUtilsSQLStatementToFilter::toOgcFilter( const QgsSQLStatement: QDomElement orElem = mDoc.createElement( mFilterPrefix + ":Or" ); QDomElement leftNode = toOgcFilter( node->node() ); - Q_FOREACH ( QgsSQLStatement::Node *n, node->list()->list() ) + const auto constList = node->list()->list(); + for ( QgsSQLStatement::Node *n : constList ) { QDomElement listNode = toOgcFilter( n ); if ( !mErrorMessage.isEmpty() ) @@ -2975,7 +2978,8 @@ QDomElement QgsOgcUtilsSQLStatementToFilter::toOgcFilter( const QgsSQLStatement: // Other function QDomElement funcElem = mDoc.createElement( mFilterPrefix + ":Function" ); funcElem.setAttribute( QStringLiteral( "name" ), node->name() ); - Q_FOREACH ( QgsSQLStatement::Node *n, node->args()->list() ) + const auto constList = node->args()->list(); + for ( QgsSQLStatement::Node *n : constList ) { QDomElement childElem = toOgcFilter( n ); if ( !mErrorMessage.isEmpty() ) @@ -2996,7 +3000,8 @@ QDomElement QgsOgcUtilsSQLStatementToFilter::toOgcFilter( const QgsSQLStatement: } QList listElem; - Q_FOREACH ( const QString &columnName, node->usingColumns() ) + const auto constUsingColumns = node->usingColumns(); + for ( const QString &columnName : constUsingColumns ) { QDomElement eqElem = mDoc.createElement( mFilterPrefix + ":PropertyIsEqualTo" ); QDomElement propElem1 = mDoc.createElement( mFilterPrefix + ":" + mPropertyName ); @@ -3050,11 +3055,13 @@ QDomElement QgsOgcUtilsSQLStatementToFilter::toOgcFilter( const QgsSQLStatement: } // Register all table name aliases - Q_FOREACH ( QgsSQLStatement::NodeTableDef *table, node->tables() ) + const auto constTables = node->tables(); + for ( QgsSQLStatement::NodeTableDef *table : constTables ) { visit( table ); } - Q_FOREACH ( QgsSQLStatement::NodeJoin *join, node->joins() ) + const auto constJoins = node->joins(); + for ( QgsSQLStatement::NodeJoin *join : constJoins ) { visit( join->tableDef() ); } @@ -3062,7 +3069,7 @@ QDomElement QgsOgcUtilsSQLStatementToFilter::toOgcFilter( const QgsSQLStatement: // Process JOIN conditions QList< QgsSQLStatement::NodeTableDef *> nodeTables = node->tables(); QString leftTable = nodeTables.at( nodeTables.length() - 1 )->name(); - Q_FOREACH ( QgsSQLStatement::NodeJoin *join, node->joins() ) + for ( QgsSQLStatement::NodeJoin *join : constJoins ) { QDomElement joinElem = toOgcFilter( join, leftTable ); if ( !mErrorMessage.isEmpty() ) diff --git a/src/core/qgsproject.cpp b/src/core/qgsproject.cpp index 1c9dee35af7..45dadca80da 100644 --- a/src/core/qgsproject.cpp +++ b/src/core/qgsproject.cpp @@ -1435,7 +1435,8 @@ bool QgsProject::readProjectFile( const QString &filename ) void QgsProject::loadEmbeddedNodes( QgsLayerTreeGroup *group ) { - Q_FOREACH ( QgsLayerTreeNode *child, group->children() ) + const auto constChildren = group->children(); + for ( QgsLayerTreeNode *child : constChildren ) { if ( QgsLayerTree::isGroup( child ) ) { @@ -1449,7 +1450,8 @@ void QgsProject::loadEmbeddedNodes( QgsLayerTreeGroup *group ) if ( newGroup ) { QList clonedChildren; - Q_FOREACH ( QgsLayerTreeNode *newGroupChild, newGroup->children() ) + const auto constChildren = newGroup->children(); + for ( QgsLayerTreeNode *newGroupChild : constChildren ) clonedChildren << newGroupChild->clone(); delete newGroup; @@ -1865,7 +1867,8 @@ bool QgsProject::writeProjectFile( const QString &filename ) qgisNode.appendChild( projectLayersNode ); QDomElement layerOrderNode = doc->createElement( QStringLiteral( "layerorder" ) ); - Q_FOREACH ( QgsMapLayer *layer, mRootGroup->customLayerOrder() ) + const auto constCustomLayerOrder = mRootGroup->customLayerOrder(); + for ( QgsMapLayer *layer : constCustomLayerOrder ) { QDomElement mapLayerElem = doc->createElement( QStringLiteral( "layer" ) ); mapLayerElem.setAttribute( QStringLiteral( "id" ), layer->id() ); @@ -2393,7 +2396,8 @@ QgsLayerTreeGroup *QgsProject::createEmbeddedGroup( const QString &groupName, co mLayerTreeRegistryBridge->setEnabled( true ); // consider the layers might be identify disabled in its project - Q_FOREACH ( const QString &layerId, newGroup->findLayerIds() ) + const auto constFindLayerIds = newGroup->findLayerIds(); + for ( const QString &layerId : constFindLayerIds ) { QgsLayerTreeLayer *layer = newGroup->findLayer( layerId ); if ( layer ) @@ -2408,7 +2412,8 @@ QgsLayerTreeGroup *QgsProject::createEmbeddedGroup( const QString &groupName, co void QgsProject::initializeEmbeddedSubtree( const QString &projectFilePath, QgsLayerTreeGroup *group ) { - Q_FOREACH ( QgsLayerTreeNode *child, group->children() ) + const auto constChildren = group->children(); + for ( QgsLayerTreeNode *child : constChildren ) { // all nodes in the subtree will have "embedded" custom property set child->setCustomProperty( QStringLiteral( "embedded" ), 1 ); diff --git a/src/core/qgsproviderregistry.cpp b/src/core/qgsproviderregistry.cpp index c32e4350974..6a142123e02 100644 --- a/src/core/qgsproviderregistry.cpp +++ b/src/core/qgsproviderregistry.cpp @@ -125,7 +125,8 @@ void QgsProviderRegistry::init() fileRegexp.setPattern( filePattern ); } - Q_FOREACH ( const QFileInfo &fi, mLibraryDirectory.entryInfoList() ) + const auto constEntryInfoList = mLibraryDirectory.entryInfoList(); + for ( const QFileInfo &fi : constEntryInfoList ) { if ( !fileRegexp.isEmpty() ) { diff --git a/src/core/qgsrelationmanager.cpp b/src/core/qgsrelationmanager.cpp index 6957faae757..eed084b5af1 100644 --- a/src/core/qgsrelationmanager.cpp +++ b/src/core/qgsrelationmanager.cpp @@ -126,7 +126,8 @@ QList QgsRelationManager::referencingRelations( const QgsVectorLaye if ( fieldIdx != -2 ) { bool containsField = false; - Q_FOREACH ( const QgsRelation::FieldPair &fp, rel.fieldPairs() ) + const auto constFieldPairs = rel.fieldPairs(); + for ( const QgsRelation::FieldPair &fp : constFieldPairs ) { if ( fieldIdx == layer->fields().lookupField( fp.referencingField() ) ) { diff --git a/src/core/qgssnappingconfig.cpp b/src/core/qgssnappingconfig.cpp index e646d222205..ed03c16bb26 100644 --- a/src/core/qgssnappingconfig.cpp +++ b/src/core/qgssnappingconfig.cpp @@ -148,7 +148,8 @@ void QgsSnappingConfig::reset() // set advanced config mIndividualLayerSettings = QHash(); - Q_FOREACH ( QgsMapLayer *ml, mProject->mapLayers() ) + const auto constMapLayers = mProject->mapLayers(); + for ( QgsMapLayer *ml : constMapLayers ) { QgsVectorLayer *vl = dynamic_cast( ml ); if ( vl ) diff --git a/src/core/qgssnappingutils.cpp b/src/core/qgssnappingutils.cpp index aea1bd43b5a..cd99ea655b2 100644 --- a/src/core/qgssnappingutils.cpp +++ b/src/core/qgssnappingutils.cpp @@ -124,7 +124,8 @@ static QgsPointLocator::Match _findClosestSegmentIntersection( const QgsPointXY QList newPoints; if ( g.wkbType() == QgsWkbTypes::LineString ) { - Q_FOREACH ( const QgsPointXY &p, g.asPolyline() ) + const auto constAsPolyline = g.asPolyline(); + for ( const QgsPointXY &p : constAsPolyline ) { if ( !endpoints.contains( p ) ) newPoints << p; @@ -132,7 +133,8 @@ static QgsPointLocator::Match _findClosestSegmentIntersection( const QgsPointXY } if ( g.wkbType() == QgsWkbTypes::MultiLineString ) { - Q_FOREACH ( const QgsPolylineXY &pl, g.asMultiPolyline() ) + const auto constAsMultiPolyline = g.asMultiPolyline(); + for ( const QgsPolylineXY &pl : constAsMultiPolyline ) { const auto constPl = pl; for ( const QgsPointXY &p : constPl ) @@ -306,7 +308,8 @@ QgsPointLocator::Match QgsSnappingUtils::snapToMap( const QgsPointXY &pointMap, QgsRectangle aoi = _areaOfInterest( pointMap, tolerance ); QList layers; - Q_FOREACH ( QgsMapLayer *layer, mMapSettings.layers() ) + const auto constLayers = mMapSettings.layers(); + for ( QgsMapLayer *layer : constLayers ) if ( QgsVectorLayer *vl = qobject_cast( layer ) ) layers << qMakePair( vl, aoi ); prepareIndex( layers ); @@ -314,8 +317,7 @@ QgsPointLocator::Match QgsSnappingUtils::snapToMap( const QgsPointXY &pointMap, QgsPointLocator::MatchList edges; // for snap on intersection QgsPointLocator::Match bestMatch; - const auto constLayers = layers; - for ( const LayerAndAreaOfInterest &entry : constLayers ) + for ( const LayerAndAreaOfInterest &entry : qgis::as_const( layers ) ) { QgsVectorLayer *vl = entry.first; if ( QgsPointLocator *loc = locatorForLayerUsingStrategy( vl, pointMap, tolerance ) ) @@ -525,7 +527,8 @@ QString QgsSnappingUtils::dump() } else if ( mSnappingConfig.mode() == QgsSnappingConfig::AllLayers ) { - Q_FOREACH ( QgsMapLayer *layer, mMapSettings.layers() ) + const auto constLayers = mMapSettings.layers(); + for ( QgsMapLayer *layer : constLayers ) { if ( QgsVectorLayer *vl = qobject_cast( layer ) ) layers << LayerConfig( vl, _snappingTypeToPointLocatorType( mSnappingConfig.type() ), mSnappingConfig.tolerance(), mSnappingConfig.units() ); diff --git a/src/core/qgssqlexpressioncompiler.cpp b/src/core/qgssqlexpressioncompiler.cpp index 39854eb7960..65f408e6bbb 100644 --- a/src/core/qgssqlexpressioncompiler.cpp +++ b/src/core/qgssqlexpressioncompiler.cpp @@ -340,7 +340,8 @@ QgsSqlExpressionCompiler::Result QgsSqlExpressionCompiler::compileNode( const Qg QStringList list; Result inResult = Complete; - Q_FOREACH ( const QgsExpressionNode *ln, n->list()->list() ) + const auto constList = n->list()->list(); + for ( const QgsExpressionNode *ln : constList ) { QString s; Result r = compileNode( ln, s ); @@ -377,7 +378,8 @@ QgsSqlExpressionCompiler::Result QgsSqlExpressionCompiler::compileNode( const Qg // compile arguments QStringList args; Result inResult = Complete; - Q_FOREACH ( const QgsExpressionNode *ln, n->args()->list() ) + const auto constList = n->args()->list(); + for ( const QgsExpressionNode *ln : constList ) { QString s; Result r = compileNode( ln, s ); diff --git a/src/core/qgssqlstatement.cpp b/src/core/qgssqlstatement.cpp index c2154d73bf3..e6eba72fcaa 100644 --- a/src/core/qgssqlstatement.cpp +++ b/src/core/qgssqlstatement.cpp @@ -160,22 +160,26 @@ const QgsSQLStatement::Node *QgsSQLStatement::rootNode() const void QgsSQLStatement::RecursiveVisitor::visit( const QgsSQLStatement::NodeSelect &n ) { - Q_FOREACH ( QgsSQLStatement::NodeTableDef *table, n.tables() ) + const auto constTables = n.tables(); + for ( QgsSQLStatement::NodeTableDef *table : constTables ) { table->accept( *this ); } - Q_FOREACH ( QgsSQLStatement::NodeSelectedColumn *column, n.columns() ) + const auto constColumns = n.columns(); + for ( QgsSQLStatement::NodeSelectedColumn *column : constColumns ) { column->accept( *this ); } - Q_FOREACH ( QgsSQLStatement::NodeJoin *join, n.joins() ) + const auto constJoins = n.joins(); + for ( QgsSQLStatement::NodeJoin *join : constJoins ) { join->accept( *this ); } QgsSQLStatement::Node *where = n.where(); if ( where ) where->accept( *this ); - Q_FOREACH ( QgsSQLStatement::NodeColumnSorted *column, n.orderBy() ) + const auto constOrderBy = n.orderBy(); + for ( QgsSQLStatement::NodeColumnSorted *column : constOrderBy ) { column->accept( *this ); } diff --git a/src/core/qgstracer.cpp b/src/core/qgstracer.cpp index 7fc57de5924..50f22079023 100644 --- a/src/core/qgstracer.cpp +++ b/src/core/qgstracer.cpp @@ -434,22 +434,31 @@ void extractLinework( const QgsGeometry &g, QgsMultiPolylineXY &mpl ) break; case QgsWkbTypes::Polygon: - Q_FOREACH ( const QgsPolylineXY &ring, geom.asPolygon() ) + { + const auto polygon = geom.asPolygon(); + for ( const QgsPolylineXY &ring : polygon ) mpl << ring; - break; + } + break; case QgsWkbTypes::MultiLineString: - Q_FOREACH ( const QgsPolylineXY &linestring, geom.asMultiPolyline() ) + { + const auto multiPolyline = geom.asMultiPolyline(); + for ( const QgsPolylineXY &linestring : multiPolyline ) mpl << linestring; - break; + } + break; case QgsWkbTypes::MultiPolygon: - Q_FOREACH ( const QgsPolygonXY &polygon, geom.asMultiPolygon() ) + { + const auto multiPolygon = geom.asMultiPolygon(); + for ( const QgsPolygonXY &polygon : multiPolygon ) { for ( const QgsPolylineXY &ring : polygon ) mpl << ring; } - break; + } + break; default: break; // unknown type - do nothing diff --git a/src/core/qgsvectorlayer.cpp b/src/core/qgsvectorlayer.cpp index fa4ee2e3bbc..a41c80eb68b 100644 --- a/src/core/qgsvectorlayer.cpp +++ b/src/core/qgsvectorlayer.cpp @@ -233,7 +233,8 @@ QgsVectorLayer *QgsVectorLayer::clone() const layer->setOpacity( opacity() ); layer->setReadExtentFromXml( readExtentFromXml() ); - Q_FOREACH ( const QgsAction &action, actions()->actions() ) + const auto constActions = actions()->actions(); + for ( const QgsAction &action : constActions ) { layer->actions()->addAction( action ); } diff --git a/src/core/qgsvectorlayercache.cpp b/src/core/qgsvectorlayercache.cpp index 5264ece4684..3b9ecd0f26c 100644 --- a/src/core/qgsvectorlayercache.cpp +++ b/src/core/qgsvectorlayercache.cpp @@ -243,7 +243,8 @@ void QgsVectorLayerCache::onJoinAttributeValueChanged( QgsFeatureId fid, int fie { const QgsVectorLayer *joinLayer = qobject_cast( sender() ); - Q_FOREACH ( const QgsVectorLayerJoinInfo &info, mLayer->vectorJoins() ) + const auto constVectorJoins = mLayer->vectorJoins(); + for ( const QgsVectorLayerJoinInfo &info : constVectorJoins ) { if ( joinLayer == info.joinLayer() ) { @@ -455,7 +456,8 @@ bool QgsVectorLayerCache::checkInformationCovered( const QgsFeatureRequest &feat void QgsVectorLayerCache::connectJoinedLayers() const { - Q_FOREACH ( const QgsVectorLayerJoinInfo &info, mLayer->vectorJoins() ) + const auto constVectorJoins = mLayer->vectorJoins(); + for ( const QgsVectorLayerJoinInfo &info : constVectorJoins ) { const QgsVectorLayer *vl = info.joinLayer(); if ( vl ) diff --git a/src/core/qgsvectorlayereditbuffer.cpp b/src/core/qgsvectorlayereditbuffer.cpp index 3acab86d891..9c9265223d6 100644 --- a/src/core/qgsvectorlayereditbuffer.cpp +++ b/src/core/qgsvectorlayereditbuffer.cpp @@ -549,10 +549,12 @@ bool QgsVectorLayerEditBuffer::commitChanges( QStringList &commitErrors ) commitErrors << tr( "ERROR: %n attribute value change(s) not applied.", "not changed attribute values count", mChangedAttributeValues.size() ); #if 0 QString list = "ERROR: pending changes:"; - Q_FOREACH ( QgsFeatureId id, mChangedAttributeValues.keys() ) + const auto constKeys = mChangedAttributeValues.keys(); + for ( QgsFeatureId id : constKeys ) { list.append( "\n " + FID_TO_STRING( id ) + '[' ); - Q_FOREACH ( int idx, mChangedAttributeValues[ id ].keys() ) + const auto constKeys = mChangedAttributeValues[ id ].keys(); + for ( int idx : constKeys ) { list.append( QString( " %1:%2" ).arg( L->fields().at( idx ).name() ).arg( mChangedAttributeValues[id][idx].toString() ) ); } @@ -680,7 +682,8 @@ bool QgsVectorLayerEditBuffer::commitChanges( QStringList &commitErrors ) if ( !success && provider->hasErrors() ) { commitErrors << tr( "\n Provider errors:" ); - Q_FOREACH ( QString e, provider->errors() ) + const auto constErrors = provider->errors(); + for ( QString e : constErrors ) { commitErrors << " " + e.replace( '\n', QLatin1String( "\n " ) ); } diff --git a/src/core/qgsvectorlayerfeatureiterator.cpp b/src/core/qgsvectorlayerfeatureiterator.cpp index ebac783bc5c..d3833c4e1cf 100644 --- a/src/core/qgsvectorlayerfeatureiterator.cpp +++ b/src/core/qgsvectorlayerfeatureiterator.cpp @@ -203,7 +203,8 @@ QgsVectorLayerFeatureIterator::QgsVectorLayerFeatureIterator( QgsVectorLayerFeat if ( mProviderRequest.filterType() == QgsFeatureRequest::FilterExpression ) { const bool needsGeom = mProviderRequest.filterExpression()->needsGeometry(); - Q_FOREACH ( const QString &field, mProviderRequest.filterExpression()->referencedColumns() ) + const auto constReferencedColumns = mProviderRequest.filterExpression()->referencedColumns(); + for ( const QString &field : constReferencedColumns ) { int idx = source->mFields.lookupField( field ); @@ -628,7 +629,7 @@ void QgsVectorLayerFeatureIterator::prepareExpression( int fieldIdx ) const QList &exps = mSource->mExpressionFieldBuffer->expressions(); int oi = mSource->mFields.fieldOriginIndex( fieldIdx ); - QgsExpression *exp = new QgsExpression( exps[oi].cachedExpression ); + std::unique_ptr exp = qgis::make_unique( exps[oi].cachedExpression ); QgsDistanceArea da; da.setSourceCrs( mSource->mCrs, QgsProject::instance()->transformContext() ); @@ -638,18 +639,18 @@ void QgsVectorLayerFeatureIterator::prepareExpression( int fieldIdx ) exp->setAreaUnits( QgsProject::instance()->areaUnits() ); exp->prepare( mExpressionContext.get() ); - Q_FOREACH ( const QString &col, exp->referencedColumns() ) + const auto referencedColumns = exp->referencedColumns(); + for ( const QString &col : referencedColumns ) { if ( mSource->fields().lookupField( col ) == fieldIdx ) { // circular reference - expression depends on column itself - delete exp; return; } } - mExpressionFieldInfo.insert( fieldIdx, exp ); + mExpressionFieldInfo.insert( fieldIdx, exp.release() ); - Q_FOREACH ( const QString &col, exp->referencedColumns() ) + for ( const QString &col : referencedColumns ) { int dependentFieldIdx = mSource->mFields.lookupField( col ); if ( mRequest.flags() & QgsFeatureRequest::SubsetOfAttributes ) diff --git a/src/core/qgsvectorlayerjoinbuffer.cpp b/src/core/qgsvectorlayerjoinbuffer.cpp index abf6c04b117..372056e1b7a 100644 --- a/src/core/qgsvectorlayerjoinbuffer.cpp +++ b/src/core/qgsvectorlayerjoinbuffer.cpp @@ -33,7 +33,8 @@ QgsVectorLayerJoinBuffer::QgsVectorLayerJoinBuffer( QgsVectorLayer *layer ) static QList _outEdges( QgsVectorLayer *vl ) { QList lst; - Q_FOREACH ( const QgsVectorLayerJoinInfo &info, vl->vectorJoins() ) + const auto constVectorJoins = vl->vectorJoins(); + for ( const QgsVectorLayerJoinInfo &info : constVectorJoins ) { if ( QgsVectorLayer *joinVl = info.joinLayer() ) lst << joinVl; diff --git a/src/core/qgsvirtuallayerdefinitionutils.cpp b/src/core/qgsvirtuallayerdefinitionutils.cpp index e59bd212120..3e6b43f2061 100644 --- a/src/core/qgsvirtuallayerdefinitionutils.cpp +++ b/src/core/qgsvirtuallayerdefinitionutils.cpp @@ -59,7 +59,8 @@ QgsVirtualLayerDefinition QgsVirtualLayerDefinitionUtils::fromJoinedLayer( QgsVe } int joinIdx = 0; - Q_FOREACH ( const QgsVectorLayerJoinInfo &join, layer->vectorJoins() ) + const auto constVectorJoins = layer->vectorJoins(); + for ( const QgsVectorLayerJoinInfo &join : constVectorJoins ) { QString joinName = QStringLiteral( "j%1" ).arg( ++joinIdx ); QgsVectorLayer *joinedLayer = join.joinLayer(); diff --git a/src/core/symbology/qgscptcityarchive.cpp b/src/core/symbology/qgscptcityarchive.cpp index 581e3ab2061..cc365ce685e 100644 --- a/src/core/symbology/qgscptcityarchive.cpp +++ b/src/core/symbology/qgscptcityarchive.cpp @@ -1504,10 +1504,11 @@ QModelIndex QgsCptCityBrowserModel::findPath( const QString &path ) // if we are using a selection collection, search for target in the mapping in this group if ( item->type() == QgsCptCityDataItem::Selection ) { - const QgsCptCitySelectionItem *selItem = dynamic_cast( item ); + const QgsCptCitySelectionItem *selItem = qobject_cast( item ); if ( selItem ) { - Q_FOREACH ( QString childPath, selItem->selectionsList() ) + const auto constSelectionsList = selItem->selectionsList(); + for ( QString childPath : constSelectionsList ) { if ( childPath.endsWith( '/' ) ) childPath.chop( 1 ); diff --git a/src/core/symbology/qgsrulebasedrenderer.cpp b/src/core/symbology/qgsrulebasedrenderer.cpp index 812dcce5439..fbd47c78ec9 100644 --- a/src/core/symbology/qgsrulebasedrenderer.cpp +++ b/src/core/symbology/qgsrulebasedrenderer.cpp @@ -1163,7 +1163,8 @@ void QgsRuleBasedRenderer::refineRuleCategories( QgsRuleBasedRenderer::Rule *ini attr = QgsExpression::quotedColumnRef( attr ); } - Q_FOREACH ( const QgsRendererCategory &cat, r->categories() ) + const auto constCategories = r->categories(); + for ( const QgsRendererCategory &cat : constCategories ) { QString value; // not quoting numbers saves a type cast @@ -1199,7 +1200,8 @@ void QgsRuleBasedRenderer::refineRuleRanges( QgsRuleBasedRenderer::Rule *initial } bool firstRange = true; - Q_FOREACH ( const QgsRendererRange &rng, r->ranges() ) + const auto constRanges = r->ranges(); + for ( const QgsRendererRange &rng : constRanges ) { // due to the loss of precision in double->string conversion we may miss out values at the limit of the range // TODO: have a possibility to construct expressions directly as a parse tree to avoid loss of precision