summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--offapi/com/sun/star/text/IllustrationsIndex.idl6
-rw-r--r--offapi/com/sun/star/text/ObjectIndex.idl6
-rw-r--r--offapi/com/sun/star/text/TableIndex.idl6
-rw-r--r--sw/inc/unomap.hxx1
-rw-r--r--sw/inc/unoprnms.hxx1
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx13
-rw-r--r--sw/source/core/unocore/unoidx.cxx41
-rw-r--r--sw/source/core/unocore/unomap.cxx3
-rw-r--r--sw/source/filter/ww8/ww8atr.cxx10
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.cxx6
10 files changed, 92 insertions, 1 deletions
diff --git a/offapi/com/sun/star/text/IllustrationsIndex.idl b/offapi/com/sun/star/text/IllustrationsIndex.idl
index 433d1503bd9b..d58392ded2bc 100644
--- a/offapi/com/sun/star/text/IllustrationsIndex.idl
+++ b/offapi/com/sun/star/text/IllustrationsIndex.idl
@@ -36,6 +36,12 @@ published service IllustrationsIndex
/* determines the way the paragraph containing a label is included in the index.
@see ChapterFormat*/
[optional, property] short LabelDisplayType;//tables, illustrations
+
+ /** determines if paragraphs with one particular style applied are
+ included in the index.
+ @since LibreOffice 7.6
+ */
+ [optional, property, maybevoid] string CreateFromParagraphStyle;
};
diff --git a/offapi/com/sun/star/text/ObjectIndex.idl b/offapi/com/sun/star/text/ObjectIndex.idl
index 2aea50204be2..3df13f2abd63 100644
--- a/offapi/com/sun/star/text/ObjectIndex.idl
+++ b/offapi/com/sun/star/text/ObjectIndex.idl
@@ -45,6 +45,12 @@ published service ObjectIndex
/** Determines if external embedded objects are included in the office.
*/
[optional, property] boolean CreateFromOtherEmbeddedObjects;//objects
+
+ /** determines if paragraphs with one particular style applied are
+ included in the index.
+ @since LibreOffice 7.6
+ */
+ [optional, property, maybevoid] string CreateFromParagraphStyle;
};
diff --git a/offapi/com/sun/star/text/TableIndex.idl b/offapi/com/sun/star/text/TableIndex.idl
index 166748573370..e65f86233111 100644
--- a/offapi/com/sun/star/text/TableIndex.idl
+++ b/offapi/com/sun/star/text/TableIndex.idl
@@ -42,6 +42,12 @@ published service TableIndex
ONLY_CAPTION
*/
[optional, property] short LabelDisplayType;//tables, illustrations
+
+ /** determines if paragraphs with one particular style applied are
+ included in the index.
+ @since LibreOffice 7.6
+ */
+ [optional, property, maybevoid] string CreateFromParagraphStyle;
};
diff --git a/sw/inc/unomap.hxx b/sw/inc/unomap.hxx
index d3cfcb862937..689fa87063a1 100644
--- a/sw/inc/unomap.hxx
+++ b/sw/inc/unomap.hxx
@@ -226,6 +226,7 @@ class SfxItemPropertySet;
#define WID_TOC_BOOKMARK 1061
#define WID_TOC_NEWLINE 1062
#define WID_TOC_PARAGRAPH_OUTLINE_LEVEL 1063
+#define WID_CREATE_FROM_PARAGRAPH_STYLE 1064
// Text document
#define WID_DOC_CHAR_COUNT 1000
diff --git a/sw/inc/unoprnms.hxx b/sw/inc/unoprnms.hxx
index eb70f1d79d8d..dc30938eff21 100644
--- a/sw/inc/unoprnms.hxx
+++ b/sw/inc/unoprnms.hxx
@@ -471,6 +471,7 @@ inline constexpr OUStringLiteral UNO_NAME_CREATE_FROM_OTHER_EMBEDDED_OBJECTS
inline constexpr OUStringLiteral UNO_NAME_INDEX_AUTO_MARK_FILE_U_R_L = u"IndexAutoMarkFileURL";
inline constexpr OUStringLiteral UNO_NAME_IS_COMMA_SEPARATED = u"IsCommaSeparated";
inline constexpr OUStringLiteral UNO_NAME_IS_RELATIVE_TABSTOPS = u"IsRelativeTabstops";
+inline constexpr OUStringLiteral UNO_NAME_CREATE_FROM_PARAGRAPH_STYLE = u"CreateFromParagraphStyle";
inline constexpr OUStringLiteral UNO_NAME_CREATE_FROM_LEVEL_PARAGRAPH_STYLES
= u"CreateFromLevelParagraphStyles";
inline constexpr OUStringLiteral UNO_NAME_SHOW_CHANGES = u"ShowChanges";
diff --git a/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx
index 32c4839e0882..c0578ad31a16 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx
@@ -9,6 +9,7 @@
#include <swmodeltestbase.hxx>
+#include <com/sun/star/text/XDocumentIndex.hpp>
#include <com/sun/star/text/XTextFieldsSupplier.hpp>
#include <com/sun/star/text/XTextField.hpp>
#include <com/sun/star/text/XTextTable.hpp>
@@ -165,7 +166,17 @@ CPPUNIT_TEST_FIXTURE(Test, testFDO77715)
loadAndReload("FDO77715.docx");
xmlDocUniquePtr pXmlDoc = parseExport("word/document.xml");
- assertXPathContent(pXmlDoc, "/w:document/w:body/w:p[3]/w:r[2]/w:instrText[1]", " TOC \\c \\h ");
+ // tdf#153090 check that para style is preserved
+ assertXPathContent(pXmlDoc, "/w:document/w:body/w:p[3]/w:r[2]/w:instrText[1]", " TOC \\c \\h \\t \"Block Header\" ");
+
+ uno::Reference<text::XDocumentIndexesSupplier> xIndexSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xIndexes = xIndexSupplier->getDocumentIndexes();
+ uno::Reference<text::XDocumentIndex> xTOC(xIndexes->getByIndex(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Block Header"), getProperty<OUString>(xTOC, "CreateFromParagraphStyle"));
+ // tdf#153090 check that update uses the style
+ xTOC->update();
+ OUString const tocContent(xTOC->getAnchor()->getString());
+ CPPUNIT_ASSERT(tocContent.startsWith("National Infrastructure Bank Aff/Neg Index"));
}
CPPUNIT_TEST_FIXTURE(Test, testTOCFlag_u)
diff --git a/sw/source/core/unocore/unoidx.cxx b/sw/source/core/unocore/unoidx.cxx
index dd123d618267..5e98a98a45cc 100644
--- a/sw/source/core/unocore/unoidx.cxx
+++ b/sw/source/core/unocore/unoidx.cxx
@@ -780,6 +780,30 @@ SwXDocumentIndex::setPropertyValue(
case WID_CREATE_FROM_PARAGRAPH_STYLES:
lcl_AnyToBitMask(rValue, nCreate, SwTOXElement::Template);
break;
+ case WID_CREATE_FROM_PARAGRAPH_STYLE:
+ {
+ OUString style;
+ if (rValue >>= style)
+ {
+ if (style.indexOf(TOX_STYLE_DELIMITER) != -1)
+ {
+ throw lang::IllegalArgumentException();
+ }
+ lcl_AnyToBitMask(uno::Any(true), nCreate, SwTOXElement::Template);
+ OUString uiStyle;
+ SwStyleNameMapper::FillUIName(style, uiStyle, SwGetPoolIdFromName::TxtColl);
+ rTOXBase.SetStyleNames(uiStyle, 0);
+ }
+ else if (!rValue.hasValue())
+ {
+ lcl_AnyToBitMask(uno::Any(false), nCreate, SwTOXElement::Template);
+ }
+ else
+ {
+ throw lang::IllegalArgumentException();
+ }
+ }
+ break;
case WID_PARA_LEV1:
case WID_PARA_LEV2:
@@ -1089,6 +1113,23 @@ SwXDocumentIndex::getPropertyValue(const OUString& rPropertyName)
case WID_CREATE_FROM_PARAGRAPH_STYLES:
lcl_BitMaskToAny(aRet, nCreate, SwTOXElement::Template);
break;
+ case WID_CREATE_FROM_PARAGRAPH_STYLE:
+ {
+ if (nCreate & SwTOXElement::Template)
+ { // there is only one style, at top level
+ OUString const& rStyle(pTOXBase->GetStyleNames(0));
+ if (!rStyle.isEmpty())
+ {
+ assert(rStyle.indexOf(TOX_STYLE_DELIMITER) == -1);
+ OUString ret;
+ SwStyleNameMapper::FillProgName(rStyle, ret,
+ SwGetPoolIdFromName::TxtColl);
+ aRet <<= ret;
+ }
+ }
+ }
+ break;
+
case WID_PARA_HEAD:
{
//Header is at position 0
diff --git a/sw/source/core/unocore/unomap.cxx b/sw/source/core/unocore/unomap.cxx
index 92f0d8aea861..f6765dadd4b9 100644
--- a/sw/source/core/unocore/unomap.cxx
+++ b/sw/source/core/unocore/unomap.cxx
@@ -443,6 +443,7 @@ o3tl::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetPropertyM
BASE_INDEX_PROPERTIES_
{ UNO_NAME_CREATE_FROM_CHAPTER, WID_CREATE_FROM_CHAPTER , cppu::UnoType<bool>::get() , PROPERTY_NONE, 0},
{ UNO_NAME_CREATE_FROM_LABELS, WID_CREATE_FROM_LABELS , cppu::UnoType<bool>::get() , PROPERTY_NONE, 0},
+ { UNO_NAME_CREATE_FROM_PARAGRAPH_STYLE, WID_CREATE_FROM_PARAGRAPH_STYLE, cppu::UnoType<OUString>::get(), PropertyAttribute::MAYBEVOID, 0},
{ UNO_NAME_IS_PROTECTED, WID_PROTECTED , cppu::UnoType<bool>::get() , PROPERTY_NONE, 0},
{ UNO_NAME_LABEL_CATEGORY, WID_LABEL_CATEGORY , cppu::UnoType<OUString>::get() , PROPERTY_NONE, 0},
{ UNO_NAME_LABEL_DISPLAY_TYPE, WID_LABEL_DISPLAY_TYPE , cppu::UnoType<sal_Int16>::get() , PROPERTY_NONE, 0},
@@ -475,6 +476,7 @@ o3tl::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetPropertyM
{ UNO_NAME_CREATE_FROM_STAR_CALC, WID_CREATE_FROM_STAR_CALC , cppu::UnoType<bool>::get() , PROPERTY_NONE, 0},
{ UNO_NAME_CREATE_FROM_STAR_DRAW, WID_CREATE_FROM_STAR_DRAW , cppu::UnoType<bool>::get() , PROPERTY_NONE, 0},
{ UNO_NAME_CREATE_FROM_OTHER_EMBEDDED_OBJECTS, WID_CREATE_FROM_OTHER_EMBEDDED_OBJECTS , cppu::UnoType<bool>::get() , PROPERTY_NONE, 0},
+ { UNO_NAME_CREATE_FROM_PARAGRAPH_STYLE, WID_CREATE_FROM_PARAGRAPH_STYLE, cppu::UnoType<OUString>::get(), PropertyAttribute::MAYBEVOID, 0},
{ UNO_NAME_TEXT_COLUMNS, RES_COL, cppu::UnoType<css::text::XTextColumns>::get(), PROPERTY_NONE, MID_COLUMNS},
{ UNO_NAME_BACK_GRAPHIC_URL, RES_BACKGROUND, cppu::UnoType<OUString>::get(), PROPERTY_NONE ,MID_GRAPHIC_URL },
{ UNO_NAME_BACK_GRAPHIC, RES_BACKGROUND, cppu::UnoType<graphic::XGraphic>::get(), PROPERTY_NONE, MID_GRAPHIC },
@@ -496,6 +498,7 @@ o3tl::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetPropertyM
BASE_INDEX_PROPERTIES_
{ UNO_NAME_CREATE_FROM_CHAPTER, WID_CREATE_FROM_CHAPTER , cppu::UnoType<bool>::get() , PROPERTY_NONE, 0},
{ UNO_NAME_CREATE_FROM_LABELS, WID_CREATE_FROM_LABELS , cppu::UnoType<bool>::get() , PROPERTY_NONE, 0},
+ { UNO_NAME_CREATE_FROM_PARAGRAPH_STYLE, WID_CREATE_FROM_PARAGRAPH_STYLE, cppu::UnoType<OUString>::get(), PropertyAttribute::MAYBEVOID, 0},
{ UNO_NAME_IS_PROTECTED, WID_PROTECTED , cppu::UnoType<bool>::get() , PROPERTY_NONE, 0},
{ UNO_NAME_USE_ALPHABETICAL_SEPARATORS, WID_USE_ALPHABETICAL_SEPARATORS , cppu::UnoType<bool>::get() , PROPERTY_NONE, 0},
{ UNO_NAME_LABEL_CATEGORY, WID_LABEL_CATEGORY , cppu::UnoType<OUString>::get() , PROPERTY_NONE, 0},
diff --git a/sw/source/filter/ww8/ww8atr.cxx b/sw/source/filter/ww8/ww8atr.cxx
index 49ffa1eb1a98..68fb57f4ce26 100644
--- a/sw/source/filter/ww8/ww8atr.cxx
+++ b/sw/source/filter/ww8/ww8atr.cxx
@@ -2368,6 +2368,16 @@ void AttributeOutputBase::StartTOX( const SwSection& rSect )
{
sStr += "\\h ";
}
+ if (pTOX->GetCreateType() & SwTOXElement::Template)
+ {
+ OUString const& rStyle(pTOX->GetStyleNames(0));
+ assert(rStyle.indexOf(TOX_STYLE_DELIMITER) == -1);
+ SwTextFormatColl const*const pColl = GetExport().m_rDoc.FindTextFormatCollByName(rStyle);
+ if (pColl)
+ {
+ sStr += "\\t \"" + rStyle + sEntryEnd;
+ }
+ }
break;
case TOX_AUTHORITIES:
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index b849f453034c..604e067aab8e 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -6342,6 +6342,12 @@ void DomainMapper_Impl::handleToc
xTOC->setPropertyValue(getPropertyName(PROP_LABEL_CATEGORY),
uno::Any(sFigureSequence));
+ if (!sTemplate.isEmpty())
+ {
+ OUString const sConvertedStyleName(GetStyleSheetTable()->ConvertStyleName(sTemplate, true));
+ xTOC->setPropertyValue("CreateFromParagraphStyle", uno::Any(sConvertedStyleName));
+ }
+
if ( bHyperlinks )
{
uno::Reference< container::XIndexReplace> xLevelFormats;