@@ -4061,6 +4061,7 @@ void QgisApp::askUserForGDALSublayers( QgsRasterLayer *layer )
4061
4061
4062
4062
// We initialize a selection dialog and display it.
4063
4063
QgsSublayersDialog chooseSublayersDialog ( QgsSublayersDialog::Gdal, QStringLiteral ( " gdal" ), this );
4064
+ chooseSublayersDialog.setShowAddToGroupCheckbox ( true );
4064
4065
4065
4066
QgsSublayersDialog::LayerDefinitionList layers;
4066
4067
QStringList names;
@@ -4112,6 +4113,13 @@ void QgisApp::askUserForGDALSublayers( QgsRasterLayer *layer )
4112
4113
QRegExp rx ( " \" (.*)\" " );
4113
4114
QString uri, name;
4114
4115
4116
+ QgsLayerTreeGroup *group = nullptr ;
4117
+ bool addToGroup = settings.value ( QStringLiteral ( " /qgis/openSublayersInGroup" ), true ).toBool ();
4118
+ if ( addToGroup )
4119
+ {
4120
+ group = QgsProject::instance ()->layerTreeRoot ()->insertGroup ( 0 , layer->name () );
4121
+ }
4122
+
4115
4123
Q_FOREACH ( const QgsSublayersDialog::LayerDefinition &def, chooseSublayersDialog.selection () )
4116
4124
{
4117
4125
int i = def.layerId ;
@@ -4129,7 +4137,15 @@ void QgisApp::askUserForGDALSublayers( QgsRasterLayer *layer )
4129
4137
QgsRasterLayer *rlayer = new QgsRasterLayer ( sublayers[i], name );
4130
4138
if ( rlayer && rlayer->isValid () )
4131
4139
{
4132
- addRasterLayer ( rlayer );
4140
+ if ( addToGroup )
4141
+ {
4142
+ QgsProject::instance ()->addMapLayer ( rlayer, false );
4143
+ group->addLayer ( rlayer );
4144
+ }
4145
+ else
4146
+ {
4147
+ addRasterLayer ( rlayer );
4148
+ }
4133
4149
}
4134
4150
}
4135
4151
}
@@ -4158,6 +4174,11 @@ void QgisApp::loadGDALSublayers( const QString &uri, const QStringList &list )
4158
4174
{
4159
4175
QString path, name;
4160
4176
QgsRasterLayer *subLayer = nullptr ;
4177
+ QgsSettings settings;
4178
+ QgsLayerTreeGroup *group = nullptr ;
4179
+ bool addToGroup = settings.value ( QStringLiteral ( " /qgis/openSublayersInGroup" ), true ).toBool ();
4180
+ if ( addToGroup )
4181
+ group = QgsProject::instance ()->layerTreeRoot ()->insertGroup ( 0 , QFileInfo ( uri ).completeBaseName () );
4161
4182
4162
4183
// add layers in reverse order so they appear in the right order in the layer dock
4163
4184
for ( int i = list.size () - 1 ; i >= 0 ; i-- )
@@ -4170,7 +4191,15 @@ void QgisApp::loadGDALSublayers( const QString &uri, const QStringList &list )
4170
4191
if ( subLayer )
4171
4192
{
4172
4193
if ( subLayer->isValid () )
4173
- addRasterLayer ( subLayer );
4194
+ if ( addToGroup )
4195
+ {
4196
+ QgsProject::instance ()->addMapLayer ( subLayer, false );
4197
+ group->addLayer ( subLayer );
4198
+ }
4199
+ else
4200
+ {
4201
+ addRasterLayer ( subLayer );
4202
+ }
4174
4203
else
4175
4204
delete subLayer;
4176
4205
}
@@ -4224,12 +4253,14 @@ void QgisApp::askUserForOGRSublayers( QgsVectorLayer *layer )
4224
4253
4225
4254
// We initialize a selection dialog and display it.
4226
4255
QgsSublayersDialog chooseSublayersDialog ( QgsSublayersDialog::Ogr, QStringLiteral ( " ogr" ), this );
4256
+ chooseSublayersDialog.setShowAddToGroupCheckbox ( true );
4227
4257
chooseSublayersDialog.populateLayerTable ( list );
4228
4258
4229
4259
if ( !chooseSublayersDialog.exec () )
4230
4260
return ;
4231
4261
4232
4262
QString uri = layer->source ();
4263
+ QString name = layer->name ();
4233
4264
// the separator char & was changed to | to be compatible
4234
4265
// with url for protocol drivers
4235
4266
if ( uri.contains ( ' |' , Qt::CaseSensitive ) )
@@ -4276,12 +4307,19 @@ void QgisApp::askUserForOGRSublayers( QgsVectorLayer *layer )
4276
4307
4277
4308
if ( ! myList.isEmpty () )
4278
4309
{
4279
- // Register layer(s) with the layers registry
4280
- QgsProject::instance ()->addMapLayers ( myList );
4310
+ QgsSettings settings;
4311
+ bool addToGroup = settings.value ( QStringLiteral ( " /qgis/openSublayersInGroup" ), true ).toBool ();
4312
+ QgsLayerTreeGroup *group = nullptr ;
4313
+ if ( addToGroup )
4314
+ group = QgsProject::instance ()->layerTreeRoot ()->insertGroup ( 0 , name );
4315
+
4316
+ QgsProject::instance ()->addMapLayers ( myList, ! addToGroup );
4281
4317
Q_FOREACH ( QgsMapLayer *l, myList )
4282
4318
{
4283
4319
bool ok;
4284
4320
l->loadDefaultStyle ( ok );
4321
+ if ( addToGroup )
4322
+ group->addLayer ( l );
4285
4323
}
4286
4324
}
4287
4325
}
0 commit comments