diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2013-10-17 13:02:29 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2013-10-17 13:05:15 +0200 |
commit | ab2c1321776e0b622c5f0747366bb0bfeb163cc5 (patch) | |
tree | 14a7712291fb9885755f5c32eefef75b18426726 | |
parent | 214fc9134176c79c701ce90dc252738d8038e01f (diff) |
writerfilter: fix default numbering style
Change-Id: Ia019c93841043ac5d65e08ad17400acc27f82d6c
-rw-r--r-- | writerfilter/source/dmapper/StyleSheetTable.cxx | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/writerfilter/source/dmapper/StyleSheetTable.cxx b/writerfilter/source/dmapper/StyleSheetTable.cxx index c3fd4a8737a5..ab07e89f07a4 100644 --- a/writerfilter/source/dmapper/StyleSheetTable.cxx +++ b/writerfilter/source/dmapper/StyleSheetTable.cxx @@ -826,6 +826,31 @@ void StyleSheetTable::ApplyStyleSheets( FontTablePtr rFontTable ) rPropNameSupplier.GetName( PROP_SERVICE_PARA_STYLE ) : (bListStyle ? OUString("com.sun.star.style.NumberingStyle") : rPropNameSupplier.GetName( PROP_SERVICE_CHAR_STYLE ))), uno::UNO_QUERY_THROW); + + // Numbering styles have to be inserted early, as e.g. the NumberingRules property is only available after insertion. + if (bListStyle) + { + xStyles->insertByName( sConvertedStyleName, uno::makeAny( xStyle ) ); + xStyle.set(xStyles->getByName(sConvertedStyleName), uno::UNO_QUERY_THROW); + + StyleSheetPropertyMap* pPropertyMap = dynamic_cast<StyleSheetPropertyMap*>(pEntry->pProperties.get()); + if (pPropertyMap->GetListId() == -1) + { + // No properties? Word default is 'none', Writer one is 'arabic', handle this. + uno::Reference<beans::XPropertySet> xPropertySet(xStyle, uno::UNO_QUERY_THROW); + uno::Reference<container::XIndexReplace> xNumberingRules; + xPropertySet->getPropertyValue("NumberingRules") >>= xNumberingRules; + uno::Reference<container::XIndexAccess> xIndexAccess(xNumberingRules, uno::UNO_QUERY_THROW); + for (sal_Int32 i = 0; i < xIndexAccess->getCount(); ++i) + { + uno::Sequence< beans::PropertyValue > aLvlProps(1); + aLvlProps[0].Name = "NumberingType"; + aLvlProps[0].Value <<= style::NumberingType::NUMBER_NONE; + xNumberingRules->replaceByIndex(i, uno::makeAny(aLvlProps)); + xPropertySet->setPropertyValue("NumberingRules", uno::makeAny(xNumberingRules)); + } + } + } } if( !pEntry->sBaseStyleIdentifier.isEmpty() ) { @@ -1015,7 +1040,8 @@ void StyleSheetTable::ApplyStyleSheets( FontTablePtr rFontTable ) OSL_FAIL( "Some style properties could not be set"); } } - if(bInsert) + // Numbering style got inserted earlier. + if(bInsert && !bListStyle) { xStyles->insertByName( sConvertedStyleName, uno::makeAny( xStyle) ); } |