tdf#101856 Handle properties of nested bookmarks
Change-Id: I1a92d2001e58751c5bbe41f6480f4c46dcc8c9e7 Reviewed-on: https://gerrit.libreoffice.org/59766 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
This commit is contained in:
committed by
Thorsten Behrens
parent
a1dd8098e6
commit
3559daee24
@@ -712,9 +712,9 @@ public:
|
||||
void AddCrossRefHeadingMapping(OUString const& rFrom, OUString const& rTo);
|
||||
void MapCrossRefHeadingFieldsHorribly();
|
||||
|
||||
void setBookmarkAttributes(bool hidden, OUString const& condition);
|
||||
bool getBookmarkHidden();
|
||||
const OUString& getBookmarkCondition();
|
||||
void setBookmarkAttributes(OUString const& bookmark, bool hidden, OUString const& condition);
|
||||
bool getBookmarkHidden(OUString const& bookmark) const;
|
||||
const OUString& getBookmarkCondition(OUString const& bookmark) const;
|
||||
|
||||
};
|
||||
|
||||
|
||||
Binary file not shown.
@@ -1996,6 +1996,30 @@ DECLARE_ODFEXPORT_TEST(testSpellOutNumberingTypes, "spellout-numberingtypes.odt"
|
||||
}
|
||||
}
|
||||
|
||||
// MAILMERGE Add conditional to expand / collapse bookmarks
|
||||
DECLARE_ODFEXPORT_TEST(tdf101856_overlapped, "tdf101856_overlapped.odt")
|
||||
{
|
||||
// get bookmark interface
|
||||
uno::Reference<text::XBookmarksSupplier> xBookmarksSupplier(mxComponent, uno::UNO_QUERY);
|
||||
uno::Reference<container::XIndexAccess> xBookmarksByIdx(xBookmarksSupplier->getBookmarks(), uno::UNO_QUERY);
|
||||
uno::Reference<container::XNameAccess> xBookmarksByName(xBookmarksSupplier->getBookmarks(), uno::UNO_QUERY);
|
||||
|
||||
// check: we have 2 bookmarks
|
||||
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(2), xBookmarksByIdx->getCount());
|
||||
CPPUNIT_ASSERT(xBookmarksByName->hasByName("BookmarkNonHidden"));
|
||||
CPPUNIT_ASSERT(xBookmarksByName->hasByName("BookmarkHidden"));
|
||||
|
||||
// <text:bookmark-start text:name="BookmarkNonHidden"/>
|
||||
uno::Reference<beans::XPropertySet> xBookmark1(xBookmarksByName->getByName("BookmarkNonHidden"), uno::UNO_QUERY);
|
||||
CPPUNIT_ASSERT_EQUAL(OUString(""), getProperty<OUString>(xBookmark1, UNO_NAME_BOOKMARK_CONDITION));
|
||||
CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(xBookmark1, UNO_NAME_BOOKMARK_HIDDEN));
|
||||
|
||||
// <text:bookmark-start text:name="BookmarkHidden"/>
|
||||
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));
|
||||
}
|
||||
|
||||
// MAILMERGE Add conditional to expand / collapse bookmarks
|
||||
DECLARE_ODFEXPORT_TEST(tdf101856, "tdf101856.odt")
|
||||
{
|
||||
|
||||
@@ -174,9 +174,9 @@ void XMLTextMarkImportContext::StartElement(
|
||||
|
||||
if (IsXMLToken(GetLocalName(), XML_BOOKMARK_START))
|
||||
{
|
||||
OUString sHidden = xAttrList->getValueByName("loext:hidden");
|
||||
OUString sCondition = xAttrList->getValueByName("loext:condition");
|
||||
m_rHelper.setBookmarkAttributes(sHidden == "true", sCondition);
|
||||
const OUString sHidden = xAttrList->getValueByName("loext:hidden");
|
||||
const OUString sCondition = xAttrList->getValueByName("loext:condition");
|
||||
m_rHelper.setBookmarkAttributes(m_sBookmarkName, sHidden == "true", sCondition);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -357,8 +357,8 @@ void XMLTextMarkImportContext::EndElement()
|
||||
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()));
|
||||
xPropertySet->setPropertyValue("BookmarkHidden", uno::Any(m_rHelper.getBookmarkHidden(m_sBookmarkName)));
|
||||
xPropertySet->setPropertyValue("BookmarkCondition", uno::Any(m_rHelper.getBookmarkCondition(m_sBookmarkName)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -548,8 +548,8 @@ 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;
|
||||
std::map< OUString, bool > m_bBookmarkHidden;
|
||||
std::map< OUString, OUString > m_sBookmarkCondition;
|
||||
|
||||
uno::Reference<text::XText> m_xText;
|
||||
uno::Reference<text::XTextCursor> m_xCursor;
|
||||
@@ -596,7 +596,6 @@ 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 )
|
||||
@@ -2952,20 +2951,20 @@ void XMLTextImportHelper::MapCrossRefHeadingFieldsHorribly()
|
||||
}
|
||||
}
|
||||
|
||||
void XMLTextImportHelper::setBookmarkAttributes(bool hidden, OUString const& condition)
|
||||
void XMLTextImportHelper::setBookmarkAttributes(OUString const& bookmark, bool hidden, OUString const& condition)
|
||||
{
|
||||
m_xImpl->m_bBookmarkHidden = hidden;
|
||||
m_xImpl->m_sBookmarkCondition = condition;
|
||||
m_xImpl->m_bBookmarkHidden[bookmark] = hidden;
|
||||
m_xImpl->m_sBookmarkCondition[bookmark] = condition;
|
||||
}
|
||||
|
||||
bool XMLTextImportHelper::getBookmarkHidden()
|
||||
bool XMLTextImportHelper::getBookmarkHidden(OUString const& bookmark) const
|
||||
{
|
||||
return m_xImpl->m_bBookmarkHidden;
|
||||
return m_xImpl->m_bBookmarkHidden[bookmark];
|
||||
}
|
||||
|
||||
const OUString& XMLTextImportHelper::getBookmarkCondition()
|
||||
const OUString& XMLTextImportHelper::getBookmarkCondition(OUString const& bookmark) const
|
||||
{
|
||||
return m_xImpl->m_sBookmarkCondition;
|
||||
return m_xImpl->m_sBookmarkCondition[bookmark];
|
||||
}
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
||||
|
||||
Reference in New Issue
Block a user