Kaydet (Commit) 79fa9bb7 authored tarafından Maxim Monastirsky's avatar Maxim Monastirsky

Implement the XDocumentEventBroadcaster interface in OReportDefinition

On 5-0 branch this change fixed tdf#92203, but it's not needed on
master, because of 22328a22. Still
it's nice to have, as the XEventBroadcaster which OReportDefinition
currently implements "should not be used anymore" according to IDL
doc.

Change-Id: I4101dac0078df7cb06f4d33da2a722cfbafb5608
üst f0920199
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
#include "ReportHelperDefines.hxx" #include "ReportHelperDefines.hxx"
#include <com/sun/star/datatransfer/XTransferable.hpp> #include <com/sun/star/datatransfer/XTransferable.hpp>
#include <com/sun/star/document/XDocumentEventBroadcaster.hpp>
#include <com/sun/star/document/XDocumentPropertiesSupplier.hpp> #include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
#include <com/sun/star/document/XUndoManagerSupplier.hpp> #include <com/sun/star/document/XUndoManagerSupplier.hpp>
#include <com/sun/star/frame/XModule.hpp> #include <com/sun/star/frame/XModule.hpp>
...@@ -61,6 +62,7 @@ namespace reportdesign ...@@ -61,6 +62,7 @@ namespace reportdesign
class OReportComponentProperties; class OReportComponentProperties;
typedef cppu::PartialWeakComponentImplHelper< css::report::XReportDefinition typedef cppu::PartialWeakComponentImplHelper< css::report::XReportDefinition
, css::document::XEventBroadcaster , css::document::XEventBroadcaster
, css::document::XDocumentEventBroadcaster
, css::lang::XServiceInfo , css::lang::XServiceInfo
, css::frame::XModule , css::frame::XModule
, css::lang::XUnoTunnel , css::lang::XUnoTunnel
...@@ -335,6 +337,11 @@ namespace reportdesign ...@@ -335,6 +337,11 @@ namespace reportdesign
virtual void SAL_CALL addEventListener( const css::uno::Reference< css::document::XEventListener >& aListener ) throw (css::uno::RuntimeException, std::exception) override; virtual void SAL_CALL addEventListener( const css::uno::Reference< css::document::XEventListener >& aListener ) throw (css::uno::RuntimeException, std::exception) override;
virtual void SAL_CALL removeEventListener( const css::uno::Reference< css::document::XEventListener >& aListener ) throw (css::uno::RuntimeException, std::exception) override; virtual void SAL_CALL removeEventListener( const css::uno::Reference< css::document::XEventListener >& aListener ) throw (css::uno::RuntimeException, std::exception) override;
// document::XDocumentEventBroadcaster
virtual void SAL_CALL addDocumentEventListener( const css::uno::Reference< css::document::XDocumentEventListener >& rListener ) throw (css::uno::RuntimeException, std::exception) override;
virtual void SAL_CALL removeDocumentEventListener( const css::uno::Reference< css::document::XDocumentEventListener >& rListener ) throw (css::uno::RuntimeException, std::exception) override;
virtual void SAL_CALL notifyDocumentEvent( const OUString& rEventName, const css::uno::Reference< css::frame::XController2 >& rViewController, const css::uno::Any& rSupplement ) throw (css::lang::IllegalArgumentException, css::lang::NoSupportException, css::uno::RuntimeException, std::exception) override;
// XUIConfigurationManagerSupplier // XUIConfigurationManagerSupplier
virtual css::uno::Reference< css::ui::XUIConfigurationManager > SAL_CALL getUIConfigurationManager( ) throw (css::uno::RuntimeException, std::exception) override; virtual css::uno::Reference< css::ui::XUIConfigurationManager > SAL_CALL getUIConfigurationManager( ) throw (css::uno::RuntimeException, std::exception) override;
......
...@@ -478,6 +478,7 @@ struct OReportDefinitionImpl ...@@ -478,6 +478,7 @@ struct OReportDefinitionImpl
::cppu::OInterfaceContainerHelper m_aStorageChangeListeners; ::cppu::OInterfaceContainerHelper m_aStorageChangeListeners;
::cppu::OInterfaceContainerHelper m_aCloseListener; ::cppu::OInterfaceContainerHelper m_aCloseListener;
::cppu::OInterfaceContainerHelper m_aModifyListeners; ::cppu::OInterfaceContainerHelper m_aModifyListeners;
::cppu::OInterfaceContainerHelper m_aLegacyEventListeners;
::cppu::OInterfaceContainerHelper m_aDocEventListeners; ::cppu::OInterfaceContainerHelper m_aDocEventListeners;
::std::vector< uno::Reference< frame::XController> > m_aControllers; ::std::vector< uno::Reference< frame::XController> > m_aControllers;
uno::Sequence< beans::PropertyValue > m_aArgs; uno::Sequence< beans::PropertyValue > m_aArgs;
...@@ -532,6 +533,7 @@ struct OReportDefinitionImpl ...@@ -532,6 +533,7 @@ struct OReportDefinitionImpl
:m_aStorageChangeListeners(_aMutex) :m_aStorageChangeListeners(_aMutex)
,m_aCloseListener(_aMutex) ,m_aCloseListener(_aMutex)
,m_aModifyListeners(_aMutex) ,m_aModifyListeners(_aMutex)
,m_aLegacyEventListeners(_aMutex)
,m_aDocEventListeners(_aMutex) ,m_aDocEventListeners(_aMutex)
,m_sMimeType(MIMETYPE_OASIS_OPENDOCUMENT_TEXT_ASCII) ,m_sMimeType(MIMETYPE_OASIS_OPENDOCUMENT_TEXT_ASCII)
,m_sIdentifier(SERVICE_REPORTDEFINITION) ,m_sIdentifier(SERVICE_REPORTDEFINITION)
...@@ -653,6 +655,7 @@ void SAL_CALL OReportDefinition::disposing() ...@@ -653,6 +655,7 @@ void SAL_CALL OReportDefinition::disposing()
lang::EventObject aDisposeEvent( static_cast< ::cppu::OWeakObject* >( this ) ); lang::EventObject aDisposeEvent( static_cast< ::cppu::OWeakObject* >( this ) );
m_pImpl->m_aModifyListeners.disposeAndClear( aDisposeEvent ); m_pImpl->m_aModifyListeners.disposeAndClear( aDisposeEvent );
m_pImpl->m_aCloseListener.disposeAndClear( aDisposeEvent ); m_pImpl->m_aCloseListener.disposeAndClear( aDisposeEvent );
m_pImpl->m_aLegacyEventListeners.disposeAndClear( aDisposeEvent );
m_pImpl->m_aDocEventListeners.disposeAndClear( aDisposeEvent ); m_pImpl->m_aDocEventListeners.disposeAndClear( aDisposeEvent );
m_pImpl->m_aStorageChangeListeners.disposeAndClear( aDisposeEvent ); m_pImpl->m_aStorageChangeListeners.disposeAndClear( aDisposeEvent );
...@@ -1848,11 +1851,44 @@ void OReportDefinition::notifyEvent(const OUString& _sEventName) ...@@ -1848,11 +1851,44 @@ void OReportDefinition::notifyEvent(const OUString& _sEventName)
::connectivity::checkDisposed(ReportDefinitionBase::rBHelper.bDisposed); ::connectivity::checkDisposed(ReportDefinitionBase::rBHelper.bDisposed);
document::EventObject aEvt(*this, _sEventName); document::EventObject aEvt(*this, _sEventName);
aGuard.clear(); aGuard.clear();
m_pImpl->m_aDocEventListeners.notifyEach(&document::XEventListener::notifyEvent,aEvt); m_pImpl->m_aLegacyEventListeners.notifyEach(&document::XEventListener::notifyEvent,aEvt);
} }
catch (const uno::Exception&) catch (const uno::Exception&)
{ {
} }
notifyDocumentEvent(_sEventName, nullptr, css::uno::Any());
}
// document::XDocumentEventBroadcaster
void SAL_CALL OReportDefinition::notifyDocumentEvent( const OUString& rEventName, const uno::Reference< frame::XController2 >& rViewController, const uno::Any& rSupplement ) throw (lang::IllegalArgumentException, lang::NoSupportException, uno::RuntimeException, std::exception)
{
try
{
::osl::ResettableMutexGuard aGuard(m_aMutex);
::connectivity::checkDisposed(ReportDefinitionBase::rBHelper.bDisposed);
document::DocumentEvent aEvt(*this, rEventName, rViewController, rSupplement);
aGuard.clear();
m_pImpl->m_aDocEventListeners.notifyEach(&document::XDocumentEventListener::documentEventOccured,aEvt);
}
catch (const uno::Exception&)
{
}
}
void SAL_CALL OReportDefinition::addDocumentEventListener( const uno::Reference< document::XDocumentEventListener >& rListener ) throw (uno::RuntimeException, std::exception)
{
::osl::MutexGuard aGuard(m_aMutex);
::connectivity::checkDisposed(ReportDefinitionBase::rBHelper.bDisposed);
if ( rListener.is() )
m_pImpl->m_aDocEventListeners.addInterface(rListener);
}
void SAL_CALL OReportDefinition::removeDocumentEventListener( const uno::Reference< document::XDocumentEventListener >& rListener ) throw (uno::RuntimeException, std::exception)
{
::osl::MutexGuard aGuard(m_aMutex);
::connectivity::checkDisposed(ReportDefinitionBase::rBHelper.bDisposed);
m_pImpl->m_aDocEventListeners.removeInterface(rListener);
} }
// document::XEventBroadcaster // document::XEventBroadcaster
...@@ -1861,14 +1897,14 @@ void SAL_CALL OReportDefinition::addEventListener(const uno::Reference< document ...@@ -1861,14 +1897,14 @@ void SAL_CALL OReportDefinition::addEventListener(const uno::Reference< document
::osl::MutexGuard aGuard(m_aMutex); ::osl::MutexGuard aGuard(m_aMutex);
::connectivity::checkDisposed(ReportDefinitionBase::rBHelper.bDisposed); ::connectivity::checkDisposed(ReportDefinitionBase::rBHelper.bDisposed);
if ( _xListener.is() ) if ( _xListener.is() )
m_pImpl->m_aDocEventListeners.addInterface(_xListener); m_pImpl->m_aLegacyEventListeners.addInterface(_xListener);
} }
void SAL_CALL OReportDefinition::removeEventListener( const uno::Reference< document::XEventListener >& _xListener ) throw (uno::RuntimeException, std::exception) void SAL_CALL OReportDefinition::removeEventListener( const uno::Reference< document::XEventListener >& _xListener ) throw (uno::RuntimeException, std::exception)
{ {
::osl::MutexGuard aGuard(m_aMutex); ::osl::MutexGuard aGuard(m_aMutex);
::connectivity::checkDisposed(ReportDefinitionBase::rBHelper.bDisposed); ::connectivity::checkDisposed(ReportDefinitionBase::rBHelper.bDisposed);
m_pImpl->m_aDocEventListeners.removeInterface(_xListener); m_pImpl->m_aLegacyEventListeners.removeInterface(_xListener);
} }
// document::XViewDataSupplier // document::XViewDataSupplier
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment