include/xmloff/txtimp.hxx | 5 +++++ include/xmloff/txtparae.hxx | 2 ++ sw/qa/extras/odfexport/odfexport.cxx | 10 +++++----- xmloff/source/text/XMLTextMarkImportContext.cxx | 13 +++++++++++++ xmloff/source/text/txtimp.cxx | 20 ++++++++++++++++++++ xmloff/source/text/txtparae.cxx | 2 ++ 6 files changed, 47 insertions(+), 5 deletions(-)
New commits: commit 88b6b1a8c149163d226eb3295930e3407bcb8b5b Author: Serge Krot <[email protected]> Date: Thu Mar 1 13:00:33 2018 +0100 tdf#101856 Backport parsing of bookmark properties Change-Id: I7654aa93d4d86a5d36201832ac3609b9f4c30e03 Reviewed-on: https://gerrit.libreoffice.org/50565 Reviewed-by: Thorsten Behrens <[email protected]> Tested-by: Thorsten Behrens <[email protected]> diff --git a/include/xmloff/txtimp.hxx b/include/xmloff/txtimp.hxx index 05f1fbd4878f..ab2aef9816d5 100644 --- a/include/xmloff/txtimp.hxx +++ b/include/xmloff/txtimp.hxx @@ -721,6 +721,11 @@ public: void AddCrossRefHeadingMapping(OUString const& rFrom, OUString const& rTo); void MapCrossRefHeadingFieldsHorribly(); + + void setBookmarkAttributes(bool hidden, OUString const& condition); + bool getBookmarkHidden(); + const OUString& getBookmarkCondition(); + }; #endif diff --git a/include/xmloff/txtparae.hxx b/include/xmloff/txtparae.hxx index fc3edc0d7a8d..4ce58bc337de 100644 --- a/include/xmloff/txtparae.hxx +++ b/include/xmloff/txtparae.hxx @@ -201,6 +201,8 @@ protected: const OUString sTextFieldStart; const OUString sTextFieldEnd; const OUString sTextFieldStartEnd; + const OUString sBookmarkHidden; + const OUString sBookmarkCondition; SinglePropertySetInfoCache aCharStyleNamesPropInfoCache; diff --git a/sw/qa/extras/odfexport/odfexport.cxx b/sw/qa/extras/odfexport/odfexport.cxx index 630bfc9c6a61..e49c359eeb2a 100644 --- a/sw/qa/extras/odfexport/odfexport.cxx +++ b/sw/qa/extras/odfexport/odfexport.cxx @@ -990,12 +990,12 @@ DECLARE_ODFEXPORT_TEST(tdf101856, "tdf101856.odt") // <text:bookmark-start text:name="BookmarkHidden" loext:condition="" loext:hidden="true"/> uno::Reference<beans::XPropertySet> xBookmark2(xBookmarksByName->getByName("BookmarkHidden"), uno::UNO_QUERY); CPPUNIT_ASSERT_EQUAL(OUString(""), getProperty<OUString>(xBookmark2, UNO_NAME_BOOKMARK_CONDITION)); - //CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xBookmark2, UNO_NAME_BOOKMARK_HIDDEN)); + CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xBookmark2, UNO_NAME_BOOKMARK_HIDDEN)); // <text:bookmark-start text:name="BookmarkVisibleWithCondition" loext:condition="0==1" loext:hidden="true"/> uno::Reference<beans::XPropertySet> xBookmark3(xBookmarksByName->getByName("BookmarkVisibleWithCondition"), uno::UNO_QUERY); - //CPPUNIT_ASSERT_EQUAL(OUString("0==1"), getProperty<OUString>(xBookmark3, UNO_NAME_BOOKMARK_CONDITION)); - //CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xBookmark3, UNO_NAME_BOOKMARK_HIDDEN)); + CPPUNIT_ASSERT_EQUAL(OUString("0==1"), getProperty<OUString>(xBookmark3, UNO_NAME_BOOKMARK_CONDITION)); + CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xBookmark3, UNO_NAME_BOOKMARK_HIDDEN)); // <text:bookmark-start text:name="BookmarkNotHiddenWithCondition" loext:condition="1==1" loext:hidden="false"/> // @@ -1008,8 +1008,8 @@ DECLARE_ODFEXPORT_TEST(tdf101856, "tdf101856.odt") // <text:bookmark-start text:name="BookmarkHiddenWithCondition" loext:condition="1==1" loext:hidden="true"/> uno::Reference<beans::XPropertySet> xBookmark5(xBookmarksByName->getByName("BookmarkHiddenWithCondition"), uno::UNO_QUERY); - //CPPUNIT_ASSERT_EQUAL(OUString("1==1"), getProperty<OUString>(xBookmark5, UNO_NAME_BOOKMARK_CONDITION)); - //CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xBookmark5, UNO_NAME_BOOKMARK_HIDDEN)); + CPPUNIT_ASSERT_EQUAL(OUString("1==1"), getProperty<OUString>(xBookmark5, UNO_NAME_BOOKMARK_CONDITION)); + CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xBookmark5, UNO_NAME_BOOKMARK_HIDDEN)); } CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/xmloff/source/text/XMLTextMarkImportContext.cxx b/xmloff/source/text/XMLTextMarkImportContext.cxx index 22027c3edcb2..5e30b56b65cc 100644 --- a/xmloff/source/text/XMLTextMarkImportContext.cxx +++ b/xmloff/source/text/XMLTextMarkImportContext.cxx @@ -173,6 +173,13 @@ void XMLTextMarkImportContext::StartElement( } m_rHelper.pushFieldCtx( m_sBookmarkName, m_sFieldName ); } + + if (IsXMLToken(GetLocalName(), XML_BOOKMARK_START)) + { + OUString sHidden = xAttrList->getValueByName("loext:hidden"); + OUString sCondition = xAttrList->getValueByName("loext:condition"); + m_rHelper.setBookmarkAttributes(sHidden == "true", sCondition); + } } void XMLTextMarkImportContext::EndElement() @@ -353,6 +360,12 @@ void XMLTextMarkImportContext::EndElement() GetImport().GetRDFaImportHelper().AddRDFa( xMeta, xRDFaAttributes); } + const Reference<XPropertySet> xPropertySet(xContent, UNO_QUERY); + if (xPropertySet.is()) + { + xPropertySet->setPropertyValue("BookmarkHidden", uno::Any(m_rHelper.getBookmarkHidden())); + xPropertySet->setPropertyValue("BookmarkCondition", uno::Any(m_rHelper.getBookmarkCondition())); + } } if ((lcl_MarkType)nTmp==TypeFieldmarkEnd) { diff --git a/xmloff/source/text/txtimp.cxx b/xmloff/source/text/txtimp.cxx index 2b8c38aec37f..1395e1809a29 100644 --- a/xmloff/source/text/txtimp.cxx +++ b/xmloff/source/text/txtimp.cxx @@ -541,6 +541,9 @@ struct XMLTextImportHelper::Impl // Used for frame deduplication, the name of the last frame imported directly before the current one OUString msLastImportedFrameName; + bool m_bBookmarkHidden; + OUString m_sBookmarkCondition; + uno::Reference<text::XText> m_xText; uno::Reference<text::XTextCursor> m_xCursor; uno::Reference<text::XTextRange> m_xCursorAsRange; @@ -585,6 +588,7 @@ struct XMLTextImportHelper::Impl bool const bProgress, bool const bBlockMode, bool const bOrganizerMode) : m_xTextListsHelper( new XMLTextListsHelper() ) + , m_bBookmarkHidden( false ) // XML import: reconstrution of assignment of paragraph style to outline levels (#i69629#) , m_xServiceFactory( rModel, UNO_QUERY ) , m_rSvXMLImport( rImport ) @@ -2934,4 +2938,20 @@ void XMLTextImportHelper::MapCrossRefHeadingFieldsHorribly() } } +void XMLTextImportHelper::setBookmarkAttributes(bool hidden, OUString const& condition) +{ + m_xImpl->m_bBookmarkHidden = hidden; + m_xImpl->m_sBookmarkCondition = condition; +} + +bool XMLTextImportHelper::getBookmarkHidden() +{ + return m_xImpl->m_bBookmarkHidden; +} + +const OUString& XMLTextImportHelper::getBookmarkCondition() +{ + return m_xImpl->m_sBookmarkCondition; +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/xmloff/source/text/txtparae.cxx b/xmloff/source/text/txtparae.cxx index 763058f270b7..3251391ff20a 100644 --- a/xmloff/source/text/txtparae.cxx +++ b/xmloff/source/text/txtparae.cxx @@ -1250,6 +1250,8 @@ XMLTextParagraphExport::XMLTextParagraphExport( sTextFieldStart( "TextFieldStart" ), sTextFieldEnd( "TextFieldEnd" ), sTextFieldStartEnd( "TextFieldStartEnd" ), + sBookmarkHidden("BookmarkHidden"), + sBookmarkCondition("BookmarkCondition"), aCharStyleNamesPropInfoCache( sCharStyleNames ) { rtl::Reference < XMLPropertySetMapper > xPropMapper(new XMLTextPropertySetMapper( TextPropMap::PARA, true )); _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
