sw/source/filter/docx/swdocxreader.cxx | 18 ++++++++++++++---- writerfilter/source/dmapper/DomainMapper.cxx | 14 ++++++++++++++ writerfilter/source/ooxml/model.xml | 7 +++++++ 3 files changed, 35 insertions(+), 4 deletions(-)
New commits: commit fb3989b6f70b48f4da8ca87e791f6922da56279e Author: Szymon KÅos <szymon.k...@collabora.com> Date: Mon May 1 19:05:48 2017 +0200 AutoText: read names of entries + extended model to parse <docPartPr> and <name> marks + names are inserted to the document before content of each entry + SwDOCXReader interprets first paragraph of each section as a name Change-Id: Ib7de152ba1c6bea4f4665f98d321019c3f68863e Reviewed-on: https://gerrit.libreoffice.org/37124 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Miklos Vajna <vmik...@collabora.co.uk> diff --git a/sw/source/filter/docx/swdocxreader.cxx b/sw/source/filter/docx/swdocxreader.cxx index 7a3cc9425bd5..8a20cf0d2a8a 100644 --- a/sw/source/filter/docx/swdocxreader.cxx +++ b/sw/source/filter/docx/swdocxreader.cxx @@ -111,6 +111,19 @@ bool SwDOCXReader::MakeEntries( SwDoc *pD, SwTextBlocks &rBlocks ) sal_uInt16 nGlosEntry = 0; SwContentNode* pCNd = nullptr; do { + // Get name - first paragraph + OUString aLNm; + { + SwPaM aPam( aStart ); + SwNodeIndex& rIdx = aPam.GetPoint()->nNode; + ++rIdx; + aLNm = aPam.GetNode().GetTextNode()->GetText(); + } + + // Do not copy name + aStart++; + + // Get content SwPaM aPam( aStart ); { SwNodeIndex& rIdx = aPam.GetPoint()->nNode; @@ -139,10 +152,7 @@ bool SwDOCXReader::MakeEntries( SwDoc *pD, SwTextBlocks &rBlocks ) // Now we have the right selection for one entry rBlocks.ClearDoc(); - // TODO: correct entry name - const OUString rLNm = "ImportedAutoText"; - - OUString sShortcut = rLNm; + OUString sShortcut = aLNm; // Need to check make sure the shortcut is not already being used sal_Int32 nStart = 0; diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx index 1784c612c0bd..62544ca858f1 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -1080,6 +1080,13 @@ void DomainMapper::lcl_attribute(Id nName, Value & val) case NS_ooxml::LN_CT_Cnf_val: m_pImpl->appendGrabBag(m_pImpl->m_aInteropGrabBag, "val", sStringValue); break; + case NS_ooxml::LN_CT_DocPartName_val: + { + // Add glossary entry name as a first paragraph in section + PropertyMapPtr pContext = m_pImpl->GetTopContext(); + m_pImpl->appendTextPortion(sStringValue, pContext); + break; + } default: SAL_WARN("writerfilter", "DomainMapper::lcl_attribute: unhandled token: " << nName); } @@ -2753,6 +2760,13 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, const PropertyMapPtr& rContext ) pProperties->resolve(m_pImpl->getSmartTagHandler()); } break; + case NS_ooxml::LN_CT_DocPartPr_name: + { + writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps(); + if (pProperties.get() != nullptr) + pProperties->resolve(*this); + } + break; default: { #ifdef DEBUG_WRITERFILTER diff --git a/writerfilter/source/ooxml/model.xml b/writerfilter/source/ooxml/model.xml index f943618a35bd..a39f0537fa76 100644 --- a/writerfilter/source/ooxml/model.xml +++ b/writerfilter/source/ooxml/model.xml @@ -19062,6 +19062,13 @@ <action name="start" action="startGlossaryEntry"/> <action name="end" action="endGlossaryEntry"/> </resource> + <resource name="CT_DocPartPr" resource="Properties"> + <action name="start" action="startSectionGroup"/> + <element name="name" tokenid="ooxml:CT_DocPartPr_name"/> + </resource> + <resource name="CT_DocPartName" resource="Properties"> + <attribute name="val" tokenid="ooxml:CT_DocPartName_val"/> + </resource> <resource name="document" resource="Stream"/> <resource name="glossaryDocument" resource="Stream"/> <resource name="CT_TxbxContent" resource="Stream">
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits