diff --git a/ApplicationCode/ProjectDataModel/RimSummaryCalculationVariable.cpp b/ApplicationCode/ProjectDataModel/RimSummaryCalculationVariable.cpp index 051be7fd3f..c5f31f6842 100644 --- a/ApplicationCode/ProjectDataModel/RimSummaryCalculationVariable.cpp +++ b/ApplicationCode/ProjectDataModel/RimSummaryCalculationVariable.cpp @@ -18,8 +18,12 @@ #include "RimSummaryCalculationVariable.h" +#include "RiaApplication.h" #include "RiaSummaryCurveDefinition.h" +#include "RifEclipseSummaryAddressQMetaType.h" + +#include "RimProject.h" #include "RimSummaryAddress.h" #include "RimSummaryCalculation.h" #include "RimSummaryCase.h" @@ -86,7 +90,8 @@ void RimSummaryCalculationVariable::fieldChangedByUi(const caf::PdmFieldHandle* { RiuSummaryCurveDefSelectionDialog dlg(nullptr); dlg.hideEnsembles(); - dlg.setCaseAndAddress(m_case(), m_summaryAddress->address()); + + readDataFromApplicationStore(&dlg); if (dlg.exec() == QDialog::Accepted) { @@ -96,6 +101,8 @@ void RimSummaryCalculationVariable::fieldChangedByUi(const caf::PdmFieldHandle* m_case = curveSelection[0].summaryCase(); m_summaryAddress->setAddress(curveSelection[0].summaryAddress()); + writeDataToApplicationStore(); + updateContainingEditor = true; } } @@ -168,3 +175,48 @@ void RimSummaryCalculationVariable::defineObjectEditorAttribute(QString uiConfig attr->registerPushButtonTextForFieldKeyword(m_button.keyword(), "Edit"); } } + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimSummaryCalculationVariable::readDataFromApplicationStore(RiuSummaryCurveDefSelectionDialog* selectionDialog) const +{ + if (!selectionDialog) return; + + auto sumCase = m_case(); + auto sumAddress = m_summaryAddress->address(); + if (!sumCase && !sumAddress.isValid()) + { + QVariant var = RiaApplication::instance()->cacheDataObject("CalculatorSummaryAddress"); + + auto lastUsedAddress = var.value(); + if (lastUsedAddress.isValid()) + { + sumAddress = lastUsedAddress; + } + + QString lastUsedSummaryCaseString = RiaApplication::instance()->cacheDataObject("CalculatorSummaryCase").toString(); + + auto* lastUsedSummaryCase = dynamic_cast( + caf::PdmReferenceHelper::objectFromReference(RiaApplication::instance()->project(), lastUsedSummaryCaseString)); + if (lastUsedSummaryCase) + { + sumCase = lastUsedSummaryCase; + } + } + + selectionDialog->setCaseAndAddress(sumCase, sumAddress); +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimSummaryCalculationVariable::writeDataToApplicationStore() const +{ + QString refFromProjectToObject = + caf::PdmReferenceHelper::referenceFromRootToObject(RiaApplication::instance()->project(), m_case); + RiaApplication::instance()->setCacheDataObject("CalculatorSummaryCase", refFromProjectToObject); + + QVariant sumAdrVar = QVariant::fromValue(m_summaryAddress->address()); + RiaApplication::instance()->setCacheDataObject("CalculatorSummaryAddress", sumAdrVar); +} diff --git a/ApplicationCode/ProjectDataModel/RimSummaryCalculationVariable.h b/ApplicationCode/ProjectDataModel/RimSummaryCalculationVariable.h index be9b9c2967..baff8ada55 100644 --- a/ApplicationCode/ProjectDataModel/RimSummaryCalculationVariable.h +++ b/ApplicationCode/ProjectDataModel/RimSummaryCalculationVariable.h @@ -28,6 +28,7 @@ class RimSummaryCase; class RimSummaryAddress; +class RiuSummaryCurveDefSelectionDialog; //================================================================================================== /// @@ -53,6 +54,9 @@ private: virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override; virtual void defineObjectEditorAttribute(QString uiConfigName, caf::PdmUiEditorAttribute* attribute) override; + void readDataFromApplicationStore(RiuSummaryCurveDefSelectionDialog* selectionDialog) const; + void writeDataToApplicationStore() const; + private: caf::PdmField m_name; caf::PdmProxyValueField m_summaryAddressUi;