17
17
18
18
#include " qgshandlebadlayers.h"
19
19
#include " qgisapp.h"
20
+ #include " qgsauthconfigselect.h"
20
21
#include " qgisgui.h"
21
22
#include " qgsdatasourceuri.h"
22
23
#include " qgslogger.h"
@@ -78,12 +79,14 @@ QgsHandleBadLayers::QgsHandleBadLayers( const QList<QDomNode> &layers, const QDo
78
79
mLayerList ->clear ();
79
80
mLayerList ->setSortingEnabled ( true );
80
81
mLayerList ->setSelectionBehavior ( QAbstractItemView::SelectRows );
81
- mLayerList ->setColumnCount ( 4 );
82
+ mLayerList ->setColumnCount ( 5 );
83
+ mLayerList ->setColumnWidth ( 3 , 75 );
82
84
83
85
mLayerList ->setHorizontalHeaderLabels ( QStringList ()
84
86
<< tr ( " Layer name" )
85
87
<< tr ( " Type" )
86
88
<< tr ( " Provider" )
89
+ << tr ( " Auth config" )
87
90
<< tr ( " Datasource" )
88
91
);
89
92
@@ -123,8 +126,24 @@ QgsHandleBadLayers::QgsHandleBadLayers( const QList<QDomNode> &layers, const QDo
123
126
item->setFlags ( item->flags () & ~Qt::ItemIsEditable );
124
127
mLayerList ->setItem ( j, 2 , item );
125
128
129
+ if ( QgsAuthConfigUriEdit::hasConfigID ( datasource ) )
130
+ {
131
+ QToolButton *btn = new QToolButton ( this );
132
+ btn->setMaximumWidth ( 75 );
133
+ btn->setMinimumHeight ( 24 );
134
+ btn->setText ( tr ( " Edit" ) );
135
+ btn->setProperty ( " row" , j );
136
+ connect ( btn, SIGNAL ( clicked () ), this , SLOT ( editAuthCfg () ) );
137
+ mLayerList ->setCellWidget ( j, 3 , btn );
138
+ }
139
+ else
140
+ {
141
+ item = new QTableWidgetItem ( " " );
142
+ mLayerList ->setItem ( j, 3 , item );
143
+ }
144
+
126
145
item = new QTableWidgetItem ( datasource );
127
- mLayerList ->setItem ( j, 3 , item );
146
+ mLayerList ->setItem ( j, 4 , item );
128
147
129
148
j++;
130
149
}
@@ -161,7 +180,7 @@ QString QgsHandleBadLayers::filename( int row )
161
180
{
162
181
QString type = mLayerList ->item ( row, 1 )->text ();
163
182
QString provider = mLayerList ->item ( row, 2 )->text ();
164
- QString datasource = mLayerList ->item ( row, 3 )->text ();
183
+ QString datasource = mLayerList ->item ( row, 4 )->text ();
165
184
166
185
if ( type == " vector" )
167
186
{
@@ -195,7 +214,7 @@ void QgsHandleBadLayers::setFilename( int row, QString filename )
195
214
196
215
QString type = mLayerList ->item ( row, 1 )->text ();
197
216
QString provider = mLayerList ->item ( row, 2 )->text ();
198
- QTableWidgetItem *item = mLayerList ->item ( row, 3 );
217
+ QTableWidgetItem *item = mLayerList ->item ( row, 4 );
199
218
200
219
QString datasource = item->text ();
201
220
@@ -305,6 +324,42 @@ void QgsHandleBadLayers::browseClicked()
305
324
}
306
325
}
307
326
327
+ void QgsHandleBadLayers::editAuthCfg ()
328
+ {
329
+ QToolButton *btn = qobject_cast<QToolButton*>( sender () );
330
+ int row = -1 ;
331
+ for ( int i = 0 ; i < mLayerList ->rowCount (); i++ )
332
+ {
333
+ if ( mLayerList ->cellWidget ( i, 3 ) == btn )
334
+ {
335
+ row = i;
336
+ break ;
337
+ }
338
+ }
339
+
340
+ if ( row == -1 )
341
+ return ;
342
+
343
+ QString provider = mLayerList ->item ( row, 2 )->text ();
344
+ if ( provider == " none" )
345
+ provider.clear ();
346
+
347
+ QString prevuri = mLayerList ->item ( row, 4 )->text ();
348
+
349
+ QgsAuthConfigUriEdit *dlg = new QgsAuthConfigUriEdit ( this , prevuri, provider );
350
+ dlg->setWindowModality ( Qt::WindowModal );
351
+ dlg->resize ( 500 , 500 );
352
+ if ( dlg->exec () )
353
+ {
354
+ QString newuri ( dlg->dataSourceUri () );
355
+ if ( newuri != prevuri )
356
+ {
357
+ mLayerList ->item ( row, 4 )->setText ( newuri );
358
+ }
359
+ }
360
+ dlg->deleteLater ();
361
+ }
362
+
308
363
void QgsHandleBadLayers::apply ()
309
364
{
310
365
QgsDebugMsg ( " entered." );
@@ -315,7 +370,7 @@ void QgsHandleBadLayers::apply()
315
370
316
371
QString type = mLayerList ->item ( i, 1 )->text ();
317
372
QString provider = mLayerList ->item ( i, 2 )->text ();
318
- QTableWidgetItem *item = mLayerList ->item ( i, 3 );
373
+ QTableWidgetItem *item = mLayerList ->item ( i, 4 );
319
374
QString datasource = item->text ();
320
375
321
376
node.namedItem ( " datasource" ).toElement ().firstChild ().toText ().setData ( datasource );
0 commit comments