mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Refactor LayoutOptions to improve readability
* Make it possible to use designated initializer list - remove default constructor - move static member to outer scope * Add helper function to add field on same row
This commit is contained in:
@@ -48,10 +48,10 @@ namespace caf
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
PdmUiOrdering::~PdmUiOrdering()
|
||||
{
|
||||
for ( size_t i = 0; i < m_createdGroups.size(); ++i )
|
||||
for ( auto& createdGroup : m_createdGroups )
|
||||
{
|
||||
delete m_createdGroups[i];
|
||||
m_createdGroups[i] = nullptr;
|
||||
delete createdGroup;
|
||||
createdGroup = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,11 +60,11 @@ PdmUiOrdering::~PdmUiOrdering()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
PdmUiGroup* PdmUiOrdering::addNewGroup( const QString& displayName, LayoutOptions layout )
|
||||
{
|
||||
PdmUiGroup* group = new PdmUiGroup;
|
||||
auto* group = new PdmUiGroup;
|
||||
group->setUiName( displayName );
|
||||
|
||||
m_createdGroups.push_back( group );
|
||||
m_ordering.push_back( std::make_pair( group, layout ) );
|
||||
m_ordering.emplace_back( group, layout );
|
||||
|
||||
return group;
|
||||
}
|
||||
@@ -93,10 +93,8 @@ bool PdmUiOrdering::insertBeforeGroup( const QString& groupId, const PdmFieldHan
|
||||
pos.parent->insert( pos.indexInParent, field, layout );
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -110,10 +108,8 @@ bool PdmUiOrdering::insertBeforeItem( const PdmUiItem* item, const PdmFieldHandl
|
||||
pos.parent->insert( pos.indexInParent, field, layout );
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -184,7 +180,7 @@ caf::PdmUiGroup* PdmUiOrdering::insertNewGroupWithKeyword( size_t index,
|
||||
const QString& groupKeyword,
|
||||
LayoutOptions layout )
|
||||
{
|
||||
PdmUiGroup* group = new PdmUiGroup;
|
||||
auto* group = new PdmUiGroup;
|
||||
group->setUiName( displayName );
|
||||
|
||||
m_createdGroups.push_back( group );
|
||||
@@ -248,7 +244,7 @@ void PdmUiOrdering::add( const PdmFieldHandle* field, LayoutOptions layout )
|
||||
CAF_ASSERT( uiItem );
|
||||
CAF_ASSERT( !this->contains( uiItem ) );
|
||||
|
||||
m_ordering.push_back( std::make_pair( uiItem, layout ) );
|
||||
m_ordering.emplace_back( uiItem, layout );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -259,7 +255,15 @@ void PdmUiOrdering::add( const PdmObjectHandle* obj, LayoutOptions layout )
|
||||
PdmUiObjectHandle* uiItem = uiObj( const_cast<PdmObjectHandle*>( obj ) );
|
||||
CAF_ASSERT( uiItem );
|
||||
CAF_ASSERT( !this->contains( uiItem ) );
|
||||
m_ordering.push_back( std::make_pair( uiItem, layout ) );
|
||||
m_ordering.emplace_back( uiItem, layout );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void PdmUiOrdering::appendToRow( const PdmFieldHandle* field )
|
||||
{
|
||||
add( field, { .newRow = false } );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -325,7 +329,7 @@ PdmUiOrdering::TableLayout PdmUiOrdering::calculateTableLayout( const QString& u
|
||||
|
||||
if ( m_ordering[i].second.newRow || i == 0u )
|
||||
{
|
||||
tableLayout.push_back( RowLayout() );
|
||||
tableLayout.emplace_back();
|
||||
}
|
||||
tableLayout.back().push_back( m_ordering[i] );
|
||||
}
|
||||
@@ -370,7 +374,7 @@ int PdmUiOrdering::nrOfExpandingItemsInRow( const RowLayout& rowItems ) const
|
||||
int nrOfExpandingItems = 0;
|
||||
for ( const FieldAndLayout& item : rowItems )
|
||||
{
|
||||
if ( item.second.totalColumnSpan == LayoutOptions::MAX_COLUMN_SPAN ) nrOfExpandingItems++;
|
||||
if ( item.second.totalColumnSpan == MAX_COLUMN_SPAN ) nrOfExpandingItems++;
|
||||
}
|
||||
return nrOfExpandingItems;
|
||||
}
|
||||
@@ -401,7 +405,7 @@ void PdmUiOrdering::nrOfColumnsRequiredForItem( const FieldAndLayout& fieldAndLa
|
||||
if ( uiItem->uiLabelPosition() == PdmUiItemInfo::LEFT )
|
||||
{
|
||||
*labelColumnsRequired = 1;
|
||||
if ( layoutOption.leftLabelColumnSpan != LayoutOptions::MAX_COLUMN_SPAN )
|
||||
if ( layoutOption.leftLabelColumnSpan != MAX_COLUMN_SPAN )
|
||||
{
|
||||
*labelColumnsRequired = layoutOption.leftLabelColumnSpan;
|
||||
}
|
||||
@@ -409,7 +413,7 @@ void PdmUiOrdering::nrOfColumnsRequiredForItem( const FieldAndLayout& fieldAndLa
|
||||
*totalColumnsRequired = *labelColumnsRequired + *fieldColumnsRequired;
|
||||
}
|
||||
|
||||
if ( layoutOption.totalColumnSpan != LayoutOptions::MAX_COLUMN_SPAN )
|
||||
if ( layoutOption.totalColumnSpan != MAX_COLUMN_SPAN )
|
||||
{
|
||||
*totalColumnsRequired = layoutOption.totalColumnSpan;
|
||||
}
|
||||
@@ -424,10 +428,8 @@ caf::PdmUiItem* PdmUiOrdering::PositionFound::item()
|
||||
{
|
||||
return parent->uiItems()[indexInParent];
|
||||
}
|
||||
else
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -440,10 +442,8 @@ caf::PdmUiGroup* PdmUiOrdering::PositionFound::group()
|
||||
{
|
||||
return static_cast<PdmUiGroup*>( g );
|
||||
}
|
||||
else
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
} // End of namespace caf
|
||||
|
@@ -54,23 +54,22 @@ class PdmObjectHandle;
|
||||
class PdmUiOrdering
|
||||
{
|
||||
public:
|
||||
static const int MAX_COLUMN_SPAN = -1;
|
||||
|
||||
struct LayoutOptions
|
||||
{
|
||||
static const int MAX_COLUMN_SPAN = -1;
|
||||
LayoutOptions( bool newRow = true, int totalColumnSpan = MAX_COLUMN_SPAN, int leftLabelColumnSpan = MAX_COLUMN_SPAN )
|
||||
: newRow( newRow )
|
||||
, totalColumnSpan( totalColumnSpan )
|
||||
, leftLabelColumnSpan( leftLabelColumnSpan )
|
||||
{
|
||||
}
|
||||
|
||||
bool newRow;
|
||||
int totalColumnSpan;
|
||||
int leftLabelColumnSpan;
|
||||
bool newRow{ true };
|
||||
int totalColumnSpan{ MAX_COLUMN_SPAN };
|
||||
int leftLabelColumnSpan{ MAX_COLUMN_SPAN };
|
||||
};
|
||||
typedef std::pair<PdmUiItem*, LayoutOptions> FieldAndLayout;
|
||||
typedef std::vector<FieldAndLayout> RowLayout;
|
||||
typedef std::vector<RowLayout> TableLayout;
|
||||
|
||||
// Required to use a static function as workaround instead of using LayoutOptions()
|
||||
// https://stackoverflow.com/questions/53408962/try-to-understand-compiler-error-message-default-member-initializer-required-be
|
||||
static LayoutOptions defaultLayoutOptions() { return {}; }
|
||||
|
||||
using FieldAndLayout = std::pair<PdmUiItem*, LayoutOptions>;
|
||||
using RowLayout = std::vector<FieldAndLayout>;
|
||||
using TableLayout = std::vector<RowLayout>;
|
||||
|
||||
PdmUiOrdering()
|
||||
: m_skipRemainingFields( false ){};
|
||||
@@ -79,33 +78,38 @@ public:
|
||||
PdmUiOrdering( const PdmUiOrdering& ) = delete;
|
||||
PdmUiOrdering& operator=( const PdmUiOrdering& ) = delete;
|
||||
|
||||
void add( const PdmFieldHandle* field, LayoutOptions layout = LayoutOptions() );
|
||||
void add( const PdmObjectHandle* obj, LayoutOptions layout = LayoutOptions() );
|
||||
void add( const PdmFieldHandle* field, LayoutOptions layout = defaultLayoutOptions() );
|
||||
|
||||
// Add a field without creating a new row
|
||||
void appendToRow( const PdmFieldHandle* field );
|
||||
|
||||
void add( const PdmObjectHandle* obj, LayoutOptions layout = defaultLayoutOptions() );
|
||||
bool insertBeforeGroup( const QString& groupId,
|
||||
const PdmFieldHandle* fieldToInsert,
|
||||
LayoutOptions layout = LayoutOptions() );
|
||||
LayoutOptions layout = defaultLayoutOptions() );
|
||||
bool insertBeforeItem( const PdmUiItem* item,
|
||||
const PdmFieldHandle* fieldToInsert,
|
||||
LayoutOptions layout = LayoutOptions() );
|
||||
LayoutOptions layout = defaultLayoutOptions() );
|
||||
|
||||
PdmUiGroup* addNewGroup( const QString& displayName, LayoutOptions layout = LayoutOptions() );
|
||||
PdmUiGroup* addNewGroup( const QString& displayName, LayoutOptions layout = defaultLayoutOptions() );
|
||||
PdmUiGroup* createGroupBeforeGroup( const QString& groupId,
|
||||
const QString& displayName,
|
||||
LayoutOptions layout = LayoutOptions() );
|
||||
PdmUiGroup*
|
||||
createGroupBeforeItem( const PdmUiItem* item, const QString& displayName, LayoutOptions layout = LayoutOptions() );
|
||||
LayoutOptions layout = defaultLayoutOptions() );
|
||||
PdmUiGroup* createGroupBeforeItem( const PdmUiItem* item,
|
||||
const QString& displayName,
|
||||
LayoutOptions layout = defaultLayoutOptions() );
|
||||
|
||||
PdmUiGroup* addNewGroupWithKeyword( const QString& displayName,
|
||||
const QString& groupKeyword,
|
||||
LayoutOptions layout = LayoutOptions() );
|
||||
LayoutOptions layout = defaultLayoutOptions() );
|
||||
PdmUiGroup* createGroupWithIdBeforeGroup( const QString& groupId,
|
||||
const QString& displayName,
|
||||
const QString& newGroupId,
|
||||
LayoutOptions layout = LayoutOptions() );
|
||||
LayoutOptions layout = defaultLayoutOptions() );
|
||||
PdmUiGroup* createGroupWithIdBeforeItem( const PdmUiItem* item,
|
||||
const QString& displayName,
|
||||
const QString& newGroupId,
|
||||
LayoutOptions layout = LayoutOptions() );
|
||||
LayoutOptions layout = defaultLayoutOptions() );
|
||||
|
||||
PdmUiGroup* findGroup( const QString& groupId ) const;
|
||||
|
||||
@@ -140,11 +144,11 @@ protected:
|
||||
PositionFound findItemPosition( const PdmUiItem* item ) const;
|
||||
|
||||
private:
|
||||
void insert( size_t index, const PdmFieldHandle* field, LayoutOptions layout = LayoutOptions() );
|
||||
void insert( size_t index, const PdmFieldHandle* field, LayoutOptions layout = defaultLayoutOptions() );
|
||||
PdmUiGroup* insertNewGroupWithKeyword( size_t index,
|
||||
const QString& displayName,
|
||||
const QString& groupKeyword,
|
||||
LayoutOptions layout = LayoutOptions() );
|
||||
LayoutOptions layout = defaultLayoutOptions() );
|
||||
|
||||
std::vector<FieldAndLayout> m_ordering; ///< The order of groups and fields
|
||||
std::vector<PdmUiGroup*> m_createdGroups; ///< Owned PdmUiGroups, for memory management only
|
||||
@@ -153,4 +157,4 @@ private:
|
||||
|
||||
} // End of namespace caf
|
||||
|
||||
#include "cafPdmUiGroup.h"
|
||||
#include "cafPdmUiGroup.h"
|
||||
|
Reference in New Issue
Block a user