From 920f64d73cbb1b41f5a9eb26f8069aef45f29ff0 Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Mon, 12 Nov 2018 23:01:12 +0100 Subject: [PATCH] tdf#121203 DOCX import: fix loss of free-form text in date control Date SDT from DOCX is imported as date control since commit 3ec2d26dc2017ac4a27483febfc63328632f352d (bnc#779630 initial DOCX import of w:sdt's w:date, 2013-04-30). One detail I missed there is our date control is strict: it doesn't allow free-form text. However, DOCX date SDT has an optional ISO date, but the actual value can be free-form text. This means that importing free-form text without an ISO date is lost on import. Fix the data loss by restricting the creation of the date control: only do this if we recognize the date format or in case we have an ISO date. Otherwise just show the free-form text to avoid data loss. Change-Id: I8125bdc749954a6a1c496de74b6682744adb7680 Reviewed-on: https://gerrit.libreoffice.org/63311 Tested-by: Jenkins Reviewed-by: Miklos Vajna --- sw/qa/extras/ooxmlimport/data/tdf121203.docx | Bin 0 -> 12702 bytes writerfilter/source/dmapper/DomainMapper.cxx | 2 +- writerfilter/source/dmapper/SdtHelper.cxx | 44 ++++++++++++++++--- writerfilter/source/dmapper/SdtHelper.hxx | 4 ++ 4 files changed, 44 insertions(+), 6 deletions(-) create mode 100644 sw/qa/extras/ooxmlimport/data/tdf121203.docx diff --git a/sw/qa/extras/ooxmlimport/data/tdf121203.docx b/sw/qa/extras/ooxmlimport/data/tdf121203.docx new file mode 100644 index 0000000000000000000000000000000000000000..5aa3b2ed74744972aca0224e6f7c4102aedb7462 GIT binary patch literal 12702 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 literal 0 HcmV?d00001 diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx index abfc8694535c..52c36c55d03d 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -3339,7 +3339,7 @@ void DomainMapper::lcl_utext(const sal_uInt8 * data_, size_t len) } } // Form controls are not allowed in headers / footers; see sw::DocumentContentOperationsManager::InsertDrawObj() - else if (!m_pImpl->m_pSdtHelper->getDateFormat().isEmpty() && !IsInHeaderFooter()) + else if (m_pImpl->m_pSdtHelper->validateDateFormat() && !IsInHeaderFooter()) { /* * Here we assume w:sdt only contains a single text token. We need to diff --git a/writerfilter/source/dmapper/SdtHelper.cxx b/writerfilter/source/dmapper/SdtHelper.cxx index 2e93f1b98c83..86d153092ddb 100644 --- a/writerfilter/source/dmapper/SdtHelper.cxx +++ b/writerfilter/source/dmapper/SdtHelper.cxx @@ -17,6 +17,29 @@ #include #include +#include "DomainMapper_Impl.hxx" +#include "StyleSheetTable.hxx" + +namespace +{ +/// Maps OOXML values to UNO date format values. +sal_Int16 getUNODateFormat(const OUString& rDateFormat) +{ + // See com/sun/star/awt/UnoControlDateFieldModel.idl, DateFormat; sadly + // there are no constants. + sal_Int16 nDateFormat = -1; + + if (rDateFormat == "M/d/yyyy" || rDateFormat == "M.d.yyyy") + // MMDDYYYY + nDateFormat = 8; + else if (rDateFormat == "dd/MM/yyyy") + // DDMMYYYY + nDateFormat = 7; + + return nDateFormat; +} +} + namespace writerfilter { namespace dmapper @@ -85,6 +108,14 @@ void SdtHelper::createDropDownControl() m_aDropDownItems.clear(); } +bool SdtHelper::validateDateFormat() +{ + bool bRet = !m_sDate.isEmpty() || getUNODateFormat(m_sDateFormat.toString()) != -1; + if (!bRet) + m_sDateFormat.setLength(0); + return bRet; +} + void SdtHelper::createDateControl(OUString const& rContentText, const beans::PropertyValue& rCharFormat) { uno::Reference xControlModel; @@ -107,14 +138,17 @@ void SdtHelper::createDateControl(OUString const& rContentText, const beans::Pro xPropertySet->setPropertyValue("Dropdown", uno::makeAny(true)); // See com/sun/star/awt/UnoControlDateFieldModel.idl, DateFormat; sadly there are no constants - sal_Int16 nDateFormat = 0; OUString sDateFormat = m_sDateFormat.makeStringAndClear(); - if (sDateFormat == "M/d/yyyy" || sDateFormat == "M.d.yyyy") - // Approximate with MM.dd.yyy - nDateFormat = 8; - else + sal_Int16 nDateFormat = getUNODateFormat(sDateFormat); + if (nDateFormat == -1) + { // Set default format, so at least the date picker is created. SAL_WARN("writerfilter", "unhandled w:dateFormat value"); + if (m_sDate.isEmpty()) + return; + else + nDateFormat = 0; + } xPropertySet->setPropertyValue("DateFormat", uno::makeAny(nDateFormat)); util::Date aDate; diff --git a/writerfilter/source/dmapper/SdtHelper.hxx b/writerfilter/source/dmapper/SdtHelper.hxx index b6691b55770b..8942c059e510 100644 --- a/writerfilter/source/dmapper/SdtHelper.hxx +++ b/writerfilter/source/dmapper/SdtHelper.hxx @@ -88,6 +88,10 @@ public: { return m_sDateFormat; } + + /// Decides if we have enough information to create a date control. + bool validateDateFormat(); + OUStringBuffer& getLocale() { return m_sLocale; -- 2.17.1