Skip to content

Commit 77a0b88

Browse files
committedJan 13, 2016
more informative layer name when loading OGR datasource with only one sublayer (followup f99ccf0)
Also use more informative raster layer names when loading raster with sublayers
1 parent b2cc309 commit 77a0b88

File tree

1 file changed

+19
-10
lines changed

1 file changed

+19
-10
lines changed
 

‎src/app/qgisapp.cpp

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3247,16 +3247,10 @@ bool QgisApp::addVectorLayers( const QStringList &theLayerQStringList, const QSt
32473247
//set friendly name for datasources with only one layer
32483248
QStringList sublayers = layer->dataProvider()->subLayers();
32493249
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-
}
32573250

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+
32603254
myList << layer;
32613255
}
32623256
else
@@ -3476,9 +3470,24 @@ void QgisApp::askUserForGDALSublayers( QgsRasterLayer *layer )
34763470

34773471
if ( chooseSublayersDialog.exec() )
34783472
{
3473+
// create more informative layer names, containing filename as well as sublayer name
3474+
QRegExp rx( "\"(.*)\"" );
3475+
QString uri, name;
3476+
34793477
Q_FOREACH ( int i, chooseSublayersDialog.selectionIndexes() )
34803478
{
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 );
34823491
if ( rlayer && rlayer->isValid() )
34833492
{
34843493
addRasterLayer( rlayer );

0 commit comments

Comments
 (0)
Please sign in to comment.