@@ -3257,16 +3257,10 @@ bool QgisApp::addVectorLayers( const QStringList &theLayerQStringList, const QSt
3257
3257
// set friendly name for datasources with only one layer
3258
3258
QStringList sublayers = layer->dataProvider ()->subLayers ();
3259
3259
QStringList elements = sublayers.at ( 0 ).split ( ' :' );
3260
- if ( layer->storageType () != " GeoJSON" )
3261
- {
3262
- while ( elements.size () > 4 )
3263
- {
3264
- elements[1 ] += ' :' + elements[2 ];
3265
- elements.removeAt ( 2 );
3266
- }
3267
3260
3268
- layer->setLayerName ( elements.at ( 1 ) );
3269
- }
3261
+ Q_ASSERT ( elements.size () >= 4 );
3262
+ layer->setLayerName ( QString ( " %1 %2 %3" ).arg ( layer->name (), elements.at ( 1 ), elements.at ( 3 ) ) );
3263
+
3270
3264
myList << layer;
3271
3265
}
3272
3266
else
@@ -3486,9 +3480,24 @@ void QgisApp::askUserForGDALSublayers( QgsRasterLayer *layer )
3486
3480
3487
3481
if ( chooseSublayersDialog.exec () )
3488
3482
{
3483
+ // create more informative layer names, containing filename as well as sublayer name
3484
+ QRegExp rx ( " \" (.*)\" " );
3485
+ QString uri, name;
3486
+
3489
3487
Q_FOREACH ( int i, chooseSublayersDialog.selectionIndexes () )
3490
3488
{
3491
- QgsRasterLayer *rlayer = new QgsRasterLayer ( sublayers[i], names[i] );
3489
+ if ( rx.indexIn ( sublayers[i] ) != -1 )
3490
+ {
3491
+ uri = rx.cap ( 1 );
3492
+ name = sublayers[i];
3493
+ name.replace ( uri, QFileInfo ( uri ).completeBaseName () );
3494
+ }
3495
+ else
3496
+ {
3497
+ name = names[i];
3498
+ }
3499
+
3500
+ QgsRasterLayer *rlayer = new QgsRasterLayer ( sublayers[i], name );
3492
3501
if ( rlayer && rlayer->isValid () )
3493
3502
{
3494
3503
addRasterLayer ( rlayer );
0 commit comments