libreoffice/SOURCES/0001-tdf-121203-DOCX-import...

335 lines
18 KiB
Diff

From 920f64d73cbb1b41f5a9eb26f8069aef45f29ff0 Mon Sep 17 00:00:00 2001
From: Miklos Vajna <vmiklos@collabora.com>
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 <vmiklos@collabora.com>
---
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 <unotools/datetime.hxx>
#include <comphelper/sequence.hxx>
+#include "DomainMapper_Impl.hxx"
+#include "StyleSheetTable.hxx"
+
+namespace
+{
+/// Maps OOXML <w:dateFormat> 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<awt::XControlModel> 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