summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2024-04-24 16:39:23 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2024-04-28 22:26:51 +0200
commit0cfaf93bf5c6e4e505b45f5e4fbac54edd77ddd6 (patch)
treee9430dfb51aa37aa54e89383e591a4cf402b1c5a
parent2ccf6f2a203a5a215f7a1e4d097cc08a73d22f2c (diff)
use more concrete UNO classes in writerfilter (SwXStyle)
Change-Id: I12b41369ee65f46e08494acda0435f767e28f290 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166804 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
-rw-r--r--sw/inc/coreframestyle.hxx37
-rw-r--r--sw/inc/unostyle.hxx26
-rw-r--r--sw/inc/unotxdoc.hxx4
-rw-r--r--sw/inc/unoxstyle.hxx231
-rw-r--r--sw/source/core/unocore/unostyle.cxx306
-rw-r--r--sw/source/uibase/uno/unotxdoc.cxx15
-rw-r--r--sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx3
-rw-r--r--sw/source/writerfilter/dmapper/NumberingManager.cxx27
-rw-r--r--sw/source/writerfilter/dmapper/NumberingManager.hxx6
-rw-r--r--sw/source/writerfilter/dmapper/PropertyMap.cxx20
-rw-r--r--sw/source/writerfilter/dmapper/PropertyMap.hxx5
11 files changed, 435 insertions, 245 deletions
diff --git a/sw/inc/coreframestyle.hxx b/sw/inc/coreframestyle.hxx
new file mode 100644
index 000000000000..07d5ab5e33c2
--- /dev/null
+++ b/sw/inc/coreframestyle.hxx
@@ -0,0 +1,37 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+#pragma once
+
+#include <com/sun/star/document/XEventsSupplier.hpp>
+
+class SfxPoolItem;
+
+namespace sw
+{
+class ICoreFrameStyle
+{
+public:
+ virtual void SetItem(sal_uInt16 eAtr, const SfxPoolItem& rItem) = 0;
+ virtual const SfxPoolItem* GetItem(sal_uInt16 eAtr) = 0;
+ virtual css::document::XEventsSupplier& GetEventsSupplier() = 0;
+ virtual ~ICoreFrameStyle(){};
+};
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/inc/unostyle.hxx b/sw/inc/unostyle.hxx
index bcd2c96aba6a..77c2cc8856c0 100644
--- a/sw/inc/unostyle.hxx
+++ b/sw/inc/unostyle.hxx
@@ -34,6 +34,7 @@
#include <com/sun/star/style/XAutoStyles.hpp>
#include <com/sun/star/style/XAutoStyle.hpp>
+#include "coreframestyle.hxx"
#include "istyleaccess.hxx"
#include <memory>
#include <map>
@@ -43,6 +44,10 @@ namespace com::sun::star::document { class XEventsSupplier; }
class SwDocShell;
class SwAutoStylesEnumImpl;
class SfxItemSet;
+class SwXStyle;
+class SwXTextCellStyle;
+class SwXPageStyle;
+class SwXFrameStyle;
class SwXStyleFamilies final : public cppu::WeakImplHelper
<
@@ -84,23 +89,16 @@ public:
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override;
static css::uno::Reference<css::style::XStyle> CreateStyle(SfxStyleFamily eFamily, SwDoc& rDoc);
+ static rtl::Reference<SwXStyle> CreateStyleCharOrParaOrPseudo(SfxStyleFamily eFamily, SwDoc& rDoc);
+ static rtl::Reference<SwXPageStyle> CreateStylePage(SwDoc& rDoc);
+ static rtl::Reference<SwXFrameStyle> CreateStyleFrame(SwDoc& rDoc);
+ static rtl::Reference<SwXTextTableStyle> CreateStyleTable(SwDoc& rDoc);
+ static rtl::Reference<SwXTextCellStyle> CreateStyleCell(SwDoc& rDoc);
// FIXME: This is very ugly as is the whole conditional paragraph style
// hackety. Should be folded into CreateStyle hopefully one day
static css::uno::Reference<css::style::XStyle> CreateStyleCondParagraph(SwDoc& rDoc);
};
-namespace sw
-{
- class ICoreFrameStyle
- {
- public:
- virtual void SetItem(sal_uInt16 eAtr, const SfxPoolItem& rItem) =0;
- virtual const SfxPoolItem* GetItem(sal_uInt16 eAtr) =0;
- virtual css::document::XEventsSupplier& GetEventsSupplier() =0;
- virtual ~ICoreFrameStyle() {};
- };
-}
-
// access to all automatic style families
class SwXAutoStyles final :
public cppu::WeakImplHelper< css::style::XAutoStyles >,
@@ -318,7 +316,7 @@ public:
virtual sal_Bool SAL_CALL supportsService(const OUString& rServiceName) override;
virtual css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override;
- static css::uno::Reference<css::style::XStyle> CreateXTextTableStyle(SwDocShell* pDocShell, const OUString& rTableAutoFormatName);
+ static rtl::Reference<SwXTextTableStyle> CreateXTextTableStyle(SwDocShell* pDocShell, const OUString& rTableAutoFormatName);
};
/// A text cell style is a UNO API wrapper for a SwBoxAutoFormat core class
@@ -389,7 +387,7 @@ class SwXTextCellStyle final : public cppu::WeakImplHelper
virtual sal_Bool SAL_CALL supportsService(const OUString& rServiceName) override;
virtual css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override;
- static css::uno::Reference<css::style::XStyle> CreateXTextCellStyle(SwDocShell* pDocShell, const OUString& sName);
+ static rtl::Reference<SwXTextCellStyle> CreateXTextCellStyle(SwDocShell* pDocShell, const OUString& sName);
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/inc/unotxdoc.hxx b/sw/inc/unotxdoc.hxx
index d84561244258..4651ccaee190 100644
--- a/sw/inc/unotxdoc.hxx
+++ b/sw/inc/unotxdoc.hxx
@@ -96,6 +96,7 @@ class SwXFootnotes;
class SwXContentControls;
class SwXDocumentIndexes;
class SwXStyleFamilies;
+class SwXStyle;
class SwXAutoStyles;
class SwXBookmarks;
class SwXChapterNumbering;
@@ -113,6 +114,7 @@ class SwXTextField;
class SwXLineBreak;
class SwXTextFrame;
class SwXTextGraphicObject;
+class SwXPageStyle;
namespace com::sun::star::container { class XNameContainer; }
namespace com::sun::star::frame { class XController; }
namespace com::sun::star::lang { struct Locale; }
@@ -524,6 +526,8 @@ public:
SW_DLLPUBLIC rtl::Reference<SwXLineBreak> createLineBreak();
SW_DLLPUBLIC rtl::Reference<SwXTextFrame> createTextFrame();
SW_DLLPUBLIC rtl::Reference<SwXTextGraphicObject> createTextGraphicObject();
+ SW_DLLPUBLIC rtl::Reference<SwXStyle> createNumberingStyle();
+ SW_DLLPUBLIC rtl::Reference<SwXPageStyle> createPageStyle();
};
class SwXLinkTargetSupplier final : public cppu::WeakImplHelper
diff --git a/sw/inc/unoxstyle.hxx b/sw/inc/unoxstyle.hxx
new file mode 100644
index 000000000000..3a57b5b2087e
--- /dev/null
+++ b/sw/inc/unoxstyle.hxx
@@ -0,0 +1,231 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+#pragma once
+
+#include <rtl/ref.hxx>
+#include <svl/listener.hxx>
+#include <svl/style.hxx>
+#include <com/sun/star/style/XStyle.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/beans/XMultiPropertySet.hpp>
+#include <com/sun/star/beans/XMultiPropertyStates.hpp>
+#include <cppuhelper/implbase.hxx>
+#include "coreframestyle.hxx"
+
+class StyleFamilyEntry;
+class SwStyleBase_Impl;
+class SwStyleProperties_Impl;
+class SvxSetItem;
+struct SfxItemPropertyMapEntry;
+
+class SAL_DLLPUBLIC_RTTI SwXStyle
+ : public cppu::WeakImplHelper<css::style::XStyle, css::beans::XPropertySet,
+ css::beans::XMultiPropertySet, css::lang::XServiceInfo,
+ css::lang::XUnoTunnel, css::beans::XPropertyState,
+ css::beans::XMultiPropertyStates>,
+ public SfxListener,
+ public SvtListener
+{
+ SwDoc* m_pDoc;
+ OUString m_sStyleName;
+ const StyleFamilyEntry& m_rEntry;
+ bool m_bIsDescriptor;
+ bool m_bIsConditional;
+ OUString m_sParentStyleName;
+
+protected:
+ SfxStyleSheetBasePool* m_pBasePool;
+ std::unique_ptr<SwStyleProperties_Impl> m_pPropertiesImpl;
+ css::uno::Reference<css::container::XNameAccess> m_xStyleFamily;
+ css::uno::Reference<css::beans::XPropertySet> m_xStyleData;
+
+ template <sal_uInt16>
+ void SetPropertyValue(const SfxItemPropertyMapEntry&, const SfxItemPropertySet&,
+ const css::uno::Any&, SwStyleBase_Impl&);
+ void SetPropertyValues_Impl(const css::uno::Sequence<OUString>& aPropertyNames,
+ const css::uno::Sequence<css::uno::Any>& aValues);
+ SfxStyleSheetBase* GetStyleSheetBase();
+ void PrepareStyleBase(SwStyleBase_Impl& rBase);
+ template <sal_uInt16>
+ css::uno::Any GetStyleProperty(const SfxItemPropertyMapEntry& rEntry,
+ const SfxItemPropertySet& rPropSet, SwStyleBase_Impl& rBase);
+ css::uno::Any GetStyleProperty_Impl(const SfxItemPropertyMapEntry& rEntry,
+ const SfxItemPropertySet& rPropSet,
+ SwStyleBase_Impl& rBase);
+ css::uno::Any GetPropertyValue_Impl(const SfxItemPropertySet* pPropSet, SwStyleBase_Impl& rBase,
+ const OUString& rPropertyName);
+
+public:
+ SwXStyle(SwDoc* pDoc, SfxStyleFamily eFam, bool bConditional = false);
+ SwXStyle(SfxStyleSheetBasePool* pPool, SfxStyleFamily eFamily, SwDoc* pDoc,
+ const OUString& rStyleName);
+ virtual ~SwXStyle() override;
+
+ static const css::uno::Sequence<sal_Int8>& getUnoTunnelId();
+
+ //XUnoTunnel
+ virtual sal_Int64 SAL_CALL
+ getSomething(const css::uno::Sequence<sal_Int8>& aIdentifier) override;
+
+ //XNamed
+ virtual OUString SAL_CALL getName() override;
+ virtual void SAL_CALL setName(const OUString& Name_) override;
+
+ //XStyle
+ virtual sal_Bool SAL_CALL isUserDefined() override;
+ virtual sal_Bool SAL_CALL isInUse() override;
+ virtual OUString SAL_CALL getParentStyle() override;
+ virtual void SAL_CALL setParentStyle(const OUString& aParentStyle) override;
+
+ //XPropertySet
+ virtual css::uno::Reference<css::beans::XPropertySetInfo>
+ SAL_CALL getPropertySetInfo() override;
+ virtual void SAL_CALL setPropertyValue(const OUString& aPropertyName,
+ const css::uno::Any& aValue) override;
+ virtual css::uno::Any SAL_CALL getPropertyValue(const OUString& PropertyName) override;
+ virtual void SAL_CALL addPropertyChangeListener(
+ const OUString&, const css::uno::Reference<css::beans::XPropertyChangeListener>&) override
+ {
+ OSL_FAIL("not implemented");
+ };
+ virtual void SAL_CALL removePropertyChangeListener(
+ const OUString&, const css::uno::Reference<css::beans::XPropertyChangeListener>&) override
+ {
+ OSL_FAIL("not implemented");
+ };
+ virtual void SAL_CALL addVetoableChangeListener(
+ const OUString&, const css::uno::Reference<css::beans::XVetoableChangeListener>&) override
+ {
+ OSL_FAIL("not implemented");
+ };
+ virtual void SAL_CALL removeVetoableChangeListener(
+ const OUString&, const css::uno::Reference<css::beans::XVetoableChangeListener>&) override
+ {
+ OSL_FAIL("not implemented");
+ };
+
+ //XMultiPropertySet
+ virtual void SAL_CALL
+ setPropertyValues(const css::uno::Sequence<OUString>& aPropertyNames,
+ const css::uno::Sequence<css::uno::Any>& aValues) override;
+ virtual css::uno::Sequence<css::uno::Any>
+ SAL_CALL getPropertyValues(const css::uno::Sequence<OUString>& aPropertyNames) override;
+ virtual void SAL_CALL addPropertiesChangeListener(
+ const css::uno::Sequence<OUString>&,
+ const css::uno::Reference<css::beans::XPropertiesChangeListener>&) override{};
+ virtual void SAL_CALL removePropertiesChangeListener(
+ const css::uno::Reference<css::beans::XPropertiesChangeListener>&) override{};
+ virtual void SAL_CALL firePropertiesChangeEvent(
+ const css::uno::Sequence<OUString>&,
+ const css::uno::Reference<css::beans::XPropertiesChangeListener>&) override{};
+
+ //XPropertyState
+ virtual css::beans::PropertyState SAL_CALL
+ getPropertyState(const OUString& PropertyName) override;
+ virtual css::uno::Sequence<css::beans::PropertyState>
+ SAL_CALL getPropertyStates(const css::uno::Sequence<OUString>& aPropertyName) override;
+ virtual void SAL_CALL setPropertyToDefault(const OUString& PropertyName) override;
+ virtual css::uno::Any SAL_CALL getPropertyDefault(const OUString& aPropertyName) override;
+
+ //XMultiPropertyStates
+ virtual void SAL_CALL setAllPropertiesToDefault() override;
+ virtual void SAL_CALL
+ setPropertiesToDefault(const css::uno::Sequence<OUString>& aPropertyNames) override;
+ virtual css::uno::Sequence<css::uno::Any>
+ SAL_CALL getPropertyDefaults(const css::uno::Sequence<OUString>& aPropertyNames) override;
+
+ //XServiceInfo
+ virtual OUString SAL_CALL getImplementationName() override;
+ virtual sal_Bool SAL_CALL supportsService(const OUString& rServiceName) override;
+ virtual css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override;
+
+ //SfxListener
+ virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint) override;
+ //SvtListener
+ virtual void Notify(const SfxHint&) override;
+ const OUString& GetStyleName() const { return m_sStyleName; }
+ SfxStyleFamily GetFamily() const;
+
+ bool IsDescriptor() const { return m_bIsDescriptor; }
+ bool IsConditional() const { return m_bIsConditional; }
+ const OUString& GetParentStyleName() const { return m_sParentStyleName; }
+ void SetDoc(SwDoc* pDc, SfxStyleSheetBasePool* pPool)
+ {
+ m_bIsDescriptor = false;
+ m_pDoc = pDc;
+ m_pBasePool = pPool;
+ SfxListener::StartListening(*m_pBasePool);
+ }
+ SwDoc* GetDoc() const { return m_pDoc; }
+ void Invalidate();
+ void ApplyDescriptorProperties();
+ void SetStyleName(const OUString& rSet) { m_sStyleName = rSet; }
+ /// @throws beans::PropertyVetoException
+ /// @throws lang::IllegalArgumentException
+ /// @throws lang::WrappedTargetException
+ /// @throws uno::RuntimeException
+ void SetStyleProperty(const SfxItemPropertyMapEntry& rEntry, const SfxItemPropertySet& rPropSet,
+ const css::uno::Any& rValue, SwStyleBase_Impl& rBase);
+ void PutItemToSet(const SvxSetItem* pSetItem, const SfxItemPropertySet& rPropSet,
+ const SfxItemPropertyMapEntry& rEntry, const css::uno::Any& rVal,
+ SwStyleBase_Impl& rBaseImpl);
+};
+
+typedef cppu::ImplInheritanceHelper<SwXStyle, css::document::XEventsSupplier> SwXFrameStyle_Base;
+class SwXFrameStyle : public SwXFrameStyle_Base, public sw::ICoreFrameStyle
+{
+public:
+ SwXFrameStyle(SfxStyleSheetBasePool& rPool, SwDoc* pDoc, const OUString& rStyleName)
+ : SwXFrameStyle_Base(&rPool, SfxStyleFamily::Frame, pDoc, rStyleName)
+ {
+ }
+ explicit SwXFrameStyle(SwDoc* pDoc);
+
+ virtual css::uno::Reference<css::container::XNameReplace> SAL_CALL getEvents() override;
+
+ //ICoreStyle
+ virtual void SetItem(sal_uInt16 eAtr, const SfxPoolItem& rItem) override;
+ virtual const SfxPoolItem* GetItem(sal_uInt16 eAtr) override;
+ virtual css::document::XEventsSupplier& GetEventsSupplier() override { return *this; };
+};
+
+class SAL_DLLPUBLIC_RTTI SwXPageStyle : public SwXStyle
+{
+protected:
+ void SetPropertyValues_Impl(const css::uno::Sequence<OUString>& aPropertyNames,
+ const css::uno::Sequence<css::uno::Any>& aValues);
+ css::uno::Sequence<css::uno::Any>
+ GetPropertyValues_Impl(const css::uno::Sequence<OUString>& aPropertyNames);
+
+public:
+ SwXPageStyle(SfxStyleSheetBasePool& rPool, SwDocShell* pDocSh, const OUString& rStyleName);
+ explicit SwXPageStyle(SwDocShell* pDocSh);
+
+ virtual void SAL_CALL setPropertyValue(const OUString& aPropertyName,
+ const css::uno::Any& aValue) override;
+ virtual css::uno::Any SAL_CALL getPropertyValue(const OUString& PropertyName) override;
+
+ virtual void SAL_CALL
+ setPropertyValues(const css::uno::Sequence<OUString>& aPropertyNames,
+ const css::uno::Sequence<css::uno::Any>& aValues) override;
+ virtual css::uno::Sequence<css::uno::Any>
+ SAL_CALL getPropertyValues(const css::uno::Sequence<OUString>& aPropertyNames) override;
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/core/unocore/unostyle.cxx b/sw/source/core/unocore/unostyle.cxx
index 80fda01afe80..3b5249efa8f8 100644
--- a/sw/source/core/unocore/unostyle.cxx
+++ b/sw/source/core/unocore/unostyle.cxx
@@ -117,6 +117,7 @@
#include <ccoll.hxx>
#include <hints.hxx>
#include <uiitems.hxx>
+#include <unoxstyle.hxx>
#include <cassert>
#include <memory>
@@ -172,12 +173,14 @@ constexpr ParagraphStyleCategoryEntry sParagraphStyleCategoryEntries[]
{ style::ParagraphStyleCategory::HTML, SfxStyleSearchBits::SwHtml, COLL_HTML_BITS }
};
+} // namespace anonymous
+
class StyleFamilyEntry
{
public:
template <SfxStyleFamily f> static StyleFamilyEntry Create(sal_uInt16 nPropMapType, SwGetPoolIdFromName aPoolId, OUString sName, TranslateId pResId)
{
- return StyleFamilyEntry(f, nPropMapType, aPoolId, sName, pResId, GetCountOrName<f>, CreateStyle<f>, TranslateIndex<f>);
+ return StyleFamilyEntry(f, nPropMapType, aPoolId, sName, pResId, GetCountOrName<f>, TranslateIndex<f>);
}
SfxStyleFamily family() const { return m_eFamily; }
@@ -188,12 +191,10 @@ public:
const TranslateId& resId() const { return m_pResId; }
sal_Int32 getCountOrName(const SwDoc& rDoc, OUString* pString, sal_Int32 nIndex) const { return m_fGetCountOrName(rDoc, pString, nIndex); }
- css::uno::Reference<css::style::XStyle> createStyle(SfxStyleSheetBasePool* pBasePool, SwDocShell* pDocShell, const OUString& sStyleName) const { return m_fCreateStyle(pBasePool, pDocShell, sStyleName); }
sal_uInt16 translateIndex(const sal_uInt16 nIndex) const { return m_fTranslateIndex(nIndex); }
private:
using GetCountOrName_t = sal_Int32 (*)(const SwDoc&, OUString*, sal_Int32);
- using CreateStyle_t = uno::Reference<css::style::XStyle>(*)(SfxStyleSheetBasePool*, SwDocShell*, const OUString&);
using TranslateIndex_t = sal_uInt16(*)(const sal_uInt16);
SfxStyleFamily m_eFamily;
sal_uInt16 m_nPropMapType;
@@ -202,9 +203,8 @@ private:
OUString m_sName;
TranslateId m_pResId;
GetCountOrName_t m_fGetCountOrName;
- CreateStyle_t m_fCreateStyle;
TranslateIndex_t m_fTranslateIndex;
- StyleFamilyEntry(SfxStyleFamily eFamily, sal_uInt16 nPropMapType, SwGetPoolIdFromName aPoolId, OUString sName, TranslateId pResId, GetCountOrName_t fGetCountOrName, CreateStyle_t fCreateStyle, TranslateIndex_t fTranslateIndex)
+ StyleFamilyEntry(SfxStyleFamily eFamily, sal_uInt16 nPropMapType, SwGetPoolIdFromName aPoolId, OUString sName, TranslateId pResId, GetCountOrName_t fGetCountOrName, TranslateIndex_t fTranslateIndex)
: m_eFamily(eFamily)
, m_nPropMapType(nPropMapType)
, m_xPSInfo(aSwMapProvider.GetPropertySet(nPropMapType)->getPropertySetInfo())
@@ -212,11 +212,9 @@ private:
, m_sName(std::move(sName))
, m_pResId(pResId)
, m_fGetCountOrName(fGetCountOrName)
- , m_fCreateStyle(fCreateStyle)
, m_fTranslateIndex(fTranslateIndex)
{ }
template<SfxStyleFamily> static inline sal_Int32 GetCountOrName(const SwDoc& rDoc, OUString* pString, sal_Int32 nIndex);
- template<SfxStyleFamily> static inline css::uno::Reference<css::style::XStyle> CreateStyle(SfxStyleSheetBasePool* pBasePool, SwDocShell* pDocShell, const OUString& sStyleName);
template<SfxStyleFamily> static inline sal_uInt16 TranslateIndex(const sal_uInt16 nIndex) { return nIndex; }
};
@@ -423,7 +421,7 @@ sal_uInt16 StyleFamilyEntry::TranslateIndex<SfxStyleFamily::Pseudo>(const sal_uI
throw lang::IndexOutOfBoundsException();
}
-const std::vector<StyleFamilyEntry>& lcl_GetStyleFamilyEntries()
+static const std::vector<StyleFamilyEntry>& lcl_GetStyleFamilyEntries()
{
static const std::vector<StyleFamilyEntry> our_pStyleFamilyEntries{
StyleFamilyEntry::Create<SfxStyleFamily::Char> (PROPERTY_MAP_CHAR_STYLE, SwGetPoolIdFromName::ChrFmt, "CharacterStyles", STR_STYLE_FAMILY_CHARACTER),
@@ -502,171 +500,17 @@ public:
};
};
-class SwStyleProperties_Impl;
-class SwXStyle : public cppu::WeakImplHelper
- <
- css::style::XStyle,
- css::beans::XPropertySet,
- css::beans::XMultiPropertySet,
- css::lang::XServiceInfo,
- css::lang::XUnoTunnel,
- css::beans::XPropertyState,
- css::beans::XMultiPropertyStates
- >
- , public SfxListener
- , public SvtListener
-{
- SwDoc* m_pDoc;
- OUString m_sStyleName;
- const StyleFamilyEntry& m_rEntry;
- bool m_bIsDescriptor;
- bool m_bIsConditional;
- OUString m_sParentStyleName;
-
-protected:
- SfxStyleSheetBasePool* m_pBasePool;
- std::unique_ptr<SwStyleProperties_Impl> m_pPropertiesImpl;
- css::uno::Reference<css::container::XNameAccess> m_xStyleFamily;
- css::uno::Reference<css::beans::XPropertySet> m_xStyleData;
-
- template<sal_uInt16>
- void SetPropertyValue(const SfxItemPropertyMapEntry&, const SfxItemPropertySet&, const uno::Any&, SwStyleBase_Impl&);
- void SetPropertyValues_Impl( const css::uno::Sequence< OUString >& aPropertyNames, const css::uno::Sequence< css::uno::Any >& aValues );
- SfxStyleSheetBase* GetStyleSheetBase();
- void PrepareStyleBase(SwStyleBase_Impl& rBase);
- template<sal_uInt16>
- uno::Any GetStyleProperty(const SfxItemPropertyMapEntry& rEntry, const SfxItemPropertySet& rPropSet, SwStyleBase_Impl& rBase);
- uno::Any GetStyleProperty_Impl(const SfxItemPropertyMapEntry& rEntry, const SfxItemPropertySet& rPropSet, SwStyleBase_Impl& rBase);
- uno::Any GetPropertyValue_Impl(const SfxItemPropertySet* pPropSet, SwStyleBase_Impl& rBase, const OUString& rPropertyName);
-
-public:
- SwXStyle(SwDoc* pDoc, SfxStyleFamily eFam, bool bConditional = false);
- SwXStyle(SfxStyleSheetBasePool* pPool, SfxStyleFamily eFamily, SwDoc* pDoc, const OUString& rStyleName);
- virtual ~SwXStyle() override;
-
-
- static const css::uno::Sequence< sal_Int8 > & getUnoTunnelId();
- //XUnoTunnel
- virtual sal_Int64 SAL_CALL getSomething( const css::uno::Sequence< sal_Int8 >& aIdentifier ) override;
+SfxStyleFamily SwXStyle::GetFamily() const
+{return m_rEntry.family();}
- //XNamed
- virtual OUString SAL_CALL getName() override;
- virtual void SAL_CALL setName(const OUString& Name_) override;
+OUString SwXStyle::getImplementationName()
+{ return {"SwXStyle"}; };
- //XStyle
- virtual sal_Bool SAL_CALL isUserDefined() override;
- virtual sal_Bool SAL_CALL isInUse() override;
- virtual OUString SAL_CALL getParentStyle() override;
- virtual void SAL_CALL setParentStyle(const OUString& aParentStyle) override;
-
- //XPropertySet
- virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override;
- virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, const css::uno::Any& aValue ) override;
- virtual css::uno::Any SAL_CALL getPropertyValue( const OUString& PropertyName ) override;
- virtual void SAL_CALL addPropertyChangeListener( const OUString&, const css::uno::Reference< css::beans::XPropertyChangeListener >& ) override
- { OSL_FAIL("not implemented"); };
- virtual void SAL_CALL removePropertyChangeListener( const OUString&, const css::uno::Reference< css::beans::XPropertyChangeListener >& ) override
- { OSL_FAIL("not implemented"); };
- virtual void SAL_CALL addVetoableChangeListener( const OUString&, const css::uno::Reference< css::beans::XVetoableChangeListener >& ) override
- { OSL_FAIL("not implemented"); };
- virtual void SAL_CALL removeVetoableChangeListener( const OUString&, const css::uno::Reference< css::beans::XVetoableChangeListener >& ) override
- { OSL_FAIL("not implemented"); };
-
- //XMultiPropertySet
- virtual void SAL_CALL setPropertyValues( const css::uno::Sequence< OUString >& aPropertyNames, const css::uno::Sequence< css::uno::Any >& aValues ) override;
- virtual css::uno::Sequence< css::uno::Any > SAL_CALL getPropertyValues( const css::uno::Sequence< OUString >& aPropertyNames ) override;
- virtual void SAL_CALL addPropertiesChangeListener( const css::uno::Sequence< OUString >&, const css::uno::Reference< css::beans::XPropertiesChangeListener >& ) override
- {};
- virtual void SAL_CALL removePropertiesChangeListener( const css::uno::Reference< css::beans::XPropertiesChangeListener >& ) override
- {};
- virtual void SAL_CALL firePropertiesChangeEvent( const css::uno::Sequence< OUString >&, const css::uno::Reference< css::beans::XPropertiesChangeListener >& ) override
- {};
-
- //XPropertyState
- virtual css::beans::PropertyState SAL_CALL getPropertyState( const OUString& PropertyName ) override;
- virtual css::uno::Sequence< css::beans::PropertyState > SAL_CALL getPropertyStates( const css::uno::Sequence< OUString >& aPropertyName ) override;
- virtual void SAL_CALL setPropertyToDefault( const OUString& PropertyName ) override;
- virtual css::uno::Any SAL_CALL getPropertyDefault( const OUString& aPropertyName ) override;
-
- //XMultiPropertyStates
- virtual void SAL_CALL setAllPropertiesToDefault( ) override;
- virtual void SAL_CALL setPropertiesToDefault( const css::uno::Sequence< OUString >& aPropertyNames ) override;
- virtual css::uno::Sequence< css::uno::Any > SAL_CALL getPropertyDefaults( const css::uno::Sequence< OUString >& aPropertyNames ) override;
+sal_Bool SwXStyle::supportsService(const OUString& rServiceName)
+{ return cppu::supportsService(this, rServiceName); };
- //XServiceInfo
- virtual OUString SAL_CALL getImplementationName() override
- { return {"SwXStyle"}; };
- virtual sal_Bool SAL_CALL supportsService(const OUString& rServiceName) override
- { return cppu::supportsService(this, rServiceName); };
- virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override;
- //SfxListener
- virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override;
- //SvtListener
- virtual void Notify(const SfxHint&) override;
- const OUString& GetStyleName() const { return m_sStyleName;}
- SfxStyleFamily GetFamily() const {return m_rEntry.family();}
-
- bool IsDescriptor() const {return m_bIsDescriptor;}
- bool IsConditional() const { return m_bIsConditional;}
- const OUString& GetParentStyleName() const { return m_sParentStyleName;}
- void SetDoc(SwDoc* pDc, SfxStyleSheetBasePool* pPool)
- {
- m_bIsDescriptor = false; m_pDoc = pDc;
- m_pBasePool = pPool;
- SfxListener::StartListening(*m_pBasePool);
- }
- SwDoc* GetDoc() const { return m_pDoc; }
- void Invalidate();
- void ApplyDescriptorProperties();
- void SetStyleName(const OUString& rSet){ m_sStyleName = rSet;}
- /// @throws beans::PropertyVetoException
- /// @throws lang::IllegalArgumentException
- /// @throws lang::WrappedTargetException
- /// @throws uno::RuntimeException
- void SetStyleProperty(const SfxItemPropertyMapEntry& rEntry, const SfxItemPropertySet& rPropSet, const uno::Any& rValue, SwStyleBase_Impl& rBase);
- void PutItemToSet(const SvxSetItem* pSetItem, const SfxItemPropertySet& rPropSet, const SfxItemPropertyMapEntry& rEntry, const uno::Any& rVal, SwStyleBase_Impl& rBaseImpl);
-};
-
-typedef cppu::ImplInheritanceHelper< SwXStyle, css::document::XEventsSupplier> SwXFrameStyle_Base;
-class SwXFrameStyle
- : public SwXFrameStyle_Base
- , public sw::ICoreFrameStyle
-{
-public:
- SwXFrameStyle(SfxStyleSheetBasePool& rPool,
- SwDoc* pDoc,
- const OUString& rStyleName) :
- SwXFrameStyle_Base(&rPool, SfxStyleFamily::Frame, pDoc, rStyleName){}
- explicit SwXFrameStyle(SwDoc *pDoc);
-
- virtual css::uno::Reference< css::container::XNameReplace > SAL_CALL getEvents( ) override;
-
- //ICoreStyle
- virtual void SetItem(sal_uInt16 eAtr, const SfxPoolItem& rItem) override;
- virtual const SfxPoolItem* GetItem(sal_uInt16 eAtr) override;
- virtual css::document::XEventsSupplier& GetEventsSupplier() override
- { return *this; };
-};
-
-class SwXPageStyle
- : public SwXStyle
-{
-protected:
- void SetPropertyValues_Impl( const css::uno::Sequence< OUString >& aPropertyNames, const css::uno::Sequence< css::uno::Any >& aValues );
- css::uno::Sequence< css::uno::Any > GetPropertyValues_Impl( const css::uno::Sequence< OUString >& aPropertyNames );
-
-public:
- SwXPageStyle(SfxStyleSheetBasePool& rPool, SwDocShell* pDocSh, const OUString& rStyleName);
- explicit SwXPageStyle(SwDocShell* pDocSh);
-
- virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, const css::uno::Any& aValue ) override;
- virtual css::uno::Any SAL_CALL getPropertyValue( const OUString& PropertyName ) override;
-
- virtual void SAL_CALL setPropertyValues( const css::uno::Sequence< OUString >& aPropertyNames, const css::uno::Sequence< css::uno::Any >& aValues ) override;
- virtual css::uno::Sequence< css::uno::Any > SAL_CALL getPropertyValues( const css::uno::Sequence< OUString >& aPropertyNames ) override;
-};
class SwStyleProperties_Impl
{
@@ -717,36 +561,33 @@ public:
}
};
-template<SfxStyleFamily eFamily>
-css::uno::Reference<css::style::XStyle> StyleFamilyEntry::CreateStyle(SfxStyleSheetBasePool* pBasePool, SwDocShell* pDocShell, const OUString& sStyleName)
+static rtl::Reference<SwXStyle> CreateStyleCharOrParaOrPseudo(SfxStyleSheetBasePool* pBasePool, SwDocShell* pDocShell, const OUString& sStyleName, SfxStyleFamily eFamily)
{
return pBasePool ? new SwXStyle(pBasePool, eFamily, pDocShell->GetDoc(), sStyleName) : new SwXStyle(pDocShell->GetDoc(), eFamily, false);
}
-template<>
-css::uno::Reference<css::style::XStyle> StyleFamilyEntry::CreateStyle<SfxStyleFamily::Frame>(SfxStyleSheetBasePool* pBasePool, SwDocShell* pDocShell, const OUString& sStyleName)
+static rtl::Reference<SwXFrameStyle> CreateStyleFrame(SfxStyleSheetBasePool* pBasePool, SwDocShell* pDocShell, const OUString& sStyleName)
{
return pBasePool ? new SwXFrameStyle(*pBasePool, pDocShell->GetDoc(), sStyleName) : new SwXFrameStyle(pDocShell->GetDoc());
}
-template<>
-css::uno::Reference<css::style::XStyle> StyleFamilyEntry::CreateStyle<SfxStyleFamily::Page>(SfxStyleSheetBasePool* pBasePool, SwDocShell* pDocShell, const OUString& sStyleName)
+static rtl::Reference<SwXPageStyle> CreateStylePage(SfxStyleSheetBasePool* pBasePool, SwDocShell* pDocShell, const OUString& sStyleName)
{
return pBasePool ? new SwXPageStyle(*pBasePool, pDocShell, sStyleName) : new SwXPageStyle(pDocShell);
}
-template<>
-css::uno::Reference<css::style::XStyle> StyleFamilyEntry::CreateStyle<SfxStyleFamily::Table>(SfxStyleSheetBasePool* /*pBasePool*/, SwDocShell* pDocShell, const OUString& sStyleName)
+static rtl::Reference<SwXTextTableStyle> CreateStyleTable(SwDocShell* pDocShell, const OUString& sStyleName)
{
return SwXTextTableStyle::CreateXTextTableStyle(pDocShell, sStyleName);
}
-template<>
-css::uno::Reference<css::style::XStyle> StyleFamilyEntry::CreateStyle<SfxStyleFamily::Cell>(SfxStyleSheetBasePool* /*pBasePool*/, SwDocShell* pDocShell, const OUString& sStyleName)
+static rtl::Reference<SwXTextCellStyle> CreateStyleCell(SwDocShell* pDocShell, const OUString& sStyleName)
{
return SwXTextCellStyle::CreateXTextCellStyle(pDocShell, sStyleName);
}
+namespace {
+
class XStyleFamily : public cppu::WeakImplHelper
<
container::XNameContainer,
@@ -996,12 +837,51 @@ static bool lcl_GetHeaderFooterItem(
return o_rpItem;
}
-uno::Reference<css::style::XStyle> SwXStyleFamilies::CreateStyle(SfxStyleFamily eFamily, SwDoc& rDoc)
+css::uno::Reference<css::style::XStyle> SwXStyleFamilies::CreateStyle(SfxStyleFamily eFamily, SwDoc& rDoc)
{
- auto& entries(lcl_GetStyleFamilyEntries());
- const auto pEntry = std::find_if(entries.begin(), entries.end(),
- [eFamily] (const StyleFamilyEntry& e) { return e.family() == eFamily; });
- return pEntry == entries.end() ? nullptr : pEntry->createStyle(nullptr, rDoc.GetDocShell(), "");
+ switch (eFamily)
+ {
+ case SfxStyleFamily::Char:
+ case SfxStyleFamily::Para:
+ case SfxStyleFamily::Pseudo:
+ return CreateStyleCharOrParaOrPseudo(eFamily, rDoc);
+ case SfxStyleFamily::Page:
+ return CreateStylePage(rDoc);
+ case SfxStyleFamily::Frame:
+ return CreateStyleFrame(rDoc);
+ case SfxStyleFamily::Table:
+ return CreateStyleTable(rDoc);
+ case SfxStyleFamily::Cell:
+ return CreateStyleCell(rDoc);
+ default:
+ assert(false);
+ return nullptr;
+ }
+}
+
+rtl::Reference<SwXStyle> SwXStyleFamilies::CreateStyleCharOrParaOrPseudo(SfxStyleFamily eFamily, SwDoc& rDoc)
+{
+ return ::CreateStyleCharOrParaOrPseudo(nullptr, rDoc.GetDocShell(), "", eFamily);
+}
+
+rtl::Reference<SwXPageStyle> SwXStyleFamilies::CreateStylePage(SwDoc& rDoc)
+{
+ return ::CreateStylePage(nullptr, rDoc.GetDocShell(), "");
+}
+
+rtl::Reference<SwXFrameStyle> SwXStyleFamilies::CreateStyleFrame(SwDoc& rDoc)
+{
+ return ::CreateStyleFrame(nullptr, rDoc.GetDocShell(), "");
+}
+
+rtl::Reference<SwXTextTableStyle> SwXStyleFamilies::CreateStyleTable(SwDoc& rDoc)
+{
+ return ::CreateStyleTable(rDoc.GetDocShell(), "");
+}
+
+rtl::Reference<SwXTextCellStyle> SwXStyleFamilies::CreateStyleCell(SwDoc& rDoc)
+{
+ return ::CreateStyleCell(rDoc.GetDocShell(), "");
}
// FIXME: Ugly special casing that should die.
@@ -1039,7 +919,28 @@ uno::Any XStyleFamily::getByName(const OUString& rName)
throw container::NoSuchElementException(rName);
uno::Reference<style::XStyle> xStyle = FindStyle(sStyleName);
if(!xStyle.is())
- xStyle = m_rEntry.createStyle(m_pBasePool, m_pDocShell, m_rEntry.family() == SfxStyleFamily::Frame ? pBase->GetName() : sStyleName);
+ switch (m_rEntry.family())
+ {
+ case SfxStyleFamily::Char:
+ case SfxStyleFamily::Para:
+ case SfxStyleFamily::Pseudo:
+ xStyle = ::CreateStyleCharOrParaOrPseudo(m_pBasePool, m_pDocShell, sStyleName, m_rEntry.family());
+ break;
+ case SfxStyleFamily::Page:
+ xStyle = ::CreateStylePage(m_pBasePool, m_pDocShell, sStyleName);
+ break;
+ case SfxStyleFamily::Frame:
+ xStyle = ::CreateStyleFrame(m_pBasePool, m_pDocShell, pBase->GetName());
+ break;
+ case SfxStyleFamily::Table:
+ xStyle = ::CreateStyleTable(m_pDocShell, sStyleName);
+ break;
+ case SfxStyleFamily::Cell:
+ xStyle = ::CreateStyleCell(m_pDocShell, sStyleName);
+ break;
+ default:
+ assert(false);
+ }
return uno::Any(xStyle);
}
@@ -1515,22 +1416,21 @@ void SwXStyle::ApplyDescriptorProperties()
m_pPropertiesImpl->Apply(*this);
}
-namespace {
- const TranslateId STR_POOLPAGE_ARY[] =
- {
- // Page styles
- STR_POOLPAGE_STANDARD,
- STR_POOLPAGE_FIRST,
- STR_POOLPAGE_LEFT,
- STR_POOLPAGE_RIGHT,
- STR_POOLPAGE_ENVELOPE,
- STR_POOLPAGE_REGISTER,
- STR_POOLPAGE_HTML,
- STR_POOLPAGE_FOOTNOTE,
- STR_POOLPAGE_ENDNOTE,
- STR_POOLPAGE_LANDSCAPE
- };
-}
+const TranslateId STR_POOLPAGE_ARY[] =
+{
+ // Page styles
+ STR_POOLPAGE_STANDARD,
+ STR_POOLPAGE_FIRST,
+ STR_POOLPAGE_LEFT,
+ STR_POOLPAGE_RIGHT,
+ STR_POOLPAGE_ENVELOPE,
+ STR_POOLPAGE_REGISTER,
+ STR_POOLPAGE_HTML,
+ STR_POOLPAGE_FOOTNOTE,
+ STR_POOLPAGE_ENDNOTE,
+ STR_POOLPAGE_LANDSCAPE
+};
+
const SwPageDesc* SwStyleBase_Impl::GetOldPageDesc()
{
@@ -1556,7 +1456,6 @@ const SwPageDesc* SwStyleBase_Impl::GetOldPageDesc()
}
-
static sal_uInt8 lcl_TranslateMetric(const SfxItemPropertyMapEntry& rEntry, SwDoc* pDoc, uno::Any& o_aValue)
{
// check for needed metric translation
@@ -1577,6 +1476,7 @@ static sal_uInt8 lcl_TranslateMetric(const SfxItemPropertyMapEntry& rEntry, SwDo
SvxUnoConvertFromMM(eMapUnit, o_aValue);
return rEntry.nMemberId;
}
+
template<>
void SwXStyle::SetPropertyValue<HINT_BEGIN>(const SfxItemPropertyMapEntry& rEntry, const SfxItemPropertySet& /*rPropSet*/, const uno::Any& rValue, SwStyleBase_Impl& o_rStyleBase)
{
@@ -4331,7 +4231,7 @@ SwXTextTableStyle::SwXTextTableStyle(SwDocShell* pDocShell, const OUString& rTab
UpdateCellStylesMapping();
}
-uno::Reference<style::XStyle> SwXTextTableStyle::CreateXTextTableStyle(SwDocShell* pDocShell, const OUString& rTableAutoFormatName)
+rtl::Reference<SwXTextTableStyle> SwXTextTableStyle::CreateXTextTableStyle(SwDocShell* pDocShell, const OUString& rTableAutoFormatName)
{
SolarMutexGuard aGuard;
rtl::Reference<SwXTextTableStyle> xTextTableStyle;
@@ -4743,7 +4643,7 @@ SwBoxAutoFormat* SwXTextCellStyle::GetBoxAutoFormat(SwDocShell* pDocShell, std::
return pBoxAutoFormat;
}
-css::uno::Reference<css::style::XStyle> SwXTextCellStyle::CreateXTextCellStyle(SwDocShell* pDocShell, const OUString& sName)
+rtl::Reference<SwXTextCellStyle> SwXTextCellStyle::CreateXTextCellStyle(SwDocShell* pDocShell, const OUString& sName)
{
rtl::Reference<SwXTextCellStyle> xTextCellStyle;
diff --git a/sw/source/uibase/uno/unotxdoc.cxx b/sw/source/uibase/uno/unotxdoc.cxx
index 2fa09ab06e70..1107072b7c2a 100644
--- a/sw/source/uibase/uno/unotxdoc.cxx
+++ b/sw/source/uibase/uno/unotxdoc.cxx
@@ -179,6 +179,7 @@
#include <unosection.hxx>
#include <unofield.hxx>
#include <unoframe.hxx>
+#include <unoxstyle.hxx>
#include <SwXTextDefaults.hxx>
using namespace ::com::sun::star;
@@ -1720,6 +1721,20 @@ rtl::Reference< SwXTextGraphicObject > SwXTextDocument::createTextGraphicObject(
return SwXTextGraphicObject::CreateXTextGraphicObject(GetDocOrThrow(), nullptr);
}
+rtl::Reference< SwXStyle > SwXTextDocument::createNumberingStyle()
+{
+ SolarMutexGuard aGuard;
+ ThrowIfInvalid();
+ return SwXStyleFamilies::CreateStyleCharOrParaOrPseudo(SfxStyleFamily::Pseudo, GetDocOrThrow());
+}
+
+rtl::Reference< SwXPageStyle > SwXTextDocument::createPageStyle()
+{
+ SolarMutexGuard aGuard;
+ ThrowIfInvalid();
+ return SwXStyleFamilies::CreateStylePage(GetDocOrThrow());
+}
+
Reference< XInterface > SwXTextDocument::createInstance(const OUString& rServiceName)
{
return create(rServiceName, nullptr);
diff --git a/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx b/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx
index ff6bcf342b35..2fe1cde929a4 100644
--- a/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx
+++ b/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx
@@ -139,6 +139,7 @@
#include <unofield.hxx>
#include <unolinebreak.hxx>
#include <unoframe.hxx>
+#include <unoxstyle.hxx>
#define REFFLDFLAG_STYLE_FROM_BOTTOM 0xc100
#define REFFLDFLAG_STYLE_HIDE_NON_NUMERICAL 0xc200
@@ -3819,7 +3820,7 @@ void DomainMapper_Impl::PushPageHeaderFooter(PagePartType ePagePartType, PageTyp
if (!m_bIsNewDoc)
return; // TODO sw cannot Undo insert header/footer without crashing
- uno::Reference<beans::XPropertySet> xPageStyle = pSectionContext->GetPageStyle(*this);
+ rtl::Reference<SwXPageStyle> xPageStyle = pSectionContext->GetPageStyle(*this);
if (!xPageStyle.is())
return;
diff --git a/sw/source/writerfilter/dmapper/NumberingManager.cxx b/sw/source/writerfilter/dmapper/NumberingManager.cxx
index ec8e1be07c7f..3b72a2008709 100644
--- a/sw/source/writerfilter/dmapper/NumberingManager.cxx
+++ b/sw/source/writerfilter/dmapper/NumberingManager.cxx
@@ -44,6 +44,8 @@
#include <comphelper/sequence.hxx>
#include <comphelper/propertyvalue.hxx>
#include <comphelper/string.hxx>
+#include <unotxdoc.hxx>
+#include <unoxstyle.hxx>
#include <regex>
#include <utility>
@@ -471,14 +473,15 @@ uno::Sequence<uno::Sequence<beans::PropertyValue>> ListDef::GetMergedPropertyVal
}
static uno::Reference< container::XNameContainer > lcl_getUnoNumberingStyles(
- uno::Reference<lang::XMultiServiceFactory> const& xFactory)
+ rtl::Reference<SwXTextDocument> const& xTextDoc)
{
uno::Reference< container::XNameContainer > xStyles;
+ if (!xTextDoc)
+ return xStyles;
try
{
- uno::Reference< style::XStyleFamiliesSupplier > xFamilies( xFactory, uno::UNO_QUERY_THROW );
- uno::Any oFamily = xFamilies->getStyleFamilies( )->getByName("NumberingStyles");
+ uno::Any oFamily = xTextDoc->getStyleFamilies( )->getByName("NumberingStyles");
oFamily >>= xStyles;
}
@@ -523,13 +526,13 @@ sal_uInt16 ListDef::GetChapterNumberingWeight() const
}
void ListDef::CreateNumberingRules( DomainMapper& rDMapper,
- uno::Reference<lang::XMultiServiceFactory> const& xFactory, sal_Int16 nOutline)
+ rtl::Reference<SwXTextDocument> const& xTextDoc, sal_Int16 nOutline)
{
// Get the UNO Numbering styles
- uno::Reference< container::XNameContainer > xStyles = lcl_getUnoNumberingStyles( xFactory );
+ uno::Reference< container::XNameContainer > xStyles = lcl_getUnoNumberingStyles( xTextDoc );
// Do the whole thing
- if( !(!m_xNumRules.is() && xFactory.is() && xStyles.is( )) )
+ if( !(!m_xNumRules.is() && xTextDoc.is() && xStyles.is( )) )
return;
try
@@ -540,7 +543,7 @@ void ListDef::CreateNumberingRules( DomainMapper& rDMapper,
else
xStyles->insertByName(
GetStyleName(GetId(), xStyles),
- css::uno::Any(xFactory->createInstance("com.sun.star.style.NumberingStyle")));
+ css::uno::Any(uno::Reference<css::style::XStyle>(xTextDoc->createNumberingStyle())));
uno::Any oStyle = xStyles->getByName(GetStyleName());
uno::Reference< beans::XPropertySet > xStyle( oStyle, uno::UNO_QUERY_THROW );
@@ -601,10 +604,8 @@ void ListDef::CreateNumberingRules( DomainMapper& rDMapper,
// Handle the outline level here
if (GetId() == nOutline && pAbsLevel && pAbsLevel->GetParaStyle())
{
- uno::Reference< text::XChapterNumberingSupplier > xOutlines (
- xFactory, uno::UNO_QUERY_THROW );
uno::Reference< container::XIndexReplace > xOutlineRules =
- xOutlines->getChapterNumberingRules( );
+ xTextDoc->getChapterNumberingRules( );
StyleSheetEntryPtr pParaStyle = pAbsLevel->GetParaStyle( );
pParaStyle->m_bAssignedAsChapterNumbering = true;
@@ -641,11 +642,11 @@ void ListDef::CreateNumberingRules( DomainMapper& rDMapper,
ListsManager::ListsManager(DomainMapper& rDMapper,
- uno::Reference<lang::XMultiServiceFactory> xFactory)
+ rtl::Reference<SwXTextDocument> xTextDoc)
: LoggedProperties("ListsManager")
, LoggedTable("ListsManager")
, m_rDMapper(rDMapper)
- , m_xFactory(std::move(xFactory))
+ , m_xTextDoc(std::move(xTextDoc))
{
}
@@ -1202,7 +1203,7 @@ void ListsManager::CreateNumberingRules( )
// Loop over the definitions
for ( const auto& rList : m_aLists )
{
- rList->CreateNumberingRules(m_rDMapper, m_xFactory, nChosenAsChapterNumberingId);
+ rList->CreateNumberingRules(m_rDMapper, m_xTextDoc, nChosenAsChapterNumberingId);
}
m_rDMapper.GetStyleSheetTable()->ReApplyInheritedOutlineLevelFromChapterNumbering();
m_rDMapper.GetStyleSheetTable()->ApplyNumberingStyleNameToParaStyles();
diff --git a/sw/source/writerfilter/dmapper/NumberingManager.hxx b/sw/source/writerfilter/dmapper/NumberingManager.hxx
index 64156ba60ceb..36571bc87ec4 100644
--- a/sw/source/writerfilter/dmapper/NumberingManager.hxx
+++ b/sw/source/writerfilter/dmapper/NumberingManager.hxx
@@ -194,7 +194,7 @@ public:
css::uno::Sequence< css::uno::Sequence<css::beans::PropertyValue> > GetMergedPropertyValues();
sal_uInt16 GetChapterNumberingWeight() const;
- void CreateNumberingRules(DomainMapper& rDMapper, css::uno::Reference<css::lang::XMultiServiceFactory> const& xFactory, sal_Int16 nOutline);
+ void CreateNumberingRules(DomainMapper& rDMapper, rtl::Reference<SwXTextDocument> const& xTextDoc, sal_Int16 nOutline);
const css::uno::Reference<css::container::XIndexReplace>& GetNumberingRules() const { return m_xNumRules; }
@@ -209,7 +209,7 @@ class ListsManager :
private:
DomainMapper& m_rDMapper;
- css::uno::Reference<css::lang::XMultiServiceFactory> m_xFactory;
+ rtl::Reference<SwXTextDocument> m_xTextDoc;
// The numbering entries
std::vector< NumPicBullet::Pointer > m_aNumPicBullets;
@@ -232,7 +232,7 @@ private:
public:
- ListsManager(DomainMapper& rDMapper, css::uno::Reference<css::lang::XMultiServiceFactory> xFactory);
+ ListsManager(DomainMapper& rDMapper, rtl::Reference<SwXTextDocument> xTextDoc);
virtual ~ListsManager() override;
typedef tools::SvRef< ListsManager > Pointer;
diff --git a/sw/source/writerfilter/dmapper/PropertyMap.cxx b/sw/source/writerfilter/dmapper/PropertyMap.cxx
index fd67ac04cda0..913dde2bc84e 100644
--- a/sw/source/writerfilter/dmapper/PropertyMap.cxx
+++ b/sw/source/writerfilter/dmapper/PropertyMap.cxx
@@ -67,6 +67,7 @@
#include <o3tl/unit_conversion.hxx>
#include <unosection.hxx>
#include <unotxdoc.hxx>
+#include <unoxstyle.hxx>
#include <utility>
#include <frozen/bits/defines.h>
@@ -478,10 +479,10 @@ SectionPropertyMap::SectionPropertyMap( bool bIsFirstSection )
}
}
-uno::Reference<beans::XPropertySet> SectionPropertyMap::GetPageStyle(DomainMapper_Impl& rDM_Impl)
+rtl::Reference<SwXPageStyle> SectionPropertyMap::GetPageStyle(DomainMapper_Impl& rDM_Impl)
{
const uno::Reference< container::XNameContainer >& xPageStyles = rDM_Impl.GetPageStyles();
- uno::Reference<beans::XPropertySet> xReturnPageStyle;
+ rtl::Reference<SwXPageStyle> xReturnPageStyle;
try
{
if (m_sPageStyleName.isEmpty() && xPageStyles.is())
@@ -490,12 +491,15 @@ uno::Reference<beans::XPropertySet> SectionPropertyMap::GetPageStyle(DomainMappe
m_sPageStyleName = rDM_Impl.GetUnusedPageStyleName();
- m_aPageStyle.set(rDM_Impl.GetTextDocument()->createInstance("com.sun.star.style.PageStyle"), uno::UNO_QUERY );
- xPageStyles->insertByName(m_sPageStyleName, uno::Any(m_aPageStyle));
+ m_aPageStyle = rDM_Impl.GetTextDocument()->createPageStyle();
+ xPageStyles->insertByName(m_sPageStyleName, uno::Any(uno::Reference<style::XStyle>(m_aPageStyle)));
}
else if (!m_aPageStyle.is() && xPageStyles.is())
{
- xPageStyles->getByName(m_sPageStyleName) >>= m_aPageStyle;
+ uno::Reference<style::XStyle> xTmpStyle;
+ xPageStyles->getByName(m_sPageStyleName) >>= xTmpStyle;
+ m_aPageStyle = dynamic_cast<SwXPageStyle*>(xTmpStyle.get());
+ assert(bool(xTmpStyle) == bool(m_aPageStyle) && "expect null or a SwXPageStyle here");
}
xReturnPageStyle = m_aPageStyle;
}
@@ -1448,9 +1452,7 @@ void AfterConvertToTextFrame(DomainMapper_Impl& rDM_Impl, std::deque<css::uno::A
void SectionPropertyMap::CreateEvenOddPageStyleCopy(DomainMapper_Impl& rDM_Impl, PageBreakType eBreakType)
{
OUString evenOddStyleName = rDM_Impl.GetUnusedPageStyleName();
- uno::Reference<beans::XPropertySet> evenOddStyle(
- rDM_Impl.GetTextDocument()->createInstance("com.sun.star.style.PageStyle"),
- uno::UNO_QUERY);
+ rtl::Reference<SwXPageStyle> evenOddStyle = rDM_Impl.GetTextDocument()->createPageStyle();
// Unfortunately using setParent() does not work for page styles, so make a deep copy of the page style.
uno::Reference<beans::XPropertySet> pageProperties(m_aPageStyle);
uno::Reference<beans::XPropertySetInfo> pagePropertiesInfo(pageProperties->getPropertySetInfo());
@@ -1478,7 +1480,7 @@ void SectionPropertyMap::CreateEvenOddPageStyleCopy(DomainMapper_Impl& rDM_Impl,
}
evenOddStyle->setPropertyValue("FollowStyle", uno::Any(m_sPageStyleName));
- rDM_Impl.GetPageStyles()->insertByName(evenOddStyleName, uno::Any(evenOddStyle));
+ rDM_Impl.GetPageStyles()->insertByName(evenOddStyleName, uno::Any(uno::Reference<style::XStyle>(evenOddStyle)));
if (rDM_Impl.IsNewDoc())
{
diff --git a/sw/source/writerfilter/dmapper/PropertyMap.hxx b/sw/source/writerfilter/dmapper/PropertyMap.hxx
index 6b624e089dad..a232604ccbff 100644
--- a/sw/source/writerfilter/dmapper/PropertyMap.hxx
+++ b/sw/source/writerfilter/dmapper/PropertyMap.hxx
@@ -39,6 +39,7 @@
#include <deque>
class SwXTextSection;
+class SwXPageStyle;
namespace com::sun::star {
namespace beans {
struct PropertyValue;
@@ -255,7 +256,7 @@ private:
css::uno::Reference< css::text::XTextRange > m_xStartingRange;
OUString m_sPageStyleName;
- css::uno::Reference<css::beans::XPropertySet> m_aPageStyle;
+ rtl::Reference<SwXPageStyle> m_aPageStyle;
std::optional< css::table::BorderLine2 > m_oBorderLines[4];
sal_Int32 m_nBorderDistances[4];
@@ -356,7 +357,7 @@ public:
const css::uno::Reference< css::text::XTextRange >& GetStartingRange() const { return m_xStartingRange; }
- css::uno::Reference<css::beans::XPropertySet> GetPageStyle(DomainMapper_Impl& rDM_Impl);
+ rtl::Reference<SwXPageStyle> GetPageStyle(DomainMapper_Impl& rDM_Impl);
const OUString& GetPageStyleName()
{