23
23
#include " qgssettings.h"
24
24
#include " qgsproviderregistry.h"
25
25
#include " qgsopenvectorlayerdialog.h"
26
+ #include " qgssourceselectdialog.h"
27
+ #include " qgsmapcanvas.h"
26
28
27
- QgsDataSourceManagerDialog::QgsDataSourceManagerDialog ( QWidget *parent ) :
29
+
30
+ QgsDataSourceManagerDialog::QgsDataSourceManagerDialog ( QgsMapCanvas *mapCanvas, QWidget *parent ) :
28
31
QDialog( parent ),
29
- ui( new Ui::QgsDataSourceManagerDialog )
32
+ ui( new Ui::QgsDataSourceManagerDialog ),
33
+ mMapCanvas( mapCanvas )
30
34
{
31
35
ui->setupUi ( this );
32
36
@@ -61,44 +65,45 @@ QgsDataSourceManagerDialog::QgsDataSourceManagerDialog( QWidget *parent ) :
61
65
// Add data provider dialogs
62
66
QDialog *dlg;
63
67
64
- // ///////////////////////////////////////////////////////////////////////////
65
- // WMS
66
68
67
- dlg = providerDialog ( QStringLiteral ( " wms" ), tr ( " WMS" ), QStringLiteral ( " /mActionAddWmsLayer.svg" ) );
68
- if ( dlg )
69
- {
70
- // Forward
71
- connect ( dlg, SIGNAL ( addRasterLayer ( QString const &, QString const &, QString const & ) ),
72
- this , SLOT ( rasterLayerAdded ( QString const &, QString const &, QString const & ) ) );
73
- }
69
+ #ifdef HAVE_POSTGRESQL
70
+ addDbProviderDialog ( QStringLiteral ( " postgres" ), tr ( " PostgreSQL" ), QStringLiteral ( " /mActionAddPostgisLayer.svg" ) );
71
+ #endif
74
72
75
- // ///////////////////////////////////////////////////////////////////////////
76
- // WFS
73
+ addDbProviderDialog ( QStringLiteral ( " spatialite" ), tr ( " Spatialite" ), QStringLiteral ( " /mActionAddSpatiaLiteLayer.svg" ) );
74
+
75
+ addDbProviderDialog ( QStringLiteral ( " mssql" ), tr ( " MSSQL" ), QStringLiteral ( " /mActionAddMssqlLayer.svg" ) );
76
+
77
+ addDbProviderDialog ( QStringLiteral ( " DB2" ), tr ( " DB2" ), QStringLiteral ( " /mActionAddDb2Layer.svg" ) );
78
+
79
+ addRasterProviderDialog ( QStringLiteral ( " wms" ), tr ( " WMS" ), QStringLiteral ( " /mActionAddWmsLayer.svg" ) );
80
+
81
+ addRasterProviderDialog ( QStringLiteral ( " arcgismapserver" ), tr ( " ArcGIS Map Server" ), QStringLiteral ( " /mActionAddAmsLayer.svg" ) );
82
+
83
+ addRasterProviderDialog ( QStringLiteral ( " wcs" ), tr ( " WCS" ), QStringLiteral ( " /mActionAddWcsLayer.svg" ) );
77
84
78
85
dlg = providerDialog ( QStringLiteral ( " WFS" ), tr ( " WFS" ), QStringLiteral ( " /mActionAddWfsLayer.svg" ) );
79
86
if ( dlg )
80
87
{
81
88
// Forward (if only a common interface for the signals had been used in the providers ...)
82
- connect ( dlg, SIGNAL ( addWfsLayer ( QString, QString ) ), this , SIGNAL ( addWfsLayer ( QString, QString ) ) );
83
- connect ( this , &QgsDataSourceManagerDialog::addWfsLayer ,
89
+ connect ( dlg, SIGNAL ( addFsLayer ( QString, QString ) ), this , SIGNAL ( addFsLayer ( QString, QString ) ) );
90
+ connect ( this , &QgsDataSourceManagerDialog::addFsLayer ,
84
91
this , [ = ]( const QString & vectorLayerPath, const QString & baseName )
85
92
{ this ->vectorLayerAdded ( vectorLayerPath, baseName, QStringLiteral ( " WFS" ) ); } );
86
93
}
87
94
88
- #ifdef HAVE_POSTGRESQL
89
- // ///////////////////////////////////////////////////////////////////////////
90
- // POSTGIS
91
- dlg = providerDialog ( QStringLiteral ( " postgres" ), tr ( " PostgreSQL" ), QStringLiteral ( " /mActionAddPostgisLayer.svg" ) );
92
- if ( dlg )
95
+ QgsSourceSelectDialog *afss = dynamic_cast <QgsSourceSelectDialog *>( providerDialog ( QStringLiteral ( " arcgisfeatureserver" ),
96
+ tr ( " ArcGIS Feature Server" ),
97
+ QStringLiteral ( " /mActionAddAfsLayer.svg" ) ) );
98
+ if ( afss && mMapCanvas )
93
99
{
94
- connect ( dlg, SIGNAL ( addDatabaseLayers ( QStringList const &, QString const & ) ),
95
- this , SIGNAL ( addDatabaseLayers ( QStringList const &, QString const & ) ) );
96
- connect ( dlg , SIGNAL ( progress ( int , int ) ),
97
- this , SIGNAL ( showProgress ( int , int ) ) );
98
- connect ( dlg, SIGNAL ( progressMessage ( QString ) ),
99
- this , SIGNAL ( showStatusMessage ( QString ) ) );
100
+ afss-> setCurrentExtentAndCrs ( mMapCanvas -> extent (), mMapCanvas -> mapSettings (). destinationCrs ( ) );
101
+ // Forward (if only a common interface for the signals had been used in the providers ...)
102
+ connect ( afss , SIGNAL ( addLayer ( QString, QString ) ), this , SIGNAL ( addFsLayer ( QString, QString ) ) );
103
+ connect ( this , &QgsDataSourceManagerDialog::addFsLayer,
104
+ this , [ = ]( const QString & vectorLayerPath, const QString & baseName )
105
+ { this -> vectorLayerAdded ( vectorLayerPath, baseName, QStringLiteral ( " arcgisfeatureserver " ) ); } );
100
106
}
101
- #endif
102
107
103
108
}
104
109
@@ -109,8 +114,8 @@ QgsDataSourceManagerDialog::~QgsDataSourceManagerDialog()
109
114
110
115
void QgsDataSourceManagerDialog::setCurrentPage ( int index )
111
116
{
112
- // TODO: change window title according to the active page
113
117
ui->mStackedWidget ->setCurrentIndex ( index );
118
+ setWindowTitle ( tr ( " Data Source Manager | %1" ).arg ( ui->mList ->currentItem ()->text ( ) ) );
114
119
}
115
120
116
121
void QgsDataSourceManagerDialog::rasterLayerAdded ( const QString &uri, const QString &baseName, const QString &providerKey )
@@ -128,6 +133,7 @@ void QgsDataSourceManagerDialog::vectorLayersAdded( const QStringList &layerQStr
128
133
emit addVectorLayers ( layerQStringList, enc, dataSourceType );
129
134
}
130
135
136
+
131
137
QDialog *QgsDataSourceManagerDialog::providerDialog ( const QString providerKey, const QString providerName, const QString icon )
132
138
{
133
139
QDialog *dlg = dynamic_cast <QDialog *>( QgsProviderRegistry::instance ()->createSelectionWidget ( providerKey, this , Qt::Widget, true ) );
@@ -144,3 +150,28 @@ QDialog *QgsDataSourceManagerDialog::providerDialog( const QString providerKey,
144
150
return dlg;
145
151
}
146
152
}
153
+
154
+ void QgsDataSourceManagerDialog::addDbProviderDialog ( const QString providerKey, const QString providerName, const QString icon )
155
+ {
156
+ QDialog *dlg = providerDialog ( providerKey, providerName, icon );
157
+ if ( dlg )
158
+ {
159
+ connect ( dlg, SIGNAL ( addDatabaseLayers ( QStringList const &, QString const & ) ),
160
+ this , SIGNAL ( addDatabaseLayers ( QStringList const &, QString const & ) ) );
161
+ connect ( dlg, SIGNAL ( progress ( int , int ) ),
162
+ this , SIGNAL ( showProgress ( int , int ) ) );
163
+ connect ( dlg, SIGNAL ( progressMessage ( QString ) ),
164
+ this , SIGNAL ( showStatusMessage ( QString ) ) );
165
+ }
166
+ }
167
+
168
+ void QgsDataSourceManagerDialog::addRasterProviderDialog ( const QString providerKey, const QString providerName, const QString icon )
169
+ {
170
+ QDialog *dlg = providerDialog ( providerKey, providerName, icon );
171
+ if ( dlg )
172
+ {
173
+ // Forward
174
+ connect ( dlg, SIGNAL ( addRasterLayer ( QString const &, QString const &, QString const & ) ),
175
+ this , SIGNAL ( addRasterLayer ( QString const &, QString const &, QString const & ) ) );
176
+ }
177
+ }
0 commit comments