Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Use the new generic OGR source select class
  • Loading branch information
elpaso committed Sep 8, 2017
1 parent ce3d644 commit eca6137
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 5 deletions.
8 changes: 6 additions & 2 deletions src/providers/ogr/CMakeLists.txt
Expand Up @@ -7,9 +7,11 @@ SET (OGR_SRCS
qgsogrexpressioncompiler.cpp
qgsogrsourceselect.cpp
qgsgeopackagedataitems.cpp
qgsgeopackageconnection.cpp
qgsgeopackagerasterwriter.cpp
qgsgeopackagerasterwritertask.cpp
qgsogrdbconnection.cpp
qgsogrdbsourceselect.cpp
qgsogrdbtablemodel.cpp
)

SET(OGR_MOC_HDRS
Expand All @@ -18,8 +20,10 @@ SET(OGR_MOC_HDRS
qgsogrconnpool.h
qgsogrsourceselect.h
qgsgeopackagedataitems.h
qgsgeopackageconnection.h
qgsgeopackagerasterwritertask.h
qgsogrdbconnection.h
qgsogrdbsourceselect.h
qgsogrdbtablemodel.h
)

########################################################
Expand Down
46 changes: 43 additions & 3 deletions src/providers/ogr/qgsogrprovider.cpp
Expand Up @@ -39,7 +39,7 @@ email : sherman at mrcc.com
#ifdef HAVE_GUI
#include "qgssourceselectprovider.h"
#include "qgsogrsourceselect.h"
#include "qgsgeopackagesourceselect.h"
#include "qgsogrdbsourceselect.h"
#endif

#include "qgis.h"
Expand Down Expand Up @@ -712,8 +712,12 @@ QStringList QgsOgrProvider::subLayers() const
OGRFeatureDefnH fdef = OGR_L_GetLayerDefn( layer );
// Get first column name,
// TODO: add support for multiple
QString geometryColumnName;
OGRGeomFieldDefnH geomH = OGR_FD_GetGeomFieldDefn( fdef, 0 );
QString geometryColumnName = QString::fromUtf8( OGR_GFld_GetNameRef( geomH ) );
if ( geomH )
{
geometryColumnName = QString::fromUtf8( OGR_GFld_GetNameRef( geomH ) );
}
QString layerName = QString::fromUtf8( OGR_FD_GetName( fdef ) );
OGRwkbGeometryType layerGeomType = OGR_FD_GetGeomType( fdef );

Expand Down Expand Up @@ -4374,12 +4378,48 @@ class QgsOgrVectorSourceSelectProvider : public QgsSourceSelectProvider
};


//! Provider for GPKG vector source select
class QgsGeoPackageSourceSelectProvider : public QgsSourceSelectProvider
{
public:

virtual QString providerKey() const override { return QStringLiteral( "ogr" ); }
virtual QString text() const override { return QObject::tr( "GeoPackage" ); }
virtual int ordering() const override { return 45; }
virtual QIcon icon() const override { return QgsApplication::getThemeIcon( QStringLiteral( "/mActionAddGeoPackageLayer.svg" ) ); }
virtual QgsAbstractDataSourceWidget *createDataSourceWidget( QWidget *parent = nullptr, Qt::WindowFlags fl = Qt::Widget, QgsProviderRegistry::WidgetMode widgetMode = QgsProviderRegistry::WidgetMode::Embedded ) const override
{
return new QgsOgrDbSourceSelect( QStringLiteral( "GPKG" ), QObject::tr( "GeoPackage" ), QObject::tr( "GeoPackage Database (*.gpkg)" ), parent, fl, widgetMode );
}
};


/* This has been tested and works just fine:
//! Provider for SQLite vector source select
class QgsSpatiaLiteSourceSelectProvider : public QgsSourceSelectProvider
{
public:
virtual QString providerKey() const override { return QStringLiteral( "ogr" ); }
virtual QString text() const override { return QObject::tr( "SQLite" ); }
virtual int ordering() const override { return 46; }
virtual QIcon icon() const override { return QgsApplication::getThemeIcon( QStringLiteral( "/mIconSpatialite.svg" ) ); }
virtual QgsAbstractDataSourceWidget *createDataSourceWidget( QWidget *parent = nullptr, Qt::WindowFlags fl = Qt::Widget, QgsProviderRegistry::WidgetMode widgetMode = QgsProviderRegistry::WidgetMode::Embedded ) const override
{
return new QgsOgrDbSourceSelect( QStringLiteral( "SQLite" ), QObject::tr( "SQLite" ), QObject::tr( "SpatiaLite Database (*.db *.sqlite)" ), parent, fl, widgetMode );
}
};
//*/


QGISEXTERN QList<QgsSourceSelectProvider *> *sourceSelectProviders()
{
QList<QgsSourceSelectProvider *> *providers = new QList<QgsSourceSelectProvider *>();

*providers
<< new QgsOgrVectorSourceSelectProvider;
<< new QgsOgrVectorSourceSelectProvider
<< new QgsGeoPackageSourceSelectProvider;
// << new QgsSpatiaLiteSourceSelectProvider;

return providers;
}
Expand Down

0 comments on commit eca6137

Please sign in to comment.