Tweaks to automatic layer name logic

This commit is contained in:
Nyall Dawson 2017-11-12 16:38:41 +10:00
parent 15e15356b3
commit 020972c291
3 changed files with 17 additions and 7 deletions

View File

@ -4157,6 +4157,7 @@ bool QgisApp::addVectorLayers( const QStringList &layerQStringList, const QStrin
QFileInfo fi( src ); QFileInfo fi( src );
base = fi.completeBaseName(); base = fi.completeBaseName();
} }
base = QgsMapLayer::formatLayerName( base );
QgsDebugMsg( "completeBaseName: " + base ); QgsDebugMsg( "completeBaseName: " + base );
@ -4200,8 +4201,10 @@ bool QgisApp::addVectorLayers( const QStringList &layerQStringList, const QStrin
{ {
//set friendly name for datasources with only one layer //set friendly name for datasources with only one layer
QStringList elements = sublayers.at( 0 ).split( ':' ); QStringList elements = sublayers.at( 0 ).split( ':' );
QString subLayerNameFormatted = elements.size() >= 2 ? QgsMapLayer::formatLayerName( elements.at( 1 ) ) : QString();
if ( elements.size() >= 4 && layer->name() != elements.at( 1 ) ) if ( elements.size() >= 4 && layer->name().compare( elements.at( 1 ), Qt::CaseInsensitive ) != 0
&& layer->name().compare( subLayerNameFormatted, Qt::CaseInsensitive ) != 0 )
{ {
layer->setName( QStringLiteral( "%1 %2" ).arg( layer->name(), elements.at( 1 ) ) ); layer->setName( QStringLiteral( "%1 %2" ).arg( layer->name(), elements.at( 1 ) ) );
} }
@ -9994,8 +9997,10 @@ QgsVectorLayer *QgisApp::addVectorLayer( const QString &vectorLayerPath, const Q
if ( !sublayers.isEmpty() ) if ( !sublayers.isEmpty() )
{ {
QStringList elements = sublayers.at( 0 ).split( ':' ); QStringList elements = sublayers.at( 0 ).split( ':' );
QString subLayerNameFormatted = elements.size() >= 2 ? QgsMapLayer::formatLayerName( elements.at( 1 ) ) : QString();
if ( elements.size() >= 4 && layer->name() != elements.at( 1 ) ) if ( elements.size() >= 4 && layer->name().compare( elements.at( 1 ), Qt::CaseInsensitive ) != 0
&& layer->name().compare( subLayerNameFormatted, Qt::CaseInsensitive ) != 0 )
{ {
layer->setName( QStringLiteral( "%1 %2" ).arg( layer->name(), elements.at( 1 ) ) ); layer->setName( QStringLiteral( "%1 %2" ).arg( layer->name(), elements.at( 1 ) ) );
} }

View File

@ -1022,12 +1022,8 @@ void QgsMapLayer::setCrs( const QgsCoordinateReferenceSystem &srs, bool emitSign
QString QgsMapLayer::formatLayerName( const QString &name ) QString QgsMapLayer::formatLayerName( const QString &name )
{ {
QString layerName( name ); QString layerName( name );
if ( !layerName.isEmpty() )
layerName = QgsStringUtils::capitalize( name, QgsStringUtils::ForceFirstLetterToCapital );
layerName.replace( '_', ' ' ); layerName.replace( '_', ' ' );
layerName = QgsStringUtils::capitalize( layerName, QgsStringUtils::ForceFirstLetterToCapital );
return layerName; return layerName;
} }

View File

@ -62,6 +62,7 @@ class TestQgsMapLayer : public QObject
void cleanup(); // will be called after every testfunction. void cleanup(); // will be called after every testfunction.
void isValid(); void isValid();
void formatName();
void setBlendMode(); void setBlendMode();
@ -116,6 +117,14 @@ void TestQgsMapLayer::isValid()
QVERIFY( mpLayer->isValid() ); QVERIFY( mpLayer->isValid() );
} }
void TestQgsMapLayer::formatName()
{
QCOMPARE( QgsMapLayer::formatLayerName( QString() ), QString() );
QCOMPARE( QgsMapLayer::formatLayerName( QStringLiteral( "layer" ) ), QStringLiteral( "Layer" ) );
QCOMPARE( QgsMapLayer::formatLayerName( QStringLiteral( "layer name" ) ), QStringLiteral( "Layer Name" ) );
QCOMPARE( QgsMapLayer::formatLayerName( QStringLiteral( "layer_name" ) ), QStringLiteral( "Layer Name" ) );
}
void TestQgsMapLayer::setBlendMode() void TestQgsMapLayer::setBlendMode()
{ {
TestSignalReceiver receiver; TestSignalReceiver receiver;