Skip to content

Commit 2b703e3

Browse files
committedJun 24, 2015
handle ogr sublayers with colon
1 parent 048aff0 commit 2b703e3

File tree

2 files changed

+35
-3
lines changed

2 files changed

+35
-3
lines changed
 

‎src/app/qgisapp.cpp

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2995,7 +2995,15 @@ bool QgisApp::addVectorLayers( const QStringList &theLayerQStringList, const QSt
29952995
QStringList sublayers = layer->dataProvider()->subLayers();
29962996
QStringList elements = sublayers.at( 0 ).split( ":" );
29972997
if ( layer->storageType() != "GeoJSON" )
2998+
{
2999+
while ( elements.size() > 4 )
3000+
{
3001+
elements[1] += ":" + elements[2];
3002+
elements.removeAt( 2 );
3003+
}
3004+
29983005
layer->setLayerName( elements.at( 1 ) );
3006+
}
29993007
myList << layer;
30003008
}
30013009
else
@@ -3320,8 +3328,20 @@ void QgisApp::loadOGRSublayers( QString layertype, QString uri, QStringList list
33203328
for ( int i = 0; i < list.size(); i++ )
33213329
{
33223330
QString composedURI;
3323-
QString layerName = list.at( i ).split( ':' ).value( 0 );
3324-
QString layerType = list.at( i ).split( ':' ).value( 1 );
3331+
QStringList elements = list.at( i ).split( ":" );
3332+
while ( elements.size() > 2 )
3333+
{
3334+
elements[0] += ":" + elements[1];
3335+
elements.removeAt( 1 );
3336+
}
3337+
3338+
QString layerName = elements.value( 0 );
3339+
QString layerType = elements.value( 1 );
3340+
if ( layerType == "any" )
3341+
{
3342+
layerType = "";
3343+
list.removeAt( 1 );
3344+
}
33253345

33263346
if ( layertype != "GRASS" )
33273347
{

‎src/gui/qgssublayersdialog.cpp

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,16 @@ QStringList QgsSublayersDialog::selectionNames()
8181
count++;
8282
}
8383
}
84+
8485
if ( count > 1 )
8586
{
8687
name += ":" + layersTable->selectedItems().at( i )->text( 3 );
8788
}
89+
else
90+
{
91+
name += ":any";
92+
}
93+
8894
list << name;
8995
}
9096
return list;
@@ -104,7 +110,13 @@ void QgsSublayersDialog::populateLayerTable( QStringList theList, QString delim
104110
{
105111
foreach ( QString item, theList )
106112
{
107-
layersTable->addTopLevelItem( new QTreeWidgetItem( item.split( delim ) ) );
113+
QStringList elements = item.split( delim );
114+
while ( elements.size() > 4 )
115+
{
116+
elements[1] += delim + elements[2];
117+
elements.removeAt( 2 );
118+
}
119+
layersTable->addTopLevelItem( new QTreeWidgetItem( elements ) );
108120
}
109121

110122
// resize columns

0 commit comments

Comments
 (0)
Failed to load comments.