Skip to content

Commit 2ef38ff

Browse files
committedSep 25, 2015
use layer items paramWidget() in browser properties
1 parent 228d816 commit 2ef38ff

File tree

2 files changed

+27
-6
lines changed

2 files changed

+27
-6
lines changed
 

‎src/app/qgsbrowserdockwidget.cpp

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -281,18 +281,37 @@ QgsBrowserPropertiesWidget::QgsBrowserPropertiesWidget( QWidget* parent ) :
281281
{
282282
}
283283

284+
void QgsBrowserPropertiesWidget::setWidget( QWidget* paramWidget )
285+
{
286+
QVBoxLayout *layout = new QVBoxLayout( this );
287+
paramWidget->setParent( this );
288+
layout->addWidget( paramWidget );
289+
}
290+
284291
QgsBrowserPropertiesWidget* QgsBrowserPropertiesWidget::createWidget( QgsDataItem* item, QWidget* parent )
285292
{
286293
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 )
288297
{
289-
propertiesWidget = new QgsBrowserLayerProperties( parent );
298+
propertiesWidget = new QgsBrowserDirectoryProperties( parent );
290299
propertiesWidget->setItem( item );
291300
}
292-
else if ( item->type() == QgsDataItem::Directory )
301+
else if ( item->type() == QgsDataItem::Layer )
293302
{
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+
}
296315
}
297316
return propertiesWidget;
298317
}

‎src/app/qgsbrowserdockwidget.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,9 @@ class QgsBrowserPropertiesWidget : public QWidget
4747
public:
4848
QgsBrowserPropertiesWidget( QWidget* parent = 0 );
4949
static QgsBrowserPropertiesWidget* createWidget( QgsDataItem* item, QWidget* parent = 0 );
50-
virtual void setItem( QgsDataItem* item ) = 0;
50+
virtual void setItem( QgsDataItem* item ) { Q_UNUSED( item ) }
51+
/** Set content widget, usually item paramWidget. Takes ownership. */
52+
virtual void setWidget( QWidget* widget );
5153

5254
/** Sets whether the properties widget should display in condensed mode, ie, for display in a dock
5355
* widget rather than it's own separate dialog.

0 commit comments

Comments
 (0)
Please sign in to comment.