Skip to content

Commit

Permalink
Q_GLOBAL_STATIC for QgsDataProvider
Browse files Browse the repository at this point in the history
  • Loading branch information
m-kuhn committed Nov 2, 2019
1 parent 2b20c61 commit a502875
Show file tree
Hide file tree
Showing 9 changed files with 40 additions and 16 deletions.
1 change: 1 addition & 0 deletions python/core/__init__.py.in
Expand Up @@ -38,6 +38,7 @@ from .additions.qgssettings import _qgssettings_enum_value, _qgssettings_set_enu
from .additions.qgstaskwrapper import QgsTaskWrapper
from .additions.readwritecontextentercategory import ReadWriteContextEnterCategory
from .additions.validitycheck import check
from .additions import qgsdataprovider

# Injections into classes
QgsFeature.__geo_interface__ = property(mapping_feature)
Expand Down
23 changes: 23 additions & 0 deletions python/core/additions/qgsdataprovider.py
@@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-

"""
***************************************************************************
qgsdataprovider.py
---------------------
Date : November 2019
Copyright : (C) 2019 by Matthias Kuhn
Email : matthias@opengis.ch
***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************
"""

from qgis.core import QgsDataProvider

# Monkey patch static const "QgsDataProvider.SUBLAYER_SEPARATOR" which was removed for QGIS 3.12
QgsDataProvider.SUBLAYER_SEPARATOR = QgsDataProvider.sublayerSeparator()
4 changes: 2 additions & 2 deletions python/core/auto_generated/qgsdataprovider.sip.in
Expand Up @@ -170,8 +170,6 @@ it knows about in some way before it hands them off to the provider.
.. seealso:: SUBLAYER_SEPARATOR
%End

static QString SUBLAYER_SEPARATOR;

virtual QStringList subLayerStyles() const;
%Docstring
Sub-layer styles for each sub-layer handled by this provider,
Expand Down Expand Up @@ -392,6 +390,8 @@ Returns ``True`` if metadata was successfully written to the data provider.



static QString sublayerSeparator();

signals:

void fullExtentCalculated();
Expand Down
4 changes: 2 additions & 2 deletions src/app/qgisapp.cpp
Expand Up @@ -4833,7 +4833,7 @@ QString QgisApp::crsAndFormatAdjustedLayerUri( const QString &uri, const QString

static QStringList splitSubLayerDef( const QString &subLayerDef )
{
return subLayerDef.split( QgsDataProvider::SUBLAYER_SEPARATOR );
return subLayerDef.split( QgsDataProvider::sublayerSeparator() );
}

static void setupVectorLayer( const QString &vectorLayerPath,
Expand Down Expand Up @@ -5267,7 +5267,7 @@ QList< QgsMapLayer * > QgisApp::askUserForGDALSublayers( QgsRasterLayer *layer )
else
{
// remove driver name and file name
name.remove( name.split( QgsDataProvider::SUBLAYER_SEPARATOR )[0] );
name.remove( name.split( QgsDataProvider::sublayerSeparator() )[0] );
name.remove( path );
}
// remove any : or " left over
Expand Down
2 changes: 1 addition & 1 deletion src/core/providers/gdal/qgsgdaldataitems.cpp
Expand Up @@ -90,7 +90,7 @@ QVector<QgsDataItem *> QgsGdalLayerItem::createChildren()
else
{
// remove driver name and file name and initial ':'
name.remove( name.split( QgsDataProvider::SUBLAYER_SEPARATOR )[0] + ':' );
name.remove( name.split( QgsDataProvider::sublayerSeparator() )[0] + ':' );
name.remove( mPath );
}
// remove any : or " left over
Expand Down
2 changes: 1 addition & 1 deletion src/core/providers/ogr/qgsogrdataitems.cpp
Expand Up @@ -122,7 +122,7 @@ QList<QgsOgrDbLayerInfo *> QgsOgrLayerItem::subLayers( const QString &path, cons
int prevIdx = -1;
for ( const QString &descriptor : subLayersList )
{
QStringList pieces = descriptor.split( QgsDataProvider::SUBLAYER_SEPARATOR );
QStringList pieces = descriptor.split( QgsDataProvider::sublayerSeparator() );
int idx = pieces[0].toInt();
subLayersMap.insert( idx, pieces );
if ( pieces.count() >= 4 && idx != prevIdx )
Expand Down
4 changes: 2 additions & 2 deletions src/core/providers/ogr/qgsogrprovider.cpp
Expand Up @@ -836,7 +836,7 @@ void QgsOgrProvider::addSubLayerDetailsToSubLayerList( int i, QgsOgrLayer *layer
<< geometryColumnName
<< longDescription;

mSubLayerList << parts.join( QgsDataProvider::SUBLAYER_SEPARATOR );
mSubLayerList << parts.join( sublayerSeparator() );
}
else
{
Expand Down Expand Up @@ -908,7 +908,7 @@ void QgsOgrProvider::addSubLayerDetailsToSubLayerList( int i, QgsOgrLayer *layer
<< geometryColumnName
<< longDescription;

QString sl = parts.join( QgsDataProvider::SUBLAYER_SEPARATOR );
QString sl = parts.join( sublayerSeparator() );
QgsDebugMsg( "sub layer: " + sl );
mSubLayerList << sl;
}
Expand Down
7 changes: 6 additions & 1 deletion src/core/qgsdataprovider.cpp
Expand Up @@ -16,7 +16,7 @@
#include <QMutexLocker>
#include "qgsdataprovider.h"

QString QgsDataProvider::SUBLAYER_SEPARATOR = QString( "!!::!!" );
#define SUBLAYER_SEPARATOR QStringLiteral( "!!::!!" )

QgsDataProvider::QgsDataProvider( const QString &uri, const QgsDataProvider::ProviderOptions &providerOptions )
: mDataSourceURI( uri ),
Expand Down Expand Up @@ -65,3 +65,8 @@ void QgsDataProvider::setTransformContext( const QgsCoordinateTransformContext &
QMutexLocker locker( &mOptionsMutex );
mOptions.transformContext = value;
}

QString QgsDataProvider::sublayerSeparator()
{
return SUBLAYER_SEPARATOR;
}
9 changes: 2 additions & 7 deletions src/core/qgsdataprovider.h
Expand Up @@ -239,13 +239,6 @@ class CORE_EXPORT QgsDataProvider : public QObject
return QStringList(); // Empty
}

/**
* String sequence used for separating components of sublayers strings.
* \see subLayers()
* \since QGIS 3.0
*/
static QString SUBLAYER_SEPARATOR;

/**
* Sub-layer styles for each sub-layer handled by this provider,
* in order from bottom to top
Expand Down Expand Up @@ -546,6 +539,8 @@ class CORE_EXPORT QgsDataProvider : public QObject
*/
virtual void setTransformContext( const QgsCoordinateTransformContext &transformContext ) SIP_SKIP;

static QString sublayerSeparator();

signals:

/**
Expand Down

0 comments on commit a502875

Please sign in to comment.