use layer items paramWidget() in browser properties

This commit is contained in:
Radim Blazek 2015-09-25 23:55:48 +02:00
parent 228d816b3b
commit 2ef38ff922
2 changed files with 28 additions and 7 deletions

View File

@ -281,19 +281,38 @@ QgsBrowserPropertiesWidget::QgsBrowserPropertiesWidget( QWidget* parent ) :
{
}
void QgsBrowserPropertiesWidget::setWidget( QWidget* paramWidget )
{
QVBoxLayout *layout = new QVBoxLayout( this );
paramWidget->setParent( this );
layout->addWidget( paramWidget );
}
QgsBrowserPropertiesWidget* QgsBrowserPropertiesWidget::createWidget( QgsDataItem* item, QWidget* parent )
{
QgsBrowserPropertiesWidget* propertiesWidget = 0;
if ( item->type() == QgsDataItem::Layer )
{
propertiesWidget = new QgsBrowserLayerProperties( parent );
propertiesWidget->setItem( item );
}
else if ( item->type() == QgsDataItem::Directory )
// In general, we would like to show all items' paramWidget, but top level items like
// WMS etc. have currently too large widgets which do not fit well to browser properties widget
if ( item->type() == QgsDataItem::Directory )
{
propertiesWidget = new QgsBrowserDirectoryProperties( parent );
propertiesWidget->setItem( item );
}
else if ( item->type() == QgsDataItem::Layer )
{
// prefer item's widget over standard layer widget
QWidget *paramWidget = item->paramWidget();
if ( paramWidget )
{
propertiesWidget = new QgsBrowserPropertiesWidget( parent );
propertiesWidget->setWidget( paramWidget );
}
else
{
propertiesWidget = new QgsBrowserLayerProperties( parent );
propertiesWidget->setItem( item );
}
}
return propertiesWidget;
}

View File

@ -47,7 +47,9 @@ class QgsBrowserPropertiesWidget : public QWidget
public:
QgsBrowserPropertiesWidget( QWidget* parent = 0 );
static QgsBrowserPropertiesWidget* createWidget( QgsDataItem* item, QWidget* parent = 0 );
virtual void setItem( QgsDataItem* item ) = 0;
virtual void setItem( QgsDataItem* item ) { Q_UNUSED( item ) }
/** Set content widget, usually item paramWidget. Takes ownership. */
virtual void setWidget( QWidget* widget );
/** Sets whether the properties widget should display in condensed mode, ie, for display in a dock
* widget rather than it's own separate dialog.