Preferences : Added support for pdm objects recursively

This commit is contained in:
Magne Sjaastad 2014-07-31 10:05:16 +02:00
parent 0d14436b97
commit 11967c5161
3 changed files with 41 additions and 10 deletions

View File

@ -650,7 +650,7 @@ bool RiaApplication::openEclipseCase(const QString& caseName, const QString& cas
riv->cellResult()->setResultVariable(RimDefines::undefinedResultName()); riv->cellResult()->setResultVariable(RimDefines::undefinedResultName());
} }
riv->cellFaultResult()->updateVisibility(); riv->faultResult()->updateVisibility();
RimUiTreeModelPdm* uiModel = RiuMainWindow::instance()->uiPdmModel(); RimUiTreeModelPdm* uiModel = RiuMainWindow::instance()->uiPdmModel();
@ -1236,7 +1236,7 @@ bool RiaApplication::launchProcessForMultipleCases(const QString& program, const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// Read fields of a Pdm object using QSettings /// Read fields of a Pdm object using QSettings
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RiaApplication::readFieldsFromApplicationStore(caf::PdmObject* object) void RiaApplication::readFieldsFromApplicationStore(caf::PdmObject* object, const QString context)
{ {
QSettings settings; QSettings settings;
std::vector<caf::PdmFieldHandle*> fields; std::vector<caf::PdmFieldHandle*> fields;
@ -1247,10 +1247,24 @@ void RiaApplication::readFieldsFromApplicationStore(caf::PdmObject* object)
{ {
caf::PdmFieldHandle* fieldHandle = fields[i]; caf::PdmFieldHandle* fieldHandle = fields[i];
if (settings.contains(fieldHandle->keyword())) std::vector<caf::PdmObject*> children;
fieldHandle->childObjects(&children);
for (size_t childIdx = 0; childIdx < children.size(); childIdx++)
{ {
QVariant val = settings.value(fieldHandle->keyword()); caf::PdmObject* child = children[childIdx];
fieldHandle->setValueFromUi(val); QString subContext = context + child->classKeyword() + "/";
readFieldsFromApplicationStore(child, subContext);
}
if (children.size() == 0)
{
QString key = context + fieldHandle->keyword();
if (settings.contains(key))
{
QVariant val = settings.value(key);
fieldHandle->setValueFromUi(val);
}
} }
} }
} }
@ -1258,7 +1272,7 @@ void RiaApplication::readFieldsFromApplicationStore(caf::PdmObject* object)
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// Write fields of a Pdm object using QSettings /// Write fields of a Pdm object using QSettings
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RiaApplication::writeFieldsToApplicationStore(const caf::PdmObject* object) void RiaApplication::writeFieldsToApplicationStore(const caf::PdmObject* object, const QString context)
{ {
CVF_ASSERT(object); CVF_ASSERT(object);
@ -1272,7 +1286,24 @@ void RiaApplication::writeFieldsToApplicationStore(const caf::PdmObject* object)
{ {
caf::PdmFieldHandle* fieldHandle = fields[i]; caf::PdmFieldHandle* fieldHandle = fields[i];
settings.setValue(fieldHandle->keyword(), fieldHandle->uiValue()); std::vector<caf::PdmObject*> children;
fieldHandle->childObjects(&children);
for (size_t childIdx = 0; childIdx < children.size(); childIdx++)
{
caf::PdmObject* child = children[childIdx];
QString subContext;
if (context.isEmpty())
{
subContext = context + child->classKeyword() + "/";
}
writeFieldsToApplicationStore(child, subContext);
}
if (children.size() == 0)
{
settings.setValue(context + fieldHandle->keyword(), fieldHandle->uiValue());
}
} }
} }

View File

@ -132,8 +132,8 @@ public:
void terminateProcess(); void terminateProcess();
RiaPreferences* preferences(); RiaPreferences* preferences();
void readFieldsFromApplicationStore(caf::PdmObject* object); void readFieldsFromApplicationStore(caf::PdmObject* object, const QString context = "");
void writeFieldsToApplicationStore(const caf::PdmObject* object); void writeFieldsToApplicationStore(const caf::PdmObject* object, const QString context = "");
void applyPreferences(); void applyPreferences();
cvf::Font* standardFont(); cvf::Font* standardFont();

View File

@ -98,7 +98,7 @@ public:
caf::PdmField<RimResultSlot*> cellResult; caf::PdmField<RimResultSlot*> cellResult;
caf::PdmField<RimCellEdgeResultSlot*> cellEdgeResult; caf::PdmField<RimCellEdgeResultSlot*> cellEdgeResult;
caf::PdmField<RimFaultResultSlot*> cellFaultResult; caf::PdmField<RimFaultResultSlot*> faultResult;
caf::PdmField<RimCellRangeFilterCollection*> rangeFilterCollection; caf::PdmField<RimCellRangeFilterCollection*> rangeFilterCollection;
caf::PdmField<RimCellPropertyFilterCollection*> propertyFilterCollection; caf::PdmField<RimCellPropertyFilterCollection*> propertyFilterCollection;