#2933 Calculator : Auto fill address selection based on last entered address

This commit is contained in:
Magne Sjaastad 2018-05-16 10:57:43 +02:00
parent 79928702bf
commit 3bc952b77f
2 changed files with 57 additions and 1 deletions

View File

@ -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<RifEclipseSummaryAddress>();
if (lastUsedAddress.isValid())
{
sumAddress = lastUsedAddress;
}
QString lastUsedSummaryCaseString = RiaApplication::instance()->cacheDataObject("CalculatorSummaryCase").toString();
auto* lastUsedSummaryCase = dynamic_cast<RimSummaryCase*>(
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);
}

View File

@ -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<QString> m_name;
caf::PdmProxyValueField<QString> m_summaryAddressUi;