From 3955f29ce36e7ec65c9f18607f71e2660c51b044 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Jensen?= Date: Thu, 2 Nov 2017 09:21:20 +0100 Subject: [PATCH] #2081 LAS import. Display dialog box when reading LAS file with missing or invalid date --- .../ProjectDataModel/RimWellLogFile.cpp | 50 ++++++++++++++++--- .../ProjectDataModel/RimWellLogFile.h | 8 ++- 2 files changed, 49 insertions(+), 9 deletions(-) diff --git a/ApplicationCode/ProjectDataModel/RimWellLogFile.cpp b/ApplicationCode/ProjectDataModel/RimWellLogFile.cpp index c054c6d785..4a634f5b19 100644 --- a/ApplicationCode/ProjectDataModel/RimWellLogFile.cpp +++ b/ApplicationCode/ProjectDataModel/RimWellLogFile.cpp @@ -34,6 +34,7 @@ #include #include #include +#include "RiaQDateTimeTools.h" CAF_PDM_SOURCE_INIT(RimWellLogFile, "WellLogFile"); @@ -48,6 +49,11 @@ namespace caf } } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +const QDateTime RimWellLogFile::DEFAULT_DATE_TIME = RiaQDateTimeTools::createUtcDateTime(QDate(1900, 1, 1)); + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -77,6 +83,10 @@ RimWellLogFile::RimWellLogFile() CAF_PDM_InitFieldNoDefault(&m_wellFlowCondition, "WellFlowCondition", "Well Flow Condition", "", "", ""); + CAF_PDM_InitField(&m_invalidDateMessage, "InvalidDateMessage", QString("Invalid or no date"), "", "", "", ""); + m_invalidDateMessage.uiCapability()->setUiReadOnly(true); + m_invalidDateMessage.xmlCapability()->disableIO(); + m_wellLogDataFile = NULL; } @@ -153,11 +163,23 @@ bool RimWellLogFile::readFile(QString* errorMessage) m_wellName = m_wellLogDataFile->wellName(); QDateTime date = RiaDateStringParser::parseDateString(m_wellLogDataFile->date()); - m_lasFileHasValidDate = date.isValid(); + m_lasFileHasValidDate = isDateValid(date); if (m_lasFileHasValidDate) { m_date = date; } + else if(!isDateValid(m_date())) + { + QMessageBox msgBox; + + QString message = QString("The LAS-file '%1' contains no recognizable date. Please assign a date in the LAS-file property panel") + .arg(m_name()); + msgBox.setText(message); + msgBox.setStandardButtons(QMessageBox::Ok); + msgBox.exec(); + + m_date = DEFAULT_DATE_TIME; + } m_wellLogChannelNames.deleteAllChildObjects(); @@ -236,6 +258,13 @@ void RimWellLogFile::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering.add(&m_date); m_date.uiCapability()->setUiReadOnly(m_lasFileHasValidDate); + auto timespec = m_date().timeSpec(); + + if (!isDateValid(m_date())) + { + uiOrdering.add(&m_invalidDateMessage); + } + if (hasFlowData()) { uiOrdering.add(&m_wellFlowCondition); @@ -247,16 +276,13 @@ void RimWellLogFile::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -QList RimWellLogFile::calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly) +void RimWellLogFile::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) { - QList options; - - if (fieldNeedingOptions == &m_date) + if (changedField == &m_date) { - + // Due to a possible bug in QDateEdit/PdmUiDateEditor, convert m_date to a QDateTime having UTC timespec + m_date = RiaQDateTimeTools::createUtcDateTime(m_date().date(), m_date().time()); } - - return options; } //-------------------------------------------------------------------------------------------------- @@ -270,3 +296,11 @@ void RimWellLogFile::defineEditorAttribute(const caf::PdmFieldHandle* field, QSt attrib->dateFormat = RimTools::dateFormatString(); } } + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +bool RimWellLogFile::isDateValid(const QDateTime dateTime) +{ + return dateTime.isValid() && dateTime != DEFAULT_DATE_TIME; +} diff --git a/ApplicationCode/ProjectDataModel/RimWellLogFile.h b/ApplicationCode/ProjectDataModel/RimWellLogFile.h index 8ba8322ff0..a7cf42a1a3 100644 --- a/ApplicationCode/ProjectDataModel/RimWellLogFile.h +++ b/ApplicationCode/ProjectDataModel/RimWellLogFile.h @@ -48,6 +48,8 @@ class RimWellLogFile : public caf::PdmObject WELL_FLOW_COND_STANDARD }; + const static QDateTime DEFAULT_DATE_TIME; + public: RimWellLogFile(); virtual ~RimWellLogFile(); @@ -70,12 +72,14 @@ public: private: virtual void setupBeforeSave() override; virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override; - virtual QList calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly) override; + virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override; virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute) override; virtual caf::PdmFieldHandle* userDescriptionField() { return &m_name; } + static bool isDateValid(const QDateTime dateTime); + caf::PdmChildArrayField m_wellLogChannelNames; private: @@ -86,4 +90,6 @@ private: caf::PdmField m_date; bool m_lasFileHasValidDate; caf::PdmField> m_wellFlowCondition; + + caf::PdmField m_invalidDateMessage; };