Kaydet (Commit) 9b73d3a4 authored tarafından Matúš Kukan's avatar Matúš Kukan

sfx: Use constructor feature for SfxGlobalEvents_Impl.

Change-Id: Ie93235666e035d6a594cfbe112f7a0d935dae1c4
üst 21bc6014
......@@ -236,6 +236,7 @@ $(eval $(call gb_Library_add_exception_objects,sfx,\
sfx2/source/menu/thessubmenu \
sfx2/source/menu/virtmenu \
sfx2/source/notify/eventsupplier \
sfx2/source/notify/globalevents \
sfx2/source/notify/hintpost \
sfx2/source/sidebar/Sidebar \
sfx2/source/sidebar/SidebarChildWindow \
......
......@@ -25,7 +25,6 @@
#include "SfxDocumentMetaData.hxx"
#include "appbaslib.hxx"
#include "doctemplates.hxx"
#include "eventsupplier.hxx"
#include "fltoptint.hxx"
#include "frmload.hxx"
#include "objshimp.hxx"
......@@ -1799,7 +1798,6 @@ SFX2_DLLPUBLIC void* SAL_CALL sfx_component_getFactory(
// Write no ";" at end of line and dont forget "else" ! (see macro)
//=============================================================================
IF_NAME_CREATECOMPONENTFACTORY( BackingComp )
IF_NAME_CREATECOMPONENTFACTORY( SfxGlobalEvents_Impl )
IF_NAME_CREATECOMPONENTFACTORY( SfxFrameLoader_Impl )
IF_NAME_CREATECOMPONENTFACTORY( SfxDocTplService )
IF_NAME_CREATECOMPONENTFACTORY( ShutdownIcon )
......
......@@ -20,9 +20,9 @@
#ifndef INCLUDED_SFX2_SOURCE_INC_EVENTSUPPLIER_HXX
#define INCLUDED_SFX2_SOURCE_INC_EVENTSUPPLIER_HXX
#include <com/sun/star/lang/XTypeProvider.hpp>
#include <sal/types.h>
#include <com/sun/star/container/XNameReplace.hpp>
#include <com/sun/star/container/XSet.hpp>
#include <com/sun/star/document/XEventListener.hpp>
#include <com/sun/star/document/XEventBroadcaster.hpp>
#include <com/sun/star/document/XDocumentEventListener.hpp>
......@@ -32,11 +32,7 @@
#include <com/sun/star/task/XJobExecutor.hpp>
#include <com/sun/star/uno/Reference.hxx>
#include <com/sun/star/uno/Type.hxx>
#include <sal/types.h>
#include <osl/mutex.hxx>
#include <cppuhelper/implbase1.hxx>
#include <cppuhelper/implbase2.hxx>
#include <cppuhelper/implbase3.hxx>
#include <comphelper/sequenceashashmap.hxx>
#include <comphelper/sequenceasvector.hxx>
#include <sfx2/sfxuno.hxx>
......@@ -98,134 +94,7 @@ public:
const ::comphelper::NamedValueCollection& i_eventDescriptor,
::comphelper::NamedValueCollection& o_normalizedDescriptor,
SfxObjectShell* i_document );
};
//=============================================================================
struct ModelCollectionMutexBase
{
public:
::osl::Mutex m_aLock;
};
//=============================================================================
typedef ::std::vector< css::uno::Reference< css::frame::XModel > > TModelList;
//=============================================================================
class ModelCollectionEnumeration : public ModelCollectionMutexBase
, public ::cppu::WeakImplHelper1< css::container::XEnumeration >
{
//-------------------------------------------------------------------------
// member
//-------------------------------------------------------------------------
private:
TModelList m_lModels;
TModelList::iterator m_pEnumerationIt;
//-------------------------------------------------------------------------
// native interface
//-------------------------------------------------------------------------
public:
ModelCollectionEnumeration();
virtual ~ModelCollectionEnumeration();
void setModelList(const TModelList& rList);
//-------------------------------------------------------------------------
// uno interface
//-------------------------------------------------------------------------
public:
// css.container.XEnumeration
virtual sal_Bool SAL_CALL hasMoreElements()
throw(css::uno::RuntimeException);
virtual css::uno::Any SAL_CALL nextElement()
throw(css::container::NoSuchElementException,
css::lang::WrappedTargetException ,
css::uno::RuntimeException );
};
//=============================================================================
//TODO: remove support of obsolete document::XEventBroadcaster/Listener
class SfxGlobalEvents_Impl : public ModelCollectionMutexBase
, public ::cppu::WeakImplHelper3< css::lang::XServiceInfo
, css::frame::XGlobalEventBroadcaster
, css::document::XEventListener
>
{
css::uno::Reference< css::container::XNameReplace > m_xEvents;
css::uno::Reference< css::document::XEventListener > m_xJobExecutorListener;
::cppu::OInterfaceContainerHelper m_aLegacyListeners;
::cppu::OInterfaceContainerHelper m_aDocumentListeners;
TModelList m_lModels;
GlobalEventConfig* pImp;
public:
SfxGlobalEvents_Impl(const css::uno::Reference < css::uno::XComponentContext >& rxContext);
virtual ~SfxGlobalEvents_Impl();
SFX_DECL_XSERVICEINFO
// css.document.XEventBroadcaster
virtual css::uno::Reference< css::container::XNameReplace > SAL_CALL getEvents()
throw(css::uno::RuntimeException);
virtual void SAL_CALL addEventListener(const css::uno::Reference< css::document::XEventListener >& xListener)
throw(css::uno::RuntimeException);
virtual void SAL_CALL removeEventListener( const css::uno::Reference< css::document::XEventListener >& xListener)
throw(css::uno::RuntimeException);
// css.document.XDocumentEventBroadcaster
virtual void SAL_CALL addDocumentEventListener( const css::uno::Reference< css::document::XDocumentEventListener >& _Listener ) throw (css::uno::RuntimeException);
virtual void SAL_CALL removeDocumentEventListener( const css::uno::Reference< css::document::XDocumentEventListener >& _Listener ) throw (css::uno::RuntimeException);
virtual void SAL_CALL notifyDocumentEvent( const OUString& _EventName, const css::uno::Reference< css::frame::XController2 >& _ViewController, const css::uno::Any& _Supplement ) throw (css::lang::IllegalArgumentException, css::lang::NoSupportException, css::uno::RuntimeException);
// css.document.XEventListener
virtual void SAL_CALL notifyEvent(const css::document::EventObject& aEvent)
throw(css::uno::RuntimeException);
// css.document.XDocumentEventListener
virtual void SAL_CALL documentEventOccured( const css::document::DocumentEvent& Event ) throw (css::uno::RuntimeException);
// css.container.XSet
virtual sal_Bool SAL_CALL has(const css::uno::Any& aElement)
throw(css::uno::RuntimeException);
virtual void SAL_CALL insert(const css::uno::Any& aElement)
throw(css::lang::IllegalArgumentException ,
css::container::ElementExistException,
css::uno::RuntimeException );
virtual void SAL_CALL remove(const css::uno::Any& aElement)
throw(css::lang::IllegalArgumentException ,
css::container::NoSuchElementException,
css::uno::RuntimeException );
// css.container.XEnumerationAccess
virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration()
throw(css::uno::RuntimeException);
// css.container.XElementAccess
virtual css::uno::Type SAL_CALL getElementType()
throw(css::uno::RuntimeException);
virtual sal_Bool SAL_CALL hasElements()
throw(css::uno::RuntimeException);
// css.lang.XEventListener
virtual void SAL_CALL disposing(const css::lang::EventObject& aEvent)
throw(css::uno::RuntimeException);
private:
// threadsafe
void implts_notifyJobExecution(const css::document::EventObject& aEvent);
void implts_checkAndExecuteEventBindings(const css::document::DocumentEvent& aEvent);
void implts_notifyListener(const css::document::DocumentEvent& aEvent);
// not threadsafe
TModelList::iterator impl_searchDoc(const css::uno::Reference< css::frame::XModel >& xModel);
static void Execute( css::uno::Any& aEventData, const css::document::DocumentEvent& aTrigger, SfxObjectShell* pDoc );
};
#endif
......
This diff is collapsed.
......@@ -58,7 +58,8 @@
<implementation name="com.sun.star.comp.sfx2.DocumentTemplates">
<service name="com.sun.star.frame.DocumentTemplates"/>
</implementation>
<implementation name="com.sun.star.comp.sfx2.GlobalEventBroadcaster">
<implementation name="com.sun.star.comp.sfx2.GlobalEventBroadcaster"
constructor="com_sun_star_comp_sfx2_GlobalEventBroadcaster_get_implementation">
<service name="com.sun.star.frame.GlobalEventBroadcaster"/>
</implementation>
<implementation name="com.sun.star.comp.sfx2.IFrameObject"
......
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