@@ -3247,16 +3247,10 @@ bool QgisApp::addVectorLayers( const QStringList &theLayerQStringList, const QSt
3247
3247
// set friendly name for datasources with only one layer
3248
3248
QStringList sublayers = layer->dataProvider ()->subLayers ();
3249
3249
QStringList elements = sublayers.at ( 0 ).split ( ' :' );
3250
- if ( layer->storageType () != " GeoJSON" )
3251
- {
3252
- while ( elements.size () > 4 )
3253
- {
3254
- elements[1 ] += ' :' + elements[2 ];
3255
- elements.removeAt ( 2 );
3256
- }
3257
3250
3258
- layer->setLayerName ( elements.at ( 1 ) );
3259
- }
3251
+ Q_ASSERT ( elements.size () >= 4 );
3252
+ layer->setLayerName ( QString ( " %1 %2 %3" ).arg ( layer->name (), elements.at ( 1 ), elements.at ( 3 ) ) );
3253
+
3260
3254
myList << layer;
3261
3255
}
3262
3256
else
@@ -3476,9 +3470,24 @@ void QgisApp::askUserForGDALSublayers( QgsRasterLayer *layer )
3476
3470
3477
3471
if ( chooseSublayersDialog.exec () )
3478
3472
{
3473
+ // create more informative layer names, containing filename as well as sublayer name
3474
+ QRegExp rx ( " \" (.*)\" " );
3475
+ QString uri, name;
3476
+
3479
3477
Q_FOREACH ( int i, chooseSublayersDialog.selectionIndexes () )
3480
3478
{
3481
- QgsRasterLayer *rlayer = new QgsRasterLayer ( sublayers[i], names[i] );
3479
+ if ( rx.indexIn ( sublayers[i] ) != -1 )
3480
+ {
3481
+ uri = rx.cap ( 1 );
3482
+ name = sublayers[i];
3483
+ name.replace ( uri, QFileInfo ( uri ).completeBaseName () );
3484
+ }
3485
+ else
3486
+ {
3487
+ name = names[i];
3488
+ }
3489
+
3490
+ QgsRasterLayer *rlayer = new QgsRasterLayer ( sublayers[i], name );
3482
3491
if ( rlayer && rlayer->isValid () )
3483
3492
{
3484
3493
addRasterLayer ( rlayer );
0 commit comments