diff options
Diffstat (limited to 'embeddedobj/source/msole/olemisc.cxx')
-rw-r--r-- | embeddedobj/source/msole/olemisc.cxx | 91 |
1 files changed, 55 insertions, 36 deletions
diff --git a/embeddedobj/source/msole/olemisc.cxx b/embeddedobj/source/msole/olemisc.cxx index 90041729d03d..4f50aedeba5f 100644 --- a/embeddedobj/source/msole/olemisc.cxx +++ b/embeddedobj/source/msole/olemisc.cxx @@ -28,33 +28,33 @@ #include <com/sun/star/lang/XComponent.hpp> #include <com/sun/star/lang/DisposedException.hpp> -#include <cppuhelper/interfacecontainer.h> +#include <comphelper/multicontainer2.hxx> #include <comphelper/sequenceashashmap.hxx> +#include <cppuhelper/supportsservice.hxx> +#include <osl/diagnose.h> #include <oleembobj.hxx> +#include <utility> #include "olepersist.hxx" #include "ownview.hxx" -#if defined(_WIN32) #include "olecomponent.hxx" -#endif using namespace ::com::sun::star; -OleEmbeddedObject::OleEmbeddedObject( const uno::Reference< uno::XComponentContext >& xContext, +OleEmbeddedObject::OleEmbeddedObject( uno::Reference< uno::XComponentContext > xContext, const uno::Sequence< sal_Int8 >& aClassID, - const OUString& aClassName ) -: m_pOleComponent( nullptr ) -, m_bReadOnly( false ) + OUString aClassName ) +: m_bReadOnly( false ) , m_bDisposed( false ) , m_nObjectState( -1 ) , m_nTargetState( -1 ) , m_nUpdateMode ( embed::EmbedUpdateModes::ALWAYS_UPDATE ) -, m_xContext( xContext ) +, m_xContext(std::move( xContext )) , m_aClassID( aClassID ) -, m_aClassName( aClassName ) +, m_aClassName(std::move( aClassName )) , m_bWaitSaveCompleted( false ) , m_bNewVisReplInStream( true ) , m_bStoreLoaded( false ) @@ -77,14 +77,13 @@ OleEmbeddedObject::OleEmbeddedObject( const uno::Reference< uno::XComponentConte // In case of loading from persistent entry the classID of the object // will be retrieved from the entry, during construction it is unknown -OleEmbeddedObject::OleEmbeddedObject( const uno::Reference< uno::XComponentContext >& xContext, bool bLink ) -: m_pOleComponent( nullptr ) -, m_bReadOnly( false ) +OleEmbeddedObject::OleEmbeddedObject( uno::Reference< uno::XComponentContext > xContext, bool bLink ) +: m_bReadOnly( false ) , m_bDisposed( false ) , m_nObjectState( -1 ) , m_nTargetState( -1 ) , m_nUpdateMode( embed::EmbedUpdateModes::ALWAYS_UPDATE ) -, m_xContext( xContext ) +, m_xContext(std::move( xContext )) , m_bWaitSaveCompleted( false ) , m_bNewVisReplInStream( true ) , m_bStoreLoaded( false ) @@ -107,8 +106,7 @@ OleEmbeddedObject::OleEmbeddedObject( const uno::Reference< uno::XComponentConte // this constructor let object be initialized from clipboard OleEmbeddedObject::OleEmbeddedObject( const uno::Reference< uno::XComponentContext >& xContext ) -: m_pOleComponent( nullptr ) -, m_bReadOnly( false ) +: m_bReadOnly( false ) , m_bDisposed( false ) , m_nObjectState( -1 ) , m_nTargetState( -1 ) @@ -161,14 +159,14 @@ void OleEmbeddedObject::MakeEventListenerNotification_Impl( const OUString& aEve if ( !m_pInterfaceContainer ) return; - ::cppu::OInterfaceContainerHelper* pContainer = - m_pInterfaceContainer->getContainer( + comphelper::OInterfaceContainerHelper2* pContainer = + m_pInterfaceContainer->getContainer( cppu::UnoType<document::XEventListener>::get()); if ( pContainer == nullptr ) return; document::EventObject aEvent( static_cast< ::cppu::OWeakObject* >( this ), aEventName ); - ::cppu::OInterfaceIteratorHelper pIterator(*pContainer); + comphelper::OInterfaceIteratorHelper2 pIterator(*pContainer); while (pIterator.hasMoreElements()) { try @@ -186,12 +184,12 @@ void OleEmbeddedObject::StateChangeNotification_Impl( bool bBeforeChange, sal_In { if ( m_pInterfaceContainer ) { - ::cppu::OInterfaceContainerHelper* pContainer = m_pInterfaceContainer->getContainer( + comphelper::OInterfaceContainerHelper2* pContainer = m_pInterfaceContainer->getContainer( cppu::UnoType<embed::XStateChangeListener>::get()); if ( pContainer != nullptr ) { lang::EventObject aSource( static_cast< ::cppu::OWeakObject* >( this ) ); - ::cppu::OInterfaceIteratorHelper pIterator(*pContainer); + comphelper::OInterfaceIteratorHelper2 pIterator(*pContainer); while (pIterator.hasMoreElements()) { @@ -245,8 +243,7 @@ void OleEmbeddedObject::GetRidOfComponent() } m_pOleComponent->disconnectEmbeddedObject(); - m_pOleComponent->release(); - m_pOleComponent = nullptr; + m_pOleComponent.clear(); } #endif } @@ -292,6 +289,15 @@ void OleEmbeddedObject::Dispose() } m_xParentStorage.clear(); + m_xClientSite.clear(); + m_xClosePreventer.clear(); + m_xNewCachedVisRepl.clear(); + m_xNewParentStorage.clear(); + m_xNewObjectStream.clear(); + m_xCachedVisualRepresentation.clear(); + m_xWrappedObject.clear(); + m_xParent.clear(); + m_pOleComponent.clear(); m_bDisposed = true; } @@ -376,13 +382,13 @@ uno::Reference< util::XCloseable > SAL_CALL OleEmbeddedObject::getComponent() } #if defined(_WIN32) - if (m_pOleComponent != nullptr) + if (m_pOleComponent.is()) { - return uno::Reference< util::XCloseable >( static_cast< ::cppu::OWeakObject* >( m_pOleComponent ), uno::UNO_QUERY ); + return uno::Reference< util::XCloseable >( m_pOleComponent ); } #endif - assert(m_pOleComponent == nullptr); + assert(!m_pOleComponent.is()); // TODO/LATER: Is it correct??? return uno::Reference< util::XCloseable >(); // throw uno::RuntimeException(); // TODO @@ -405,7 +411,7 @@ void SAL_CALL OleEmbeddedObject::addStateChangeListener( const uno::Reference< e throw lang::DisposedException(); // TODO if ( !m_pInterfaceContainer ) - m_pInterfaceContainer.reset(new ::cppu::OMultiTypeInterfaceContainerHelper( m_aMutex )); + m_pInterfaceContainer.reset(new comphelper::OMultiTypeInterfaceContainerHelper2( m_aMutex )); m_pInterfaceContainer->addInterface( cppu::UnoType<embed::XStateChangeListener>::get(), xListener ); @@ -452,11 +458,11 @@ void SAL_CALL OleEmbeddedObject::close( sal_Bool bDeliverOwnership ) if ( m_pInterfaceContainer ) { - ::cppu::OInterfaceContainerHelper* pContainer = + comphelper::OInterfaceContainerHelper2* pContainer = m_pInterfaceContainer->getContainer( cppu::UnoType<util::XCloseListener>::get()); if ( pContainer != nullptr ) { - ::cppu::OInterfaceIteratorHelper pIterator(*pContainer); + comphelper::OInterfaceIteratorHelper2 pIterator(*pContainer); while (pIterator.hasMoreElements()) { try @@ -474,7 +480,7 @@ void SAL_CALL OleEmbeddedObject::close( sal_Bool bDeliverOwnership ) cppu::UnoType<util::XCloseListener>::get()); if ( pContainer != nullptr ) { - ::cppu::OInterfaceIteratorHelper pCloseIterator(*pContainer); + comphelper::OInterfaceIteratorHelper2 pCloseIterator(*pContainer); while (pCloseIterator.hasMoreElements()) { try @@ -510,7 +516,7 @@ void SAL_CALL OleEmbeddedObject::addCloseListener( const uno::Reference< util::X throw lang::DisposedException(); // TODO if ( !m_pInterfaceContainer ) - m_pInterfaceContainer.reset(new ::cppu::OMultiTypeInterfaceContainerHelper( m_aMutex )); + m_pInterfaceContainer.reset(new comphelper::OMultiTypeInterfaceContainerHelper2( m_aMutex )); m_pInterfaceContainer->addInterface( cppu::UnoType<util::XCloseListener>::get(), xListener ); } @@ -555,7 +561,7 @@ void SAL_CALL OleEmbeddedObject::addEventListener( const uno::Reference< documen throw lang::DisposedException(); // TODO if ( !m_pInterfaceContainer ) - m_pInterfaceContainer.reset(new ::cppu::OMultiTypeInterfaceContainerHelper( m_aMutex )); + m_pInterfaceContainer.reset(new comphelper::OMultiTypeInterfaceContainerHelper2( m_aMutex )); m_pInterfaceContainer->addInterface( cppu::UnoType<document::XEventListener>::get(), xListener ); } @@ -681,11 +687,24 @@ void OleEmbeddedObject::initialize(const uno::Sequence<uno::Any>& rArguments) return; comphelper::SequenceAsHashMap aValues(rArguments[0]); - for (const auto& rValue : aValues) - { - if (rValue.first == "StreamReadOnly") - rValue.second >>= m_bStreamReadOnly; - } + auto it = aValues.find("StreamReadOnly"); + if (it != aValues.end()) + it->second >>= m_bStreamReadOnly; +} + +OUString SAL_CALL OleEmbeddedObject::getImplementationName() +{ + return "com.sun.star.comp.embed.OleEmbeddedObject"; +} + +sal_Bool SAL_CALL OleEmbeddedObject::supportsService(const OUString& ServiceName) +{ + return cppu::supportsService(this, ServiceName); +} + +uno::Sequence<OUString> SAL_CALL OleEmbeddedObject::getSupportedServiceNames() +{ + return { "com.sun.star.comp.embed.OleEmbeddedObject" }; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |