[Libreoffice-commits] core.git: 3 commits - sw/qa sw/source writerfilter/source
Miklos Vajna
vmiklos at collabora.co.uk
Fri Jul 18 08:53:22 PDT 2014
sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 4 ++++
sw/source/filter/ww8/docxattributeoutput.cxx | 9 ++++++++-
writerfilter/source/dmapper/SdtHelper.cxx | 21 ++++++++++-----------
3 files changed, 22 insertions(+), 12 deletions(-)
New commits:
commit e400b3af070d2ec592d78ce64ba10bc5f091ce6a
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Fri Jul 18 16:46:43 2014 +0200
DOCX export: handle <w:alias> for the date SDT
Change-Id: I97d4331a5e49815cc03e8579b50a076b37530f96
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
index e7934b2..87fdbd6 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
@@ -3360,8 +3360,12 @@ DECLARE_OOXMLEXPORT_TEST(testSdtAlias, "sdt-alias.docx")
DECLARE_OOXMLEXPORT_TEST(testSdtDateCharformat, "sdt-date-charformat.docx")
{
if (xmlDocPtr pXmlDoc = parseExport())
+ {
// character formatting (bold) was missing, this was 0
assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:sdt/w:sdtContent/w:r/w:rPr/w:b", 1);
+ // alias was also missing.
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:sdt/w:sdtPr/w:alias", 1);
+ }
}
DECLARE_OOXMLEXPORT_TEST(testFooterBodyDistance, "footer-body-distance.docx")
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
index 92e4a96..dcdb99a 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -4216,7 +4216,7 @@ void DocxAttributeOutput::WritePostponedFormControl(const SdrObject* pObject)
// gather component properties
Date aOriginalDate(Date::EMPTY);
- OUString sOriginalContent, sDateFormat;
+ OUString sOriginalContent, sDateFormat, sAlias;
OUString sLocale("en-US");
uno::Sequence<beans::PropertyValue> aGrabBag;
uno::Reference<beans::XPropertySet> xShapePropertySet(pFormObj->getUnoShape(), uno::UNO_QUERY);
@@ -4241,6 +4241,8 @@ void DocxAttributeOutput::WritePostponedFormControl(const SdrObject* pObject)
}
else if (aGrabBag[i].Name == "CharFormat")
aGrabBag[i].Value >>= aCharFormat;
+ else if (aGrabBag[i].Name == "ooxml:CT_SdtPr_alias")
+ aGrabBag[i].Value >>= sAlias;
}
}
uno::Reference<beans::XPropertySet> xPropertySet(xControlModel, uno::UNO_QUERY);
@@ -4274,6 +4276,11 @@ void DocxAttributeOutput::WritePostponedFormControl(const SdrObject* pObject)
m_pSerializer->startElementNS(XML_w, XML_sdt, FSEND);
m_pSerializer->startElementNS(XML_w, XML_sdtPr, FSEND);
+ if (!sAlias.isEmpty())
+ m_pSerializer->singleElementNS(XML_w, XML_alias,
+ FSNS(XML_w, XML_val), OUStringToOString(sAlias, RTL_TEXTENCODING_UTF8),
+ FSEND);
+
if (bHasDate)
m_pSerializer->startElementNS(XML_w, XML_date,
FSNS( XML_w, XML_fullDate ), sDate.getStr(),
commit 085ab61bfd63d7610f2ccc52aa2483d795c9bc1a
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Fri Jul 18 16:41:09 2014 +0200
DOCX import: handle <w:alias> for the date SDT
Change-Id: I4a58fd9fc1db4e0fd3f9e2142fc208cec9f99f9d
diff --git a/writerfilter/source/dmapper/SdtHelper.cxx b/writerfilter/source/dmapper/SdtHelper.cxx
index 18c3c06..2b1a111 100644
--- a/writerfilter/source/dmapper/SdtHelper.cxx
+++ b/writerfilter/source/dmapper/SdtHelper.cxx
@@ -128,6 +128,8 @@ void SdtHelper::createDateControl(OUString& rContentText, beans::PropertyValue a
aGrabBag["DateFormat"] <<= sDateFormat;
aGrabBag["Locale"] <<= m_sLocale.makeStringAndClear();
aGrabBag["CharFormat"] <<= aCharFormat.Value;
+ // merge in properties like ooxml:CT_SdtPr_alias and friends.
+ aGrabBag.update(comphelper::SequenceAsHashMap(m_aGrabBag));
std::vector<OUString> aItems;
createControlShape(lcl_getOptimalWidth(m_rDM_Impl.GetStyleSheetTable(), rContentText, aItems), xControlModel, aGrabBag.getAsConstPropertyValueList());
commit 7916ca62209ee32c46c264b8cbf0a28b1c23a2a8
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Fri Jul 18 16:38:45 2014 +0200
Use comphelper::SequenceAsHashMap
Change-Id: I398881187001393a84e407157041d3a7d254b708
diff --git a/writerfilter/source/dmapper/SdtHelper.cxx b/writerfilter/source/dmapper/SdtHelper.cxx
index aeb129d..18c3c06 100644
--- a/writerfilter/source/dmapper/SdtHelper.cxx
+++ b/writerfilter/source/dmapper/SdtHelper.cxx
@@ -12,6 +12,7 @@
#include <com/sun/star/drawing/XControlShape.hpp>
#include <com/sun/star/text/VertOrientation.hpp>
+#include <comphelper/sequenceashashmap.hxx>
#include <editeng/unoprnms.hxx>
#include <vcl/outdev.hxx>
#include <vcl/svapp.hxx>
@@ -121,19 +122,15 @@ void SdtHelper::createDateControl(OUString& rContentText, beans::PropertyValue a
xPropertySet->setPropertyValue("HelpText", uno::makeAny(rContentText));
// append date format to grab bag
- uno::Sequence<beans::PropertyValue> aGrabBag(5);
- aGrabBag[0].Name = "OriginalDate";
- aGrabBag[0].Value = uno::makeAny(aDate);
- aGrabBag[1].Name = "OriginalContent";
- aGrabBag[1].Value = uno::makeAny(rContentText);
- aGrabBag[2].Name = "DateFormat";
- aGrabBag[2].Value = uno::makeAny(sDateFormat);
- aGrabBag[3].Name = "Locale";
- aGrabBag[3].Value = uno::makeAny(m_sLocale.makeStringAndClear());
- aGrabBag[4] = aCharFormat;
+ comphelper::SequenceAsHashMap aGrabBag;
+ aGrabBag["OriginalDate"] <<= aDate;
+ aGrabBag["OriginalContent"] <<= rContentText;
+ aGrabBag["DateFormat"] <<= sDateFormat;
+ aGrabBag["Locale"] <<= m_sLocale.makeStringAndClear();
+ aGrabBag["CharFormat"] <<= aCharFormat.Value;
std::vector<OUString> aItems;
- createControlShape(lcl_getOptimalWidth(m_rDM_Impl.GetStyleSheetTable(), rContentText, aItems), xControlModel, aGrabBag);
+ createControlShape(lcl_getOptimalWidth(m_rDM_Impl.GetStyleSheetTable(), rContentText, aItems), xControlModel, aGrabBag.getAsConstPropertyValueList());
}
void SdtHelper::createControlShape(awt::Size aSize, uno::Reference<awt::XControlModel> xControlModel)
More information about the Libreoffice-commits
mailing list