Kaydet (Commit) 88b6b1a8 authored tarafından Serge Krot's avatar Serge Krot Kaydeden (comit) Thorsten Behrens

tdf#101856 Backport parsing of bookmark properties

Change-Id: I7654aa93d4d86a5d36201832ac3609b9f4c30e03
Reviewed-on: https://gerrit.libreoffice.org/50565Reviewed-by: 's avatarThorsten Behrens <Thorsten.Behrens@CIB.de>
Tested-by: 's avatarThorsten Behrens <Thorsten.Behrens@CIB.de>
üst f3339871
......@@ -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
......
......@@ -201,6 +201,8 @@ protected:
const OUString sTextFieldStart;
const OUString sTextFieldEnd;
const OUString sTextFieldStartEnd;
const OUString sBookmarkHidden;
const OUString sBookmarkCondition;
SinglePropertySetInfoCache aCharStyleNamesPropInfoCache;
......
......@@ -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();
......
......@@ -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) {
......
......@@ -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: */
......@@ -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 ));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment