Skip to content

Commit eca6137

Browse files
committed
Use the new generic OGR source select class
1 parent ce3d644 commit eca6137

File tree

2 files changed

+49
-5
lines changed

2 files changed

+49
-5
lines changed

src/providers/ogr/CMakeLists.txt

+6-2
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@ SET (OGR_SRCS
77
qgsogrexpressioncompiler.cpp
88
qgsogrsourceselect.cpp
99
qgsgeopackagedataitems.cpp
10-
qgsgeopackageconnection.cpp
1110
qgsgeopackagerasterwriter.cpp
1211
qgsgeopackagerasterwritertask.cpp
12+
qgsogrdbconnection.cpp
13+
qgsogrdbsourceselect.cpp
14+
qgsogrdbtablemodel.cpp
1315
)
1416

1517
SET(OGR_MOC_HDRS
@@ -18,8 +20,10 @@ SET(OGR_MOC_HDRS
1820
qgsogrconnpool.h
1921
qgsogrsourceselect.h
2022
qgsgeopackagedataitems.h
21-
qgsgeopackageconnection.h
2223
qgsgeopackagerasterwritertask.h
24+
qgsogrdbconnection.h
25+
qgsogrdbsourceselect.h
26+
qgsogrdbtablemodel.h
2327
)
2428

2529
########################################################

src/providers/ogr/qgsogrprovider.cpp

+43-3
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ email : sherman at mrcc.com
3939
#ifdef HAVE_GUI
4040
#include "qgssourceselectprovider.h"
4141
#include "qgsogrsourceselect.h"
42-
#include "qgsgeopackagesourceselect.h"
42+
#include "qgsogrdbsourceselect.h"
4343
#endif
4444

4545
#include "qgis.h"
@@ -712,8 +712,12 @@ QStringList QgsOgrProvider::subLayers() const
712712
OGRFeatureDefnH fdef = OGR_L_GetLayerDefn( layer );
713713
// Get first column name,
714714
// TODO: add support for multiple
715+
QString geometryColumnName;
715716
OGRGeomFieldDefnH geomH = OGR_FD_GetGeomFieldDefn( fdef, 0 );
716-
QString geometryColumnName = QString::fromUtf8( OGR_GFld_GetNameRef( geomH ) );
717+
if ( geomH )
718+
{
719+
geometryColumnName = QString::fromUtf8( OGR_GFld_GetNameRef( geomH ) );
720+
}
717721
QString layerName = QString::fromUtf8( OGR_FD_GetName( fdef ) );
718722
OGRwkbGeometryType layerGeomType = OGR_FD_GetGeomType( fdef );
719723

@@ -4374,12 +4378,48 @@ class QgsOgrVectorSourceSelectProvider : public QgsSourceSelectProvider
43744378
};
43754379

43764380

4381+
//! Provider for GPKG vector source select
4382+
class QgsGeoPackageSourceSelectProvider : public QgsSourceSelectProvider
4383+
{
4384+
public:
4385+
4386+
virtual QString providerKey() const override { return QStringLiteral( "ogr" ); }
4387+
virtual QString text() const override { return QObject::tr( "GeoPackage" ); }
4388+
virtual int ordering() const override { return 45; }
4389+
virtual QIcon icon() const override { return QgsApplication::getThemeIcon( QStringLiteral( "/mActionAddGeoPackageLayer.svg" ) ); }
4390+
virtual QgsAbstractDataSourceWidget *createDataSourceWidget( QWidget *parent = nullptr, Qt::WindowFlags fl = Qt::Widget, QgsProviderRegistry::WidgetMode widgetMode = QgsProviderRegistry::WidgetMode::Embedded ) const override
4391+
{
4392+
return new QgsOgrDbSourceSelect( QStringLiteral( "GPKG" ), QObject::tr( "GeoPackage" ), QObject::tr( "GeoPackage Database (*.gpkg)" ), parent, fl, widgetMode );
4393+
}
4394+
};
4395+
4396+
4397+
/* This has been tested and works just fine:
4398+
//! Provider for SQLite vector source select
4399+
class QgsSpatiaLiteSourceSelectProvider : public QgsSourceSelectProvider
4400+
{
4401+
public:
4402+
4403+
virtual QString providerKey() const override { return QStringLiteral( "ogr" ); }
4404+
virtual QString text() const override { return QObject::tr( "SQLite" ); }
4405+
virtual int ordering() const override { return 46; }
4406+
virtual QIcon icon() const override { return QgsApplication::getThemeIcon( QStringLiteral( "/mIconSpatialite.svg" ) ); }
4407+
virtual QgsAbstractDataSourceWidget *createDataSourceWidget( QWidget *parent = nullptr, Qt::WindowFlags fl = Qt::Widget, QgsProviderRegistry::WidgetMode widgetMode = QgsProviderRegistry::WidgetMode::Embedded ) const override
4408+
{
4409+
return new QgsOgrDbSourceSelect( QStringLiteral( "SQLite" ), QObject::tr( "SQLite" ), QObject::tr( "SpatiaLite Database (*.db *.sqlite)" ), parent, fl, widgetMode );
4410+
}
4411+
};
4412+
//*/
4413+
4414+
43774415
QGISEXTERN QList<QgsSourceSelectProvider *> *sourceSelectProviders()
43784416
{
43794417
QList<QgsSourceSelectProvider *> *providers = new QList<QgsSourceSelectProvider *>();
43804418

43814419
*providers
4382-
<< new QgsOgrVectorSourceSelectProvider;
4420+
<< new QgsOgrVectorSourceSelectProvider
4421+
<< new QgsGeoPackageSourceSelectProvider;
4422+
// << new QgsSpatiaLiteSourceSelectProvider;
43834423

43844424
return providers;
43854425
}

0 commit comments

Comments
 (0)