Skip to content

Commit af0bae6

Browse files
committedOct 2, 2018
[gdal] update data item creation to new methods
1 parent e877050 commit af0bae6

File tree

3 files changed

+30
-15
lines changed

3 files changed

+30
-15
lines changed
 

‎src/providers/gdal/qgsgdaldataitems.cpp

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
* (at your option) any later version. *
1313
* *
1414
***************************************************************************/
15+
1516
#include "qgsgdaldataitems.h"
1617
#include "qgsgdalprovider.h"
1718
#include "qgslogger.h"
@@ -125,13 +126,9 @@ static QStringList sExtensions = QStringList();
125126
static QStringList sWildcards = QStringList();
126127
static QMutex sBuildingFilters;
127128

128-
QGISEXTERN int dataCapabilities()
129-
{
130-
return QgsDataProvider::File | QgsDataProvider::Dir | QgsDataProvider::Net;
131-
}
132-
133-
QGISEXTERN QgsDataItem *dataItem( QString path, QgsDataItem *parentItem )
129+
QgsDataItem *QgsGdalDataItemProvider::createDataItem( const QString &pathIn, QgsDataItem *parentItem )
134130
{
131+
QString path( pathIn );
135132
if ( path.isEmpty() )
136133
return nullptr;
137134

@@ -261,15 +258,12 @@ QGISEXTERN QgsDataItem *dataItem( QString path, QgsDataItem *parentItem )
261258
QStringList ogrSupportedDbDriverNames;
262259
ogrSupportedDbDriverNames << QStringLiteral( "GPKG" ) << QStringLiteral( "db" ) << QStringLiteral( "gdb" );
263260

264-
// skip archived item in favor of OGR if scanExtSetting && scanZipSetting is basic
265-
if ( scanExtSetting && ( is_vsizip || is_vsitar || is_vsigzip ) && scanZipSetting == QLatin1String( "basic" ) )
266-
{
267-
return nullptr;
268-
}
269-
270-
// return item without testing if scanExtSetting is true
271-
// netCDF files can be both raster or vector, so fallback to opening
272-
if ( scanExtSetting && !is_vsizip && !is_vsigzip && !is_vsitar && suffix != QLatin1String( "nc" ) )
261+
// return item without testing if:
262+
// scanExtSetting
263+
// or zipfile and scan zip == "Basic scan"
264+
if ( ( scanExtSetting ||
265+
( ( is_vsizip || is_vsitar ) && scanZipSetting == QLatin1String( "basic" ) ) ) &&
266+
suffix != QLatin1String( "nc" ) )
273267
{
274268
// Skip this layer if it's handled by ogr:
275269
if ( ogrSupportedDbLayersExtensions.contains( suffix ) )

‎src/providers/gdal/qgsgdaldataitems.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
#define QGSGDALDATAITEMS_H
1717

1818
#include "qgsdataitem.h"
19+
#include "qgsdataitemprovider.h"
20+
#include "qgsdataprovider.h"
1921

2022
class QgsGdalLayerItem : public QgsLayerItem
2123
{
@@ -37,4 +39,15 @@ class QgsGdalLayerItem : public QgsLayerItem
3739
QString layerName() const override;
3840
};
3941

42+
//! Provider for GDAL root data item
43+
class QgsGdalDataItemProvider : public QgsDataItemProvider
44+
{
45+
public:
46+
QString name() override { return QStringLiteral( "GDAL" ); }
47+
48+
int capabilities() override { return QgsDataProvider::File | QgsDataProvider::Dir; }
49+
50+
QgsDataItem *createDataItem( const QString &pathIn, QgsDataItem *parentItem ) override;
51+
};
52+
4053
#endif // QGSGDALDATAITEMS_H

‎src/providers/gdal/qgsgdalprovider.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@
2525
#include "qgsauthmanager.h"
2626
#include "qgscoordinatetransform.h"
2727
#include "qgsdataitem.h"
28+
#include "qgsdataitemprovider.h"
2829
#include "qgsdatasourceuri.h"
30+
#include "qgsgdaldataitems.h"
2931
#include "qgshtmlutils.h"
3032
#include "qgsmessagelog.h"
3133
#include "qgsrectangle.h"
@@ -3220,6 +3222,12 @@ QGISEXTERN void cleanupProvider()
32203222
// calling GDALDestroyDriverManager()
32213223
}
32223224

3225+
QGISEXTERN QList< QgsDataItemProvider * > *dataItemProviders()
3226+
{
3227+
QList< QgsDataItemProvider * > *providers = new QList< QgsDataItemProvider * >();
3228+
*providers << new QgsGdalDataItemProvider;
3229+
return providers;
3230+
}
32233231

32243232
#ifdef HAVE_GUI
32253233

0 commit comments

Comments
 (0)
Please sign in to comment.