Refactor RimValveTemplateCollection.

This commit is contained in:
Kristian Bendiksen
2026-01-05 13:15:47 +01:00
parent cd5926096f
commit 79984604cc
7 changed files with 18 additions and 53 deletions
@@ -57,7 +57,7 @@ void RicDeleteValveTemplateFeature::onActionTriggered( bool isChecked )
}
RimValveTemplateCollection* collection = valveTemplate->firstAncestorOrThisOfTypeAsserted<RimValveTemplateCollection>();
collection->removeAndDeleteValveTemplate( valveTemplate );
collection->deleteItem( valveTemplate );
collection->updateAllRequiredEditors();
project->scheduleCreateDisplayModelAndRedrawAllViews();
@@ -110,7 +110,7 @@ void RicImportValveTemplatesFeature::onActionTriggered( bool isChecked )
for ( const auto& aicdValue : aicdTemplates )
{
auto newTemplate = RimValveTemplate::createAicdTemplate( aicdValue, number++ );
templateColl->addValveTemplate( newTemplate );
templateColl->addItem( newTemplate );
}
}
@@ -87,9 +87,9 @@ RimValveTemplate* RicNewValveTemplateFeature::createNewValveTemplate()
if ( valveTemplateColl )
{
RimValveTemplate* valveTemplate = new RimValveTemplate();
QString userLabel = QString( "Valve Template #%1" ).arg( valveTemplateColl->valveTemplates().size() + 1 );
QString userLabel = QString( "Valve Template #%1" ).arg( valveTemplateColl->count() + 1 );
valveTemplate->setUserLabel( userLabel );
valveTemplateColl->addValveTemplate( valveTemplate );
valveTemplateColl->addItem( valveTemplate );
valveTemplate->setUnitSystem( valveTemplateColl->defaultUnitSystemType() );
valveTemplate->setDefaultValuesFromUnits();
return valveTemplate;
@@ -32,7 +32,7 @@ CAF_PDM_SOURCE_INIT( RimValveTemplateCollection, "ValveTemplateCollection" );
RimValveTemplateCollection::RimValveTemplateCollection()
{
CAF_PDM_InitScriptableObject( "Valve Templates", ":/ICDValve16x16.png" );
CAF_PDM_InitScriptableFieldNoDefault( &m_valveDefinitions, "ValveDefinitions", "" );
CAF_PDM_InitScriptableFieldNoDefault( &m_items, "ValveDefinitions", "" );
CAF_PDM_InitScriptableFieldNoDefault( &m_defaultUnitsForValveTemplates, "ValveUnits", "Default unit system for valve templates" );
m_defaultUnitsForValveTemplates = RiaDefines::EclipseUnitSystem::UNITS_METRIC;
addDefaultValveTemplates();
@@ -45,36 +45,6 @@ RimValveTemplateCollection::~RimValveTemplateCollection()
{
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RimValveTemplate*> RimValveTemplateCollection::valveTemplates() const
{
std::vector<RimValveTemplate*> templates;
for ( auto& templ : m_valveDefinitions )
{
templates.push_back( templ );
}
return templates;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimValveTemplateCollection::addValveTemplate( RimValveTemplate* valveTemplate )
{
m_valveDefinitions.push_back( valveTemplate );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimValveTemplateCollection::removeAndDeleteValveTemplate( RimValveTemplate* valveTemplate )
{
m_valveDefinitions.removeChild( valveTemplate );
delete valveTemplate;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -114,7 +84,7 @@ void RimValveTemplateCollection::addDefaultValveTemplates()
icv->setType( RiaDefines::WellPathComponentType::ICV );
icv->setUserLabel( "Valve Template #3" );
addValveTemplate( aicd );
addValveTemplate( icd );
addValveTemplate( icv );
addItem( aicd );
addItem( icd );
addItem( icv );
}
@@ -20,17 +20,16 @@
#include "RiaDefines.h"
#include "cafPdmChildArrayField.h"
#include "RimValveTemplate.h"
#include "cafPdmField.h"
#include "cafPdmObject.h"
class RimValveTemplate;
#include "cafPdmObjectCollection.h"
//==================================================================================================
///
///
//==================================================================================================
class RimValveTemplateCollection : public caf::PdmObject
class RimValveTemplateCollection : public caf::PdmObjectCollection<RimValveTemplate>
{
CAF_PDM_HEADER_INIT;
@@ -38,15 +37,12 @@ public:
RimValveTemplateCollection();
~RimValveTemplateCollection() override;
std::vector<RimValveTemplate*> valveTemplates() const;
void addValveTemplate( RimValveTemplate* valveTemplate );
void removeAndDeleteValveTemplate( RimValveTemplate* valveTemplate );
void addDefaultValveTemplates();
// Domain-specific methods
void addDefaultValveTemplates();
caf::AppEnum<RiaDefines::EclipseUnitSystem> defaultUnitSystemType() const;
void setDefaultUnitSystemBasedOnLoadedCases();
private:
caf::PdmChildArrayField<RimValveTemplate*> m_valveDefinitions;
caf::PdmField<caf::AppEnum<RiaDefines::EclipseUnitSystem>> m_defaultUnitsForValveTemplates;
};
@@ -1301,7 +1301,7 @@ std::vector<RimValveTemplate*> RimProject::allValveTemplates() const
std::vector<RimValveTemplate*> templates;
for ( RimValveTemplateCollection* templColl : allValveTemplateCollections() )
{
for ( RimValveTemplate* templ : templColl->valveTemplates() )
for ( RimValveTemplate* templ : templColl->items() )
{
templates.push_back( templ );
}
@@ -95,9 +95,8 @@ std::expected<caf::PdmObjectHandle*, QString> RimcValveTemplateCollection_add_te
if ( userLabel.isEmpty() )
{
// Generate default label based on type and count
auto templates = valveTemplateCollection->valveTemplates();
int count = static_cast<int>( templates.size() ) + 1;
userLabel = QString( "Template %1" ).arg( count );
int count = static_cast<int>( valveTemplateCollection->count() ) + 1;
userLabel = QString( "Template %1" ).arg( count );
}
newTemplate->setUserLabel( userLabel );
@@ -110,7 +109,7 @@ std::expected<caf::PdmObjectHandle*, QString> RimcValveTemplateCollection_add_te
newTemplate->setFlowCoefficient( m_flowCoefficient() );
// Add to collection
valveTemplateCollection->addValveTemplate( newTemplate );
valveTemplateCollection->addItem( newTemplate );
valveTemplateCollection->updateAllRequiredEditors();
return newTemplate;