@@ -281,18 +281,37 @@ QgsBrowserPropertiesWidget::QgsBrowserPropertiesWidget( QWidget* parent ) :
281
281
{
282
282
}
283
283
284
+ void QgsBrowserPropertiesWidget::setWidget ( QWidget* paramWidget )
285
+ {
286
+ QVBoxLayout *layout = new QVBoxLayout ( this );
287
+ paramWidget->setParent ( this );
288
+ layout->addWidget ( paramWidget );
289
+ }
290
+
284
291
QgsBrowserPropertiesWidget* QgsBrowserPropertiesWidget::createWidget ( QgsDataItem* item, QWidget* parent )
285
292
{
286
293
QgsBrowserPropertiesWidget* propertiesWidget = 0 ;
287
- if ( item->type () == QgsDataItem::Layer )
294
+ // In general, we would like to show all items' paramWidget, but top level items like
295
+ // WMS etc. have currently too large widgets which do not fit well to browser properties widget
296
+ if ( item->type () == QgsDataItem::Directory )
288
297
{
289
- propertiesWidget = new QgsBrowserLayerProperties ( parent );
298
+ propertiesWidget = new QgsBrowserDirectoryProperties ( parent );
290
299
propertiesWidget->setItem ( item );
291
300
}
292
- else if ( item->type () == QgsDataItem::Directory )
301
+ else if ( item->type () == QgsDataItem::Layer )
293
302
{
294
- propertiesWidget = new QgsBrowserDirectoryProperties ( parent );
295
- propertiesWidget->setItem ( item );
303
+ // prefer item's widget over standard layer widget
304
+ QWidget *paramWidget = item->paramWidget ();
305
+ if ( paramWidget )
306
+ {
307
+ propertiesWidget = new QgsBrowserPropertiesWidget ( parent );
308
+ propertiesWidget->setWidget ( paramWidget );
309
+ }
310
+ else
311
+ {
312
+ propertiesWidget = new QgsBrowserLayerProperties ( parent );
313
+ propertiesWidget->setItem ( item );
314
+ }
296
315
}
297
316
return propertiesWidget;
298
317
}
0 commit comments