summaryrefslogtreecommitdiff
path: root/sw/source
diff options
context:
space:
mode:
authorBjoern Michaelsen <bjoern.michaelsen@canonical.com>2015-12-21 03:55:14 +0100
committerBjoern Michaelsen <bjoern.michaelsen@canonical.com>2015-12-24 00:03:02 +0100
commit57099592e3b5a7dced8658a67db24c28a59da94b (patch)
tree62ebcde8baad583cea88c51ec732cadc0f1146c7 /sw/source
parent4bc9c291f33d0e64100b12f7011460250a08bcd1 (diff)
move SwXStyle entirely into compilation unit
Change-Id: Icfcb4320aef9ebe2c5fcc84106de005934d51a3f
Diffstat (limited to 'sw/source')
-rw-r--r--sw/source/core/inc/unoevent.hxx5
-rw-r--r--sw/source/core/unocore/unoevent.cxx40
-rw-r--r--sw/source/core/unocore/unostyle.cxx241
-rw-r--r--sw/source/filter/xml/xmlfmt.cxx30
-rw-r--r--sw/source/filter/xml/xmltexte.cxx148
5 files changed, 324 insertions, 140 deletions
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 <svtools/unoevent.hxx>
+#include <unostyle.hxx>
#include <svl/macitem.hxx>
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<SwDocStyleSheet*>(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<SwDocStyleSheet*>(pBase)) );
- return static_cast<const SvxMacroItem&>(xStyle->GetItemSet().Get(RES_FRMMACRO));
- }
- else
- return aEmptyMacroItem;
- }
- else
- return aEmptyMacroItem;
+ const SfxPoolItem* pItem(m_rStyle.GetItem(RES_FRMMACRO));
+ return pItem ? static_cast<const SvxMacroItem&>(*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<UnoTunnelIdInit, theSwXStyleUnoTunnelId> {};
+ class theCoreParagraphUnoTunnelId : public rtl::Static<UnoTunnelIdInit, theCoreParagraphUnoTunnelId> {};
}
-const uno::Sequence< sal_Int8 > & SwXStyle::getUnoTunnelId()
+const uno::Sequence<sal_Int8>& SwXStyle::getUnoTunnelId()
{
return theSwXStyleUnoTunnelId::get().getSeq();
}
-sal_Int64 SAL_CALL SwXStyle::getSomething( const uno::Sequence< sal_Int8 >& rId )
+const uno::Sequence<sal_Int8>& sw::ICoreParagraphStyle::getUnoTunnelId()
+{
+ return theCoreParagraphUnoTunnelId::get().getSeq();
+}
+
+sal_Int64 SAL_CALL SwXStyle::getSomething(const uno::Sequence<sal_Int8>& 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<sal_Int64>(reinterpret_cast<sal_IntPtr>(this));
+ }
+ else if(0 == memcmp(sw::ICoreParagraphStyle::getUnoTunnelId().getConstArray(), rId.getConstArray(), 16))
+ {
+ return sal::static_int_cast<sal_Int64>(reinterpret_cast<sal_IntPtr>(dynamic_cast<sw::ICoreParagraphStyle*>(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<SwDocStyleSheet*>(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<SwDocStyleSheet*>(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<style::XStyle> xStyle = GetStyle();
+ if(!xStyle.is())
return;
-
- const SwXStyle* pStyle = nullptr;
- uno::Reference<lang::XUnoTunnel> 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<lang::XUnoTunnel> 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<sw::ICoreParagraphStyle*>(
+ xStyleTunnel->getSomething(sw::ICoreParagraphStyle::getUnoTunnelId())));
+ if(!pCoreParagraphStyle)
+ return;
+ SwTextFormatColl* pColl = const_cast<SwTextFormatColl*>(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<XUnoTunnel> 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<XUnoTunnel> xStyleTunnel(rStyle, UNO_QUERY);
+ Reference<lang::XServiceInfo> xServiceInfo(rStyle, UNO_QUERY);
+ if(!xStyleTunnel.is() || !xServiceInfo.is() || !xServiceInfo->supportsService("com.sun.star.style.ParagraphStyle"))
+ return;
+ sw::ICoreParagraphStyle* pCoreParagraphStyle(reinterpret_cast<sw::ICoreParagraphStyle*>(
+ 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<const SwConditionTextFormatColl *>(pColl)->GetCondColls();
+ for( size_t i=0; i < rConditions.size(); ++i )
{
- const SwFormatCollConditions& rConditions =
- static_cast<const SwConditionTextFormatColl *>(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 );
}
}
}