void QgsWFSSourceSelect::addLayer() { //get selected entry in treeview QModelIndex currentIndex = treeView->selectionModel()->currentIndex(); if ( !currentIndex.isValid() ) { return; } QgsWFSConnection connection( cmbConnections->currentText() ); QString pCrsString( labelCoordRefSys->text() ); //create layers that user selected from this WFS source QModelIndexList list = treeView->selectionModel()->selectedRows(); for ( int i = 0; i < list.size(); i++ ) { //add a wfs layer to the map QModelIndex idx = mModelProxy->mapToSource( list[i] ); if ( !idx.isValid() ) { continue; } int row = idx.row(); QString typeName = mModel->item( row, MODEL_IDX_NAME )->text(); //WFS repository's name for layer QString titleName = mModel->item( row, MODEL_IDX_TITLE )->text(); //WFS type name title for layer name (if option is set) QString filter = mModel->item( row, MODEL_IDX_FILTER )->text(); //optional filter specified by user QString layerName = typeName; if ( cbxUseTitleLayerName->isChecked() && !titleName.isEmpty() ) { layerName = titleName; } QgsDebugMsg( "Layer " + typeName + " Filter is " + filter ); //is "Only request features overlapping the view extent" checked? if ( !cbxFeatureCurrentViewExtent->isChecked() ) { //no: entire WFS layer will be retrieved and cached mUri = QgsWFSDataSourceURI::build( connection.uri().uri(), typeName, pCrsString, filter ); } else { //yes mUri = QgsWFSDataSourceURI::build( connection.uri().uri(), typeName, pCrsString, filter, true ); } emit addWfsLayer( mUri, layerName ); } if ( !mHoldDialogOpen->isChecked() ) { accept(); } }
void QgsWFSSourceSelect::addButtonClicked() { //get selected entry in treeview QModelIndex currentIndex = treeView->selectionModel()->currentIndex(); if ( !currentIndex.isValid() ) { return; } QgsWfsConnection connection( cmbConnections->currentText() ); QString pCrsString( labelCoordRefSys->text() ); //create layers that user selected from this WFS source QModelIndexList list = treeView->selectionModel()->selectedRows(); for ( int i = 0; i < list.size(); i++ ) { //add a wfs layer to the map QModelIndex idx = mModelProxy->mapToSource( list[i] ); if ( !idx.isValid() ) { continue; } int row = idx.row(); QString typeName = mModel->item( row, MODEL_IDX_NAME )->text(); //WFS repository's name for layer QString titleName = mModel->item( row, MODEL_IDX_TITLE )->text(); //WFS type name title for layer name (if option is set) QString sql = mModel->item( row, MODEL_IDX_SQL )->text(); //optional SqL specified by user QString layerName = typeName; if ( cbxUseTitleLayerName->isChecked() && !titleName.isEmpty() ) { layerName = titleName; } QgsDebugMsg( "Layer " + typeName + " SQL is " + sql ); mUri = QgsWFSDataSourceURI::build( connection.uri().uri(), typeName, pCrsString, sql, cbxFeatureCurrentViewExtent->isChecked() ); emit addVectorLayer( mUri, layerName ); } if ( ! mHoldDialogOpen->isChecked() && widgetMode() == QgsProviderRegistry::WidgetMode::None ) { accept(); } }
void QgsArcGisServiceSourceSelect::addButtonClicked() { if ( treeView->selectionModel()->selectedRows().isEmpty() ) { return; } QgsOwsConnection connection( mServiceName, cmbConnections->currentText() ); QString pCrsString( labelCoordRefSys->text() ); QgsCoordinateReferenceSystem pCrs( pCrsString ); //prepare canvas extent info for layers with "cache features" option not set QgsRectangle extent; QgsCoordinateReferenceSystem canvasCrs; if ( mapCanvas() ) { extent = mapCanvas()->extent(); canvasCrs = mapCanvas()->mapSettings().destinationCrs(); } //does canvas have "on the fly" reprojection set? if ( pCrs.isValid() && canvasCrs.isValid() ) { try { Q_NOWARN_DEPRECATED_PUSH extent = QgsCoordinateTransform( canvasCrs, pCrs ).transform( extent ); Q_NOWARN_DEPRECATED_POP QgsDebugMsg( QStringLiteral( "canvas transform: Canvas CRS=%1, Provider CRS=%2, BBOX=%3" ) .arg( canvasCrs.authid(), pCrs.authid(), extent.asWktCoordinates() ) ); } catch ( const QgsCsException & ) { // Extent is not in range for specified CRS, leave extent empty. } } //create layers that user selected from this feature source QModelIndexList list = treeView->selectionModel()->selectedRows(); for ( int i = 0; i < list.size(); i++ ) { //add a wfs layer to the map QModelIndex idx = mModelProxy->mapToSource( list[i] ); if ( !idx.isValid() ) { continue; } int row = idx.row(); QString layerTitle = mModel->item( row, 0 )->text(); //layer title/id QString layerName = mModel->item( row, 1 )->text(); //layer name bool cacheFeatures = mServiceType == FeatureService ? mModel->item( row, 3 )->checkState() == Qt::Checked : false; QString filter = mServiceType == FeatureService ? mModel->item( row, 4 )->text() : QString(); //optional filter specified by user if ( cbxUseTitleLayerName->isChecked() && !layerTitle.isEmpty() ) { layerName = layerTitle; } QgsRectangle layerExtent; if ( mServiceType == FeatureService && ( cbxFeatureCurrentViewExtent->isChecked() || !cacheFeatures ) ) { layerExtent = extent; } QString uri = getLayerURI( connection, layerTitle, layerName, pCrsString, filter, layerExtent ); QgsDebugMsg( "Layer " + layerName + ", uri: " + uri ); addServiceLayer( uri, layerName ); } accept(); }