mirror of
https://github.com/OPM/ResInsight.git
synced 2026-11-03 04:40:49 -06:00
Update toggle icon automatically on UI change and after read
This commit is contained in:
1 parent
95bee61f91
commit
3de9b3c1aa
37 files changed
+32
-147
No files matched your search
@@ -7,6 +7,9 @@ class PdmObjectCapability
|
||||
public:
|
||||
PdmObjectCapability() {}
|
||||
virtual ~PdmObjectCapability() {}
|
||||
|
||||
// Called for each capability of an object after its fields are read, before PdmXmlObjectHandle::initAfterRead()
|
||||
virtual void onAfterRead() {}
|
||||
};
|
||||
|
||||
} // End namespace caf
|
||||
@@ -72,6 +72,9 @@ void PdmUiFieldHandle::notifyFieldChanged( const QVariant& oldFieldValue, const
|
||||
PdmUiObjectHandle* uiObjHandle = uiObj( ownerObjectHandle );
|
||||
if ( uiObjHandle )
|
||||
{
|
||||
// Keep the icon in sync with the toggle field before notifying the object
|
||||
if ( fieldHandle == uiObjHandle->objectToggleField() ) uiObjHandle->updateUiIconFromToggleField();
|
||||
|
||||
uiObjHandle->fieldChangedByUi( fieldHandle, oldFieldValue, newFieldValue );
|
||||
uiObjHandle->updateConnectedEditors();
|
||||
|
||||
|
||||
@@ -213,17 +213,23 @@ void PdmUiObjectHandle::expandUiTree( PdmUiTreeOrdering* root, const QString& ui
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void PdmUiObjectHandle::updateUiIconFromToggleField()
|
||||
void PdmUiObjectHandle::updateUiIconFromToggleField( const QString& uiConfigName )
|
||||
{
|
||||
if ( objectToggleField() )
|
||||
{
|
||||
PdmUiFieldHandle* uiFieldHandle = objectToggleField()->uiCapability();
|
||||
if ( uiFieldHandle )
|
||||
{
|
||||
bool active = uiFieldHandle->uiValue().toBool();
|
||||
updateUiIconFromState( active );
|
||||
}
|
||||
}
|
||||
auto* toggleField = objectToggleField();
|
||||
if ( !toggleField ) return;
|
||||
|
||||
auto* uiFieldHandle = toggleField->uiCapability();
|
||||
if ( !uiFieldHandle ) return;
|
||||
|
||||
updateUiIconFromState( uiFieldHandle->uiValue().toBool(), uiConfigName );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void PdmUiObjectHandle::onAfterRead()
|
||||
{
|
||||
updateUiIconFromToggleField();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -47,7 +47,11 @@ public:
|
||||
/// Field used to control if field change of and object should be covered by undo/redo framework
|
||||
virtual bool useUndoRedoForFieldChanged() { return true; }
|
||||
|
||||
void updateUiIconFromToggleField();
|
||||
// Updates the icon active state from the object toggle field. Done automatically when the toggle field is changed
|
||||
// and after the object is read. Call explicitly when the toggle field is set without notification
|
||||
void updateUiIconFromToggleField( const QString& uiConfigName = "" );
|
||||
|
||||
void onAfterRead() override;
|
||||
|
||||
/// Append actions to menu builder
|
||||
virtual void appendMenuItems( caf::CmdFeatureMenuBuilder& menuBuilder ) const {}
|
||||
|
||||
@@ -401,6 +401,11 @@ void PdmXmlObjectHandle::initAfterReadRecursively( PdmObjectHandle* object )
|
||||
initAfterReadRecursively( children[cIdx] );
|
||||
}
|
||||
|
||||
for ( auto& [capability, takeOwnership] : object->m_capabilities )
|
||||
{
|
||||
capability->onAfterRead();
|
||||
}
|
||||
|
||||
PdmXmlObjectHandle* xmlObject = xmlObj( object );
|
||||
if ( xmlObject )
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user