ResInsight/Fwk/AppFwk/cafUserInterface/cafPdmUiTabbedPropertyViewDialog.cpp

115 lines
3.8 KiB
C++
Raw Normal View History

#include "cafPdmUiTabbedPropertyViewDialog.h"
#include "cafPdmObject.h"
#include "cafPdmUiPropertyView.h"
#include <QBoxLayout>
2020-06-19 00:53:59 -05:00
#include <QDebug>
#include <QDialogButtonBox>
#include <QStringList>
#include <QTabWidget>
#include <QWidget>
namespace caf
{
//--------------------------------------------------------------------------------------------------
2020-06-19 00:53:59 -05:00
///
//--------------------------------------------------------------------------------------------------
2020-06-19 00:53:59 -05:00
PdmUiTabbedPropertyViewDialog::PdmUiTabbedPropertyViewDialog( caf::PdmObject* object,
const QStringList& uiConfigNameForTabs,
const QString& windowTitle,
QWidget* parent )
: QDialog( parent, Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowCloseButtonHint )
{
2020-06-19 00:53:59 -05:00
this->setWindowTitle( windowTitle );
QTabWidget* tabWidget = new QTabWidget;
2020-06-19 00:53:59 -05:00
for ( int i = 0; i < uiConfigNameForTabs.size(); i++ )
{
QHBoxLayout* widgetLayout = new QHBoxLayout;
2020-06-19 00:53:59 -05:00
widgetLayout->setContentsMargins( 0, 0, 0, 0 );
QWidget* containerWidget = new QWidget;
2020-06-19 00:53:59 -05:00
containerWidget->setLayout( widgetLayout );
caf::PdmUiPropertyView* pdmUiPropertyView = new caf::PdmUiPropertyView();
2020-06-19 00:53:59 -05:00
pdmUiPropertyView->setUiConfigurationName( uiConfigNameForTabs[i] );
2020-06-19 00:53:59 -05:00
widgetLayout->addWidget( pdmUiPropertyView );
2020-06-19 00:53:59 -05:00
tabWidget->addTab( containerWidget, uiConfigNameForTabs[i] );
pdmUiPropertyView->showProperties( object );
2020-06-19 00:53:59 -05:00
m_propertyViewTabs.push_back( pdmUiPropertyView );
}
QVBoxLayout* dialogLayout = new QVBoxLayout;
2020-06-19 00:53:59 -05:00
setLayout( dialogLayout );
2020-06-19 00:53:59 -05:00
dialogLayout->addWidget( tabWidget );
2020-06-19 00:53:59 -05:00
m_dialogButtonBox = new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel );
connect( m_dialogButtonBox, SIGNAL( accepted() ), this, SLOT( accept() ) );
connect( m_dialogButtonBox, SIGNAL( rejected() ), this, SLOT( reject() ) );
2020-06-19 00:53:59 -05:00
dialogLayout->addWidget( m_dialogButtonBox );
}
//--------------------------------------------------------------------------------------------------
2020-06-19 00:53:59 -05:00
///
//--------------------------------------------------------------------------------------------------
PdmUiTabbedPropertyViewDialog::~PdmUiTabbedPropertyViewDialog()
{
2020-06-19 00:53:59 -05:00
for ( auto propView : m_propertyViewTabs )
{
2020-06-19 00:53:59 -05:00
propView->showProperties( nullptr );
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QSize PdmUiTabbedPropertyViewDialog::minimumSizeHint() const
{
2020-06-19 00:53:59 -05:00
QSize minSizeHint( 0, 0 );
2020-06-19 00:53:59 -05:00
for ( auto propView : m_propertyViewTabs )
{
QSize pageSize = propView->minimumSizeHint();
2020-06-19 00:53:59 -05:00
pageSize += QSize( 0, 100 );
2020-06-19 00:53:59 -05:00
minSizeHint = minSizeHint.expandedTo( pageSize );
}
return minSizeHint;
}
//--------------------------------------------------------------------------------------------------
2020-06-19 00:53:59 -05:00
///
//--------------------------------------------------------------------------------------------------
QSize PdmUiTabbedPropertyViewDialog::sizeHint() const
{
2020-06-19 00:53:59 -05:00
QSize maxSizeHint( 0, 0 );
2020-06-19 00:53:59 -05:00
for ( auto w : m_propertyViewTabs )
{
QSize pageSize = w->sizeHint();
2020-06-19 00:53:59 -05:00
pageSize += QSize( 0, 100 );
2020-06-19 00:53:59 -05:00
maxSizeHint = maxSizeHint.expandedTo( pageSize );
}
return maxSizeHint;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QDialogButtonBox* PdmUiTabbedPropertyViewDialog::dialogButtonBox()
{
return m_dialogButtonBox;
}
2020-06-19 00:53:59 -05:00
} // namespace caf