From aef1e2dde5e53ba8416a393bbe155ef0c18511a7 Mon Sep 17 00:00:00 2001 From: Bjoern Michaelsen Date: Mon, 21 Dec 2015 03:55:14 +0100 Subject: move SwXStyle entirely into compilation unit Change-Id: Icfcb4320aef9ebe2c5fcc84106de005934d51a3f --- sw/inc/unostyle.hxx | 184 +++------------------------ sw/source/core/inc/unoevent.hxx | 5 +- sw/source/core/unocore/unoevent.cxx | 40 +----- sw/source/core/unocore/unostyle.cxx | 241 ++++++++++++++++++++++++++++++++++-- sw/source/filter/xml/xmlfmt.cxx | 30 ++--- sw/source/filter/xml/xmltexte.cxx | 148 +++++++++++----------- 6 files changed, 341 insertions(+), 307 deletions(-) diff --git a/sw/inc/unostyle.hxx b/sw/inc/unostyle.hxx index ea7f723354bc..72b6b04cc24e 100644 --- a/sw/inc/unostyle.hxx +++ b/sw/inc/unostyle.hxx @@ -103,174 +103,24 @@ public: static css::uno::Reference CreateStyleCondParagraph(SwDoc& rDoc); }; - -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 SwClient -{ - friend class sw::XStyleFamily; - SwDoc* m_pDoc; - OUString m_sStyleName; - SfxStyleSheetBasePool* m_pBasePool; - SfxStyleFamily m_eFamily; // for Notify - - bool m_bIsDescriptor : 1; - bool m_bIsConditional : 1; - OUString m_sParentStyleName; - SwStyleProperties_Impl* m_pPropertiesImpl; - - void ApplyDescriptorProperties(); -protected: - void Invalidate(); - - const SfxStyleSheetBasePool* GetBasePool() const {return m_pBasePool;} - SfxStyleSheetBasePool* GetBasePool() {return m_pBasePool;} - - void SetStyleName(const OUString& rSet){ m_sStyleName = rSet;} - SwStyleProperties_Impl* GetPropImpl(){return m_pPropertiesImpl;} - css::uno::Reference< css::beans::XPropertySet > mxStyleData; - css::uno::Reference< css::container::XNameAccess > mxStyleFamily; - - void SAL_CALL SetPropertyValues_Impl( const css::uno::Sequence< OUString >& aPropertyNames, const css::uno::Sequence< css::uno::Any >& aValues ) - throw (css::beans::UnknownPropertyException, - css::beans::PropertyVetoException, - css::lang::IllegalArgumentException, - css::lang::WrappedTargetException, - css::uno::RuntimeException, - std::exception); - css::uno::Sequence< css::uno::Any > SAL_CALL GetPropertyValues_Impl( const css::uno::Sequence< OUString >& aPropertyNames ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException, std::exception); - - virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) override; -public: - SwXStyle(SwDoc* pDoc, SfxStyleFamily eFam = SFX_STYLE_FAMILY_PARA, bool bConditional = false); - SwXStyle(SfxStyleSheetBasePool& rPool, SfxStyleFamily eFam, - SwDoc* pDoc, - const OUString& rStyleName); - - virtual ~SwXStyle(); - - - static const css::uno::Sequence< sal_Int8 > & getUnoTunnelId(); - - //XUnoTunnel - virtual sal_Int64 SAL_CALL getSomething( const css::uno::Sequence< sal_Int8 >& aIdentifier ) throw(css::uno::RuntimeException, std::exception) override; - - //XNamed - virtual OUString SAL_CALL getName() throw( css::uno::RuntimeException, std::exception ) override; - virtual void SAL_CALL setName(const OUString& Name_) throw( css::uno::RuntimeException, std::exception ) override; - - //XStyle - virtual sal_Bool SAL_CALL isUserDefined() throw( css::uno::RuntimeException, std::exception ) override; - virtual sal_Bool SAL_CALL isInUse() throw( css::uno::RuntimeException, std::exception ) override; - virtual OUString SAL_CALL getParentStyle() throw( css::uno::RuntimeException, std::exception ) override; - virtual void SAL_CALL setParentStyle(const OUString& aParentStyle) throw( css::container::NoSuchElementException, css::uno::RuntimeException, std::exception ) override; - - //XPropertySet - virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(css::uno::RuntimeException, std::exception) override; - virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, const css::uno::Any& aValue ) throw(css::beans::UnknownPropertyException, css::beans::PropertyVetoException, css::lang::IllegalArgumentException, css::lang::WrappedTargetException, css::uno::RuntimeException, std::exception) override; - virtual css::uno::Any SAL_CALL getPropertyValue( const OUString& PropertyName ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException, std::exception) override; - virtual void SAL_CALL addPropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& xListener ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException, std::exception) override; - virtual void SAL_CALL removePropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& aListener ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException, std::exception) override; - virtual void SAL_CALL addVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException, std::exception) override; - virtual void SAL_CALL removeVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException, std::exception) override; - - //XMultiPropertySet - virtual void SAL_CALL setPropertyValues( const css::uno::Sequence< OUString >& aPropertyNames, const css::uno::Sequence< css::uno::Any >& aValues ) throw(css::beans::PropertyVetoException, css::lang::IllegalArgumentException, css::lang::WrappedTargetException, css::uno::RuntimeException, std::exception) override; - virtual css::uno::Sequence< css::uno::Any > SAL_CALL getPropertyValues( const css::uno::Sequence< OUString >& aPropertyNames ) throw(css::uno::RuntimeException, std::exception) override; - virtual void SAL_CALL addPropertiesChangeListener( const css::uno::Sequence< OUString >& aPropertyNames, const css::uno::Reference< css::beans::XPropertiesChangeListener >& xListener ) throw(css::uno::RuntimeException, std::exception) override; - virtual void SAL_CALL removePropertiesChangeListener( const css::uno::Reference< css::beans::XPropertiesChangeListener >& xListener ) throw(css::uno::RuntimeException, std::exception) override; - virtual void SAL_CALL firePropertiesChangeEvent( const css::uno::Sequence< OUString >& aPropertyNames, const css::uno::Reference< css::beans::XPropertiesChangeListener >& xListener ) throw(css::uno::RuntimeException, std::exception) override; - - //XPropertyState - virtual css::beans::PropertyState SAL_CALL getPropertyState( const OUString& PropertyName ) throw(css::beans::UnknownPropertyException, css::uno::RuntimeException, std::exception) override; - virtual css::uno::Sequence< css::beans::PropertyState > SAL_CALL getPropertyStates( const css::uno::Sequence< OUString >& aPropertyName ) throw(css::beans::UnknownPropertyException, css::uno::RuntimeException, std::exception) override; - virtual void SAL_CALL setPropertyToDefault( const OUString& PropertyName ) throw(css::beans::UnknownPropertyException, css::uno::RuntimeException, std::exception) override; - virtual css::uno::Any SAL_CALL getPropertyDefault( const OUString& aPropertyName ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException, std::exception) override; - - //XMultiPropertyStates - virtual void SAL_CALL setAllPropertiesToDefault( ) throw (css::uno::RuntimeException, std::exception) override; - virtual void SAL_CALL setPropertiesToDefault( const css::uno::Sequence< OUString >& aPropertyNames ) throw (css::beans::UnknownPropertyException, css::uno::RuntimeException, std::exception) override; - virtual css::uno::Sequence< css::uno::Any > SAL_CALL getPropertyDefaults( const css::uno::Sequence< OUString >& aPropertyNames ) throw (css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException, std::exception) override; - - //XServiceInfo - virtual OUString SAL_CALL getImplementationName() throw( css::uno::RuntimeException, std::exception ) override; - virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) throw( css::uno::RuntimeException, std::exception ) override; - virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() throw( css::uno::RuntimeException, std::exception ) override; - - //SfxListener - virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override; - - OUString GetStyleName() const { return m_sStyleName;} - SfxStyleFamily GetFamily() const {return m_eFamily;} - - bool IsDescriptor() const {return m_bIsDescriptor;} - bool IsConditional() const { return m_bIsConditional;} - OUString GetParentStyleName() const { return m_sParentStyleName;} - void SetDoc(SwDoc* pDc, SfxStyleSheetBasePool* pPool) - { - m_bIsDescriptor = false; m_pDoc = pDc; - m_pBasePool = pPool; - StartListening(*m_pBasePool); - } - SwDoc* GetDoc() const { return m_pDoc; } -}; - -class SwXFrameStyle : public SwXStyle, - public css::document::XEventsSupplier -{ -public: - SwXFrameStyle(SfxStyleSheetBasePool& rPool, - SwDoc* pDoc, - const OUString& rStyleName) : - SwXStyle(rPool, SFX_STYLE_FAMILY_FRAME, pDoc, rStyleName){} - SwXFrameStyle( SwDoc *pDoc ); - virtual ~SwXFrameStyle(); - - virtual void SAL_CALL acquire( ) throw() override {SwXStyle::acquire();} - virtual void SAL_CALL release( ) throw() override {SwXStyle::release();} - - virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes( ) throw(css::uno::RuntimeException, std::exception) override; - virtual css::uno::Any SAL_CALL queryInterface( const css::uno::Type& aType ) throw(css::uno::RuntimeException, std::exception) override; - - virtual css::uno::Reference< css::container::XNameReplace > SAL_CALL getEvents( ) throw(css::uno::RuntimeException, std::exception) override; - - friend class SwFrameStyleEventDescriptor; -}; - -class SwXPageStyle : public SwXStyle +namespace sw { -protected: - void SAL_CALL SetPropertyValues_Impl( const css::uno::Sequence< OUString >& aPropertyNames, const css::uno::Sequence< css::uno::Any >& aValues ) - throw (css::beans::UnknownPropertyException, - css::beans::PropertyVetoException, - css::lang::IllegalArgumentException, - css::lang::WrappedTargetException, - css::uno::RuntimeException, - std::exception); - css::uno::Sequence< css::uno::Any > SAL_CALL GetPropertyValues_Impl( const css::uno::Sequence< OUString >& aPropertyNames ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException, std::exception); - -public: - SwXPageStyle(SfxStyleSheetBasePool& rPool, SwDocShell* pDocSh, SfxStyleFamily eFam, - const OUString& rStyleName); - SwXPageStyle(SwDocShell* pDocSh); - virtual ~SwXPageStyle(); - - virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, const css::uno::Any& aValue ) throw(css::beans::UnknownPropertyException, css::beans::PropertyVetoException, css::lang::IllegalArgumentException, css::lang::WrappedTargetException, css::uno::RuntimeException, std::exception) override; - virtual css::uno::Any SAL_CALL getPropertyValue( const OUString& PropertyName ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException, std::exception) override; - - virtual void SAL_CALL setPropertyValues( const css::uno::Sequence< OUString >& aPropertyNames, const css::uno::Sequence< css::uno::Any >& aValues ) throw(css::beans::PropertyVetoException, css::lang::IllegalArgumentException, css::lang::WrappedTargetException, css::uno::RuntimeException, std::exception) override; - virtual css::uno::Sequence< css::uno::Any > SAL_CALL getPropertyValues( const css::uno::Sequence< OUString >& aPropertyNames ) throw(css::uno::RuntimeException, std::exception) override; - -}; + class ICoreFrameStyle + { + public: + virtual void SetItem(enum RES_FRMATR eAtr, const SfxPoolItem& rItem) =0; + virtual const SfxPoolItem* GetItem(enum RES_FRMATR eAtr) =0; + virtual css::document::XEventsSupplier& GetEventsSupplier() =0; + virtual ~ICoreFrameStyle() {}; + }; + class ICoreParagraphStyle + { + public: + static const css::uno::Sequence& getUnoTunnelId(); + virtual const SwTextFormatColl* GetFormatColl() =0; + virtual ~ICoreParagraphStyle() {}; + }; +} // access to all automatic style families class SwXAutoStyles : diff --git a/sw/source/core/inc/unoevent.hxx b/sw/source/core/inc/unoevent.hxx index 46c752fb2208..d942c6065dbd 100644 --- a/sw/source/core/inc/unoevent.hxx +++ b/sw/source/core/inc/unoevent.hxx @@ -20,6 +20,7 @@ #define INCLUDED_SW_SOURCE_CORE_INC_UNOEVENT_HXX #include +#include #include class SvxMacroItem; @@ -82,10 +83,10 @@ class SwFrameStyleEventDescriptor : public SvEventDescriptor { OUString sSwFrameStyleEventDescriptor; - SwXFrameStyle& rStyle; + sw::ICoreFrameStyle& m_rStyle; public: - SwFrameStyleEventDescriptor( SwXFrameStyle& rStyleRef ); + SwFrameStyleEventDescriptor( sw::ICoreFrameStyle& rStyle ); virtual ~SwFrameStyleEventDescriptor(); diff --git a/sw/source/core/unocore/unoevent.cxx b/sw/source/core/unocore/unoevent.cxx index d3652c61c8ac..53f311f7d3ea 100644 --- a/sw/source/core/unocore/unoevent.cxx +++ b/sw/source/core/unocore/unoevent.cxx @@ -211,11 +211,11 @@ OUString SwFrameEventDescriptor::getImplementationName() } SwFrameStyleEventDescriptor::SwFrameStyleEventDescriptor( - SwXFrameStyle& rStyleRef ) : - SvEventDescriptor((document::XEventsSupplier&)rStyleRef, + sw::ICoreFrameStyle& rStyle ) : + SvEventDescriptor(rStyle.GetEventsSupplier(), aFrameStyleEvents), sSwFrameStyleEventDescriptor("SwFrameStyleEventDescriptor"), - rStyle(rStyleRef) + m_rStyle(rStyle) { } @@ -225,43 +225,15 @@ SwFrameStyleEventDescriptor::~SwFrameStyleEventDescriptor() void SwFrameStyleEventDescriptor::setMacroItem(const SvxMacroItem& rItem) { - // As I was told, for some entirely unobvious reason getting an - // item from a style has to look as follows: - SfxStyleSheetBasePool* pBasePool = rStyle.GetBasePool(); - if (pBasePool) - { - SfxStyleSheetBase* pBase = pBasePool->Find(rStyle.GetStyleName()); - if (pBase) - { - rtl::Reference< SwDocStyleSheet > xStyle( new SwDocStyleSheet( *static_cast(pBase) ) ); - SfxItemSet& rStyleSet = xStyle->GetItemSet(); - SfxItemSet aSet(*rStyleSet.GetPool(), RES_FRMMACRO, RES_FRMMACRO); - aSet.Put(rItem); - xStyle->SetItemSet(aSet); - } - } + m_rStyle.SetItem(RES_FRMMACRO, rItem); } static const SvxMacroItem aEmptyMacroItem(RES_FRMMACRO); const SvxMacroItem& SwFrameStyleEventDescriptor::getMacroItem() { - // As I was told, for some entirely unobvious reason getting an - // item from a style has to look as follows: - SfxStyleSheetBasePool* pBasePool = rStyle.GetBasePool(); - if (pBasePool) - { - SfxStyleSheetBase* pBase = pBasePool->Find(rStyle.GetStyleName()); - if (pBase) - { - rtl::Reference< SwDocStyleSheet > xStyle( new SwDocStyleSheet( *static_cast(pBase)) ); - return static_cast(xStyle->GetItemSet().Get(RES_FRMMACRO)); - } - else - return aEmptyMacroItem; - } - else - return aEmptyMacroItem; + const SfxPoolItem* pItem(m_rStyle.GetItem(RES_FRMMACRO)); + return pItem ? static_cast(*pItem) : aEmptyMacroItem; } OUString SwFrameStyleEventDescriptor::getImplementationName() diff --git a/sw/source/core/unocore/unostyle.cxx b/sw/source/core/unocore/unostyle.cxx index d0efe3d29461..19dc49721c93 100644 --- a/sw/source/core/unocore/unostyle.cxx +++ b/sw/source/core/unocore/unostyle.cxx @@ -145,8 +145,8 @@ namespace sw lang::XServiceInfo, container::XIndexAccess, beans::XPropertySet - >, - public SfxListener + > + , public SfxListener { const StyleFamilyEntry& m_rEntry; SfxStyleSheetBasePool* m_pBasePool; @@ -238,6 +238,186 @@ namespace sw }; } +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 SwClient +{ + friend class sw::XStyleFamily; + SwDoc* m_pDoc; + OUString m_sStyleName; + SfxStyleSheetBasePool* m_pBasePool; + SfxStyleFamily m_eFamily; // for Notify + + bool m_bIsDescriptor : 1; + bool m_bIsConditional : 1; + OUString m_sParentStyleName; + SwStyleProperties_Impl* m_pPropertiesImpl; + + void ApplyDescriptorProperties(); +protected: + void Invalidate(); + + const SfxStyleSheetBasePool* GetBasePool() const {return m_pBasePool;} + SfxStyleSheetBasePool* GetBasePool() {return m_pBasePool;} + + void SetStyleName(const OUString& rSet){ m_sStyleName = rSet;} + SwStyleProperties_Impl* GetPropImpl(){return m_pPropertiesImpl;} + css::uno::Reference< css::beans::XPropertySet > mxStyleData; + css::uno::Reference< css::container::XNameAccess > mxStyleFamily; + + void SAL_CALL SetPropertyValues_Impl( const css::uno::Sequence< OUString >& aPropertyNames, const css::uno::Sequence< css::uno::Any >& aValues ) + throw (css::beans::UnknownPropertyException, + css::beans::PropertyVetoException, + css::lang::IllegalArgumentException, + css::lang::WrappedTargetException, + css::uno::RuntimeException, + std::exception); + css::uno::Sequence< css::uno::Any > SAL_CALL GetPropertyValues_Impl( const css::uno::Sequence< OUString >& aPropertyNames ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException, std::exception); + + virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) override; +public: + SwXStyle(SwDoc* pDoc, SfxStyleFamily eFam = SFX_STYLE_FAMILY_PARA, bool bConditional = false); + SwXStyle(SfxStyleSheetBasePool& rPool, SfxStyleFamily eFam, + SwDoc* pDoc, + const OUString& rStyleName); + + virtual ~SwXStyle(); + + + static const css::uno::Sequence< sal_Int8 > & getUnoTunnelId(); + + //XUnoTunnel + virtual sal_Int64 SAL_CALL getSomething( const css::uno::Sequence< sal_Int8 >& aIdentifier ) throw(css::uno::RuntimeException, std::exception) override; + + //XNamed + virtual OUString SAL_CALL getName() throw( css::uno::RuntimeException, std::exception ) override; + virtual void SAL_CALL setName(const OUString& Name_) throw( css::uno::RuntimeException, std::exception ) override; + + //XStyle + virtual sal_Bool SAL_CALL isUserDefined() throw( css::uno::RuntimeException, std::exception ) override; + virtual sal_Bool SAL_CALL isInUse() throw( css::uno::RuntimeException, std::exception ) override; + virtual OUString SAL_CALL getParentStyle() throw( css::uno::RuntimeException, std::exception ) override; + virtual void SAL_CALL setParentStyle(const OUString& aParentStyle) throw( css::container::NoSuchElementException, css::uno::RuntimeException, std::exception ) override; + + //XPropertySet + virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(css::uno::RuntimeException, std::exception) override; + virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, const css::uno::Any& aValue ) throw(css::beans::UnknownPropertyException, css::beans::PropertyVetoException, css::lang::IllegalArgumentException, css::lang::WrappedTargetException, css::uno::RuntimeException, std::exception) override; + virtual css::uno::Any SAL_CALL getPropertyValue( const OUString& PropertyName ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException, std::exception) override; + virtual void SAL_CALL addPropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& xListener ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException, std::exception) override; + virtual void SAL_CALL removePropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& aListener ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException, std::exception) override; + virtual void SAL_CALL addVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException, std::exception) override; + virtual void SAL_CALL removeVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException, std::exception) override; + + //XMultiPropertySet + virtual void SAL_CALL setPropertyValues( const css::uno::Sequence< OUString >& aPropertyNames, const css::uno::Sequence< css::uno::Any >& aValues ) throw(css::beans::PropertyVetoException, css::lang::IllegalArgumentException, css::lang::WrappedTargetException, css::uno::RuntimeException, std::exception) override; + virtual css::uno::Sequence< css::uno::Any > SAL_CALL getPropertyValues( const css::uno::Sequence< OUString >& aPropertyNames ) throw(css::uno::RuntimeException, std::exception) override; + virtual void SAL_CALL addPropertiesChangeListener( const css::uno::Sequence< OUString >& aPropertyNames, const css::uno::Reference< css::beans::XPropertiesChangeListener >& xListener ) throw(css::uno::RuntimeException, std::exception) override; + virtual void SAL_CALL removePropertiesChangeListener( const css::uno::Reference< css::beans::XPropertiesChangeListener >& xListener ) throw(css::uno::RuntimeException, std::exception) override; + virtual void SAL_CALL firePropertiesChangeEvent( const css::uno::Sequence< OUString >& aPropertyNames, const css::uno::Reference< css::beans::XPropertiesChangeListener >& xListener ) throw(css::uno::RuntimeException, std::exception) override; + + //XPropertyState + virtual css::beans::PropertyState SAL_CALL getPropertyState( const OUString& PropertyName ) throw(css::beans::UnknownPropertyException, css::uno::RuntimeException, std::exception) override; + virtual css::uno::Sequence< css::beans::PropertyState > SAL_CALL getPropertyStates( const css::uno::Sequence< OUString >& aPropertyName ) throw(css::beans::UnknownPropertyException, css::uno::RuntimeException, std::exception) override; + virtual void SAL_CALL setPropertyToDefault( const OUString& PropertyName ) throw(css::beans::UnknownPropertyException, css::uno::RuntimeException, std::exception) override; + virtual css::uno::Any SAL_CALL getPropertyDefault( const OUString& aPropertyName ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException, std::exception) override; + + //XMultiPropertyStates + virtual void SAL_CALL setAllPropertiesToDefault( ) throw (css::uno::RuntimeException, std::exception) override; + virtual void SAL_CALL setPropertiesToDefault( const css::uno::Sequence< OUString >& aPropertyNames ) throw (css::beans::UnknownPropertyException, css::uno::RuntimeException, std::exception) override; + virtual css::uno::Sequence< css::uno::Any > SAL_CALL getPropertyDefaults( const css::uno::Sequence< OUString >& aPropertyNames ) throw (css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException, std::exception) override; + + //XServiceInfo + virtual OUString SAL_CALL getImplementationName() throw( css::uno::RuntimeException, std::exception ) override; + virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) throw( css::uno::RuntimeException, std::exception ) override; + virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() throw( css::uno::RuntimeException, std::exception ) override; + + //SfxListener + virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override; + OUString GetStyleName() const { return m_sStyleName;} + SfxStyleFamily GetFamily() const {return m_eFamily;} + + bool IsDescriptor() const {return m_bIsDescriptor;} + bool IsConditional() const { return m_bIsConditional;} + OUString GetParentStyleName() const { return m_sParentStyleName;} + void SetDoc(SwDoc* pDc, SfxStyleSheetBasePool* pPool) + { + m_bIsDescriptor = false; m_pDoc = pDc; + m_pBasePool = pPool; + StartListening(*m_pBasePool); + } + SwDoc* GetDoc() const { return m_pDoc; } + virtual const SwTextFormatColl* GetFormatColl() const + { + assert(m_eFamily == SFX_STYLE_FAMILY_PARA); + return m_pDoc->FindTextFormatCollByName(GetStyleName()); + } +}; + +class SwXFrameStyle + : public SwXStyle + , public css::document::XEventsSupplier + , public sw::ICoreFrameStyle +{ +public: + SwXFrameStyle(SfxStyleSheetBasePool& rPool, + SwDoc* pDoc, + const OUString& rStyleName) : + SwXStyle(rPool, SFX_STYLE_FAMILY_FRAME, pDoc, rStyleName){} + SwXFrameStyle( SwDoc *pDoc ); + virtual ~SwXFrameStyle(); + + virtual void SAL_CALL acquire( ) throw() override {SwXStyle::acquire();} + virtual void SAL_CALL release( ) throw() override {SwXStyle::release();} + + virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes( ) throw(css::uno::RuntimeException, std::exception) override; + virtual css::uno::Any SAL_CALL queryInterface( const css::uno::Type& aType ) throw(css::uno::RuntimeException, std::exception) override; + + virtual css::uno::Reference< css::container::XNameReplace > SAL_CALL getEvents( ) throw(css::uno::RuntimeException, std::exception) override; + + friend class SwFrameStyleEventDescriptor; + + //ICoreStyle + virtual void SetItem(enum RES_FRMATR eAtr, const SfxPoolItem& rItem); + virtual const SfxPoolItem* GetItem(enum RES_FRMATR eAtr); + virtual css::document::XEventsSupplier& GetEventsSupplier() + { return *this; }; +}; + +class SwXPageStyle + : public SwXStyle +{ +protected: + void SAL_CALL SetPropertyValues_Impl( const css::uno::Sequence< OUString >& aPropertyNames, const css::uno::Sequence< css::uno::Any >& aValues ) + throw (css::beans::UnknownPropertyException, + css::beans::PropertyVetoException, + css::lang::IllegalArgumentException, + css::lang::WrappedTargetException, + css::uno::RuntimeException, + std::exception); + css::uno::Sequence< css::uno::Any > SAL_CALL GetPropertyValues_Impl( const css::uno::Sequence< OUString >& aPropertyNames ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException, std::exception); + +public: + SwXPageStyle(SfxStyleSheetBasePool& rPool, SwDocShell* pDocSh, SfxStyleFamily eFam, + const OUString& rStyleName); + SwXPageStyle(SwDocShell* pDocSh); + virtual ~SwXPageStyle(); + + virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, const css::uno::Any& aValue ) throw(css::beans::UnknownPropertyException, css::beans::PropertyVetoException, css::lang::IllegalArgumentException, css::lang::WrappedTargetException, css::uno::RuntimeException, std::exception) override; + virtual css::uno::Any SAL_CALL getPropertyValue( const OUString& PropertyName ) throw(css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException, std::exception) override; + + virtual void SAL_CALL setPropertyValues( const css::uno::Sequence< OUString >& aPropertyNames, const css::uno::Sequence< css::uno::Any >& aValues ) throw(css::beans::PropertyVetoException, css::lang::IllegalArgumentException, css::lang::WrappedTargetException, css::uno::RuntimeException, std::exception) override; + virtual css::uno::Sequence< css::uno::Any > SAL_CALL getPropertyValues( const css::uno::Sequence< OUString >& aPropertyNames ) throw(css::uno::RuntimeException, std::exception) override; +}; + using sw::XStyleFamily; @@ -830,22 +1010,32 @@ static SwGetPoolIdFromName lcl_GetSwEnumFromSfxEnum(SfxStyleFamily eFamily) namespace { - class theSwXStyleUnoTunnelId : public rtl::Static< UnoTunnelIdInit, theSwXStyleUnoTunnelId > {}; + class theSwXStyleUnoTunnelId : public rtl::Static {}; + class theCoreParagraphUnoTunnelId : public rtl::Static {}; } -const uno::Sequence< sal_Int8 > & SwXStyle::getUnoTunnelId() +const uno::Sequence& SwXStyle::getUnoTunnelId() { return theSwXStyleUnoTunnelId::get().getSeq(); } -sal_Int64 SAL_CALL SwXStyle::getSomething( const uno::Sequence< sal_Int8 >& rId ) +const uno::Sequence& sw::ICoreParagraphStyle::getUnoTunnelId() +{ + return theCoreParagraphUnoTunnelId::get().getSeq(); +} + +sal_Int64 SAL_CALL SwXStyle::getSomething(const uno::Sequence& rId) throw(uno::RuntimeException, std::exception) { - if( rId.getLength() == 16 - && 0 == memcmp( getUnoTunnelId().getConstArray(), - rId.getConstArray(), 16 ) ) + if(rId.getLength() != 16) + return 0; + if(0 == memcmp(getUnoTunnelId().getConstArray(), rId.getConstArray(), 16)) { - return sal::static_int_cast< sal_Int64 >( reinterpret_cast< sal_IntPtr >(this) ); + return sal::static_int_cast(reinterpret_cast(this)); + } + else if(0 == memcmp(sw::ICoreParagraphStyle::getUnoTunnelId().getConstArray(), rId.getConstArray(), 16)) + { + return sal::static_int_cast(reinterpret_cast(dynamic_cast(this))); } return 0; } @@ -3028,6 +3218,7 @@ void SwXStyle::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) } } + void SwXStyle::Invalidate() { m_sStyleName.clear(); @@ -3694,6 +3885,38 @@ SwXFrameStyle::SwXFrameStyle ( SwDoc *pDoc ) SwXFrameStyle::~SwXFrameStyle() { } +void SwXFrameStyle::SetItem(enum RES_FRMATR eAtr, const SfxPoolItem& rItem) +{ + // As I was told, for some entirely unobvious reason getting an + // item from a style has to look as follows: + SfxStyleSheetBasePool* pBasePool = GetBasePool(); + if (pBasePool) + { + SfxStyleSheetBase* pBase = pBasePool->Find(GetStyleName()); + if (pBase) + { + rtl::Reference< SwDocStyleSheet > xStyle( new SwDocStyleSheet( *static_cast(pBase) ) ); + SfxItemSet& rStyleSet = xStyle->GetItemSet(); + SfxItemSet aSet(*rStyleSet.GetPool(), eAtr, eAtr); + aSet.Put(rItem); + xStyle->SetItemSet(aSet); + } + } +} + +const SfxPoolItem* SwXFrameStyle::GetItem(enum RES_FRMATR eAtr) +{ + // As I was told, for some entirely unobvious reason getting an + // item from a style has to look as follows: + SfxStyleSheetBasePool* pBasePool = GetBasePool(); + if(!pBasePool) + return nullptr; + SfxStyleSheetBase* pBase = pBasePool->Find(GetStyleName()); + if(!pBase) + return nullptr; + rtl::Reference< SwDocStyleSheet > xStyle( new SwDocStyleSheet( *static_cast(pBase)) ); + return &xStyle->GetItemSet().Get(eAtr); +} uno::Sequence< uno::Type > SwXFrameStyle::getTypes( ) throw(uno::RuntimeException, std::exception) { diff --git a/sw/source/filter/xml/xmlfmt.cxx b/sw/source/filter/xml/xmlfmt.cxx index aa728f99aff9..46d858c1f195 100644 --- a/sw/source/filter/xml/xmlfmt.cxx +++ b/sw/source/filter/xml/xmlfmt.cxx @@ -362,31 +362,23 @@ SvXMLImportContext *SwXMLTextStyleContext_Impl::CreateChildContext( void SwXMLTextStyleContext_Impl::Finish( bool bOverwrite ) { XMLTextStyleContext::Finish( bOverwrite ); - - if( !pConditions || XML_STYLE_FAMILY_TEXT_PARAGRAPH != GetFamily() ) + if(!pConditions || XML_STYLE_FAMILY_TEXT_PARAGRAPH != GetFamily()) return; - - uno::Reference < style::XStyle > xStyle = GetStyle(); - if( !xStyle.is() ) + uno::Reference xStyle = GetStyle(); + if(!xStyle.is()) return; - - const SwXStyle* pStyle = nullptr; - uno::Reference xStyleTunnel( xStyle, uno::UNO_QUERY); - if( xStyleTunnel.is() ) - { - pStyle = reinterpret_cast< SwXStyle * >( - sal::static_int_cast< sal_IntPtr >( xStyleTunnel->getSomething( SwXStyle::getUnoTunnelId() ))); - } - if( !pStyle ) + uno::Reference xStyleTunnel(xStyle, uno::UNO_QUERY); + if(!xStyleTunnel.is()) return; - - const SwDoc *pDoc = pStyle->GetDoc(); - - SwTextFormatColl *pColl = pDoc->FindTextFormatCollByName( pStyle->GetStyleName() ); + sw::ICoreParagraphStyle* pCoreParagraphStyle(reinterpret_cast( + xStyleTunnel->getSomething(sw::ICoreParagraphStyle::getUnoTunnelId()))); + if(!pCoreParagraphStyle) + return; + SwTextFormatColl* pColl = const_cast(pCoreParagraphStyle->GetFormatColl()); OSL_ENSURE( pColl, "Text collection not found" ); if( !pColl || RES_CONDTXTFMTCOLL != pColl->Which() ) return; - + SwDoc *pDoc = SwImport::GetDocFromXMLImport(GetImport()); const size_t nCount = pConditions->size(); OUString sName; for( size_t i = 0; i < nCount; i++ ) diff --git a/sw/source/filter/xml/xmltexte.cxx b/sw/source/filter/xml/xmltexte.cxx index fdfabd949982..2ce19b9a639f 100644 --- a/sw/source/filter/xml/xmltexte.cxx +++ b/sw/source/filter/xml/xmltexte.cxx @@ -83,88 +83,84 @@ void SwXMLTextParagraphExport::exportStyleContent( const Reference< XStyle > & rStyle ) { - const SwXStyle* pStyle = nullptr; - Reference xStyleTunnel( rStyle, UNO_QUERY); - if( xStyleTunnel.is() ) - { - pStyle = reinterpret_cast< SwXStyle * >( - sal::static_int_cast< sal_IntPtr >( xStyleTunnel->getSomething( SwXStyle::getUnoTunnelId() ))); - } - if( pStyle && SFX_STYLE_FAMILY_PARA == pStyle->GetFamily() ) + Reference xStyleTunnel(rStyle, UNO_QUERY); + Reference xServiceInfo(rStyle, UNO_QUERY); + if(!xStyleTunnel.is() || !xServiceInfo.is() || !xServiceInfo->supportsService("com.sun.star.style.ParagraphStyle")) + return; + sw::ICoreParagraphStyle* pCoreParagraphStyle(reinterpret_cast( + xStyleTunnel->getSomething(sw::ICoreParagraphStyle::getUnoTunnelId()))); + if(!pCoreParagraphStyle) + return; + const SwTextFormatColl* pColl(pCoreParagraphStyle->GetFormatColl()); + OSL_ENSURE( pColl, "There is the text collection?" ); + if( pColl && RES_CONDTXTFMTCOLL == pColl->Which() ) { - const SwDoc *pDoc = pStyle->GetDoc(); - const SwTextFormatColl *pColl = - pDoc->FindTextFormatCollByName( pStyle->GetStyleName() ); - OSL_ENSURE( pColl, "There is the text collection?" ); - if( pColl && RES_CONDTXTFMTCOLL == pColl->Which() ) + const SwFormatCollConditions& rConditions = + static_cast(pColl)->GetCondColls(); + for( size_t i=0; i < rConditions.size(); ++i ) { - const SwFormatCollConditions& rConditions = - static_cast(pColl)->GetCondColls(); - for( size_t i=0; i < rConditions.size(); ++i ) - { - const SwCollCondition& rCond = *rConditions[i]; + const SwCollCondition& rCond = *rConditions[i]; - enum XMLTokenEnum eFunc = XML_TOKEN_INVALID; - OUString sVal; - switch( rCond.GetCondition() ) + enum XMLTokenEnum eFunc = XML_TOKEN_INVALID; + OUString sVal; + switch( rCond.GetCondition() ) + { + case PARA_IN_LIST: + eFunc = XML_LIST_LEVEL; + sVal = OUString::number(rCond.GetSubCondition()+1); + break; + case PARA_IN_OUTLINE: + eFunc = XML_OUTLINE_LEVEL; + sVal = OUString::number(rCond.GetSubCondition()+1); + break; + case PARA_IN_FRAME: + eFunc = XML_TEXT_BOX; + break; + case PARA_IN_TABLEHEAD: + eFunc = XML_TABLE_HEADER; + break; + case PARA_IN_TABLEBODY: + eFunc = XML_TABLE; + break; + case PARA_IN_SECTION: + eFunc = XML_SECTION; + break; + case PARA_IN_FOOTENOTE: + eFunc = XML_FOOTNOTE; + break; + case PARA_IN_FOOTER: + eFunc = XML_FOOTER; + break; + case PARA_IN_HEADER: + eFunc = XML_HEADER; + break; + case PARA_IN_ENDNOTE: + eFunc = XML_ENDNOTE; + break; + } + OSL_ENSURE( eFunc != XML_TOKEN_INVALID, + "SwXMLExport::ExportFormat: unknown condition" ); + if( eFunc != XML_TOKEN_INVALID ) + { + OUString sCond = GetXMLToken(eFunc) + "()"; + if( !sVal.isEmpty() ) { - case PARA_IN_LIST: - eFunc = XML_LIST_LEVEL; - sVal = OUString::number(rCond.GetSubCondition()+1); - break; - case PARA_IN_OUTLINE: - eFunc = XML_OUTLINE_LEVEL; - sVal = OUString::number(rCond.GetSubCondition()+1); - break; - case PARA_IN_FRAME: - eFunc = XML_TEXT_BOX; - break; - case PARA_IN_TABLEHEAD: - eFunc = XML_TABLE_HEADER; - break; - case PARA_IN_TABLEBODY: - eFunc = XML_TABLE; - break; - case PARA_IN_SECTION: - eFunc = XML_SECTION; - break; - case PARA_IN_FOOTENOTE: - eFunc = XML_FOOTNOTE; - break; - case PARA_IN_FOOTER: - eFunc = XML_FOOTER; - break; - case PARA_IN_HEADER: - eFunc = XML_HEADER; - break; - case PARA_IN_ENDNOTE: - eFunc = XML_ENDNOTE; - break; + sCond += "=" + sVal; } - OSL_ENSURE( eFunc != XML_TOKEN_INVALID, - "SwXMLExport::ExportFormat: unknown condition" ); - if( eFunc != XML_TOKEN_INVALID ) - { - OUString sCond = GetXMLToken(eFunc) + "()"; - if( !sVal.isEmpty() ) - { - sCond += "=" + sVal; - } - GetExport().AddAttribute( XML_NAMESPACE_STYLE, - XML_CONDITION, sCond ); - OUString aString; - SwStyleNameMapper::FillProgName( - rCond.GetTextFormatColl()->GetName(), - aString, - nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, - true); - aString = GetExport().EncodeStyleName( aString ); - GetExport().AddAttribute( XML_NAMESPACE_STYLE, - XML_APPLY_STYLE_NAME, aString ); - SvXMLElementExport aElem( GetExport(), XML_NAMESPACE_STYLE, - XML_MAP, true, true ); - } + GetExport().AddAttribute( XML_NAMESPACE_STYLE, + XML_CONDITION, sCond ); + OUString aString; + SwStyleNameMapper::FillProgName( + rCond.GetTextFormatColl()->GetName(), + aString, + nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, + true); + aString = GetExport().EncodeStyleName( aString ); + GetExport().AddAttribute( XML_NAMESPACE_STYLE, + XML_APPLY_STYLE_NAME, aString ); + SvXMLElementExport aElem( GetExport(), XML_NAMESPACE_STYLE, + XML_MAP, true, true ); } } } -- cgit