summaryrefslogtreecommitdiff
path: root/sd/source/ui/tools/EventMultiplexer.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sd/source/ui/tools/EventMultiplexer.cxx')
-rw-r--r--sd/source/ui/tools/EventMultiplexer.cxx826
1 files changed, 0 insertions, 826 deletions
diff --git a/sd/source/ui/tools/EventMultiplexer.cxx b/sd/source/ui/tools/EventMultiplexer.cxx
deleted file mode 100644
index 0ca94d34d..000000000
--- a/sd/source/ui/tools/EventMultiplexer.cxx
+++ /dev/null
@@ -1,826 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_sd.hxx"
-
-#include "EventMultiplexer.hxx"
-
-#include "MutexOwner.hxx"
-#include "ViewShellBase.hxx"
-#include "drawdoc.hxx"
-#include "DrawController.hxx"
-#include "SlideSorterViewShell.hxx"
-#include "framework/FrameworkHelper.hxx"
-
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/frame/XFrame.hpp>
-#include <com/sun/star/lang/DisposedException.hpp>
-#include <com/sun/star/drawing/framework/XConfigurationChangeListener.hpp>
-#include <cppuhelper/weak.hxx>
-#include <cppuhelper/compbase4.hxx>
-#include <sfx2/viewfrm.hxx>
-
-using namespace ::com::sun::star;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::drawing::framework;
-
-using ::rtl::OUString;
-using ::sd::framework::FrameworkHelper;
-
-class SdDrawDocument;
-
-namespace {
-static const sal_Int32 ResourceActivationEvent = 0;
-static const sal_Int32 ResourceDeactivationEvent = 1;
-static const sal_Int32 ConfigurationUpdateEvent = 2;
-}
-
-namespace sd { namespace tools {
-
-typedef cppu::WeakComponentImplHelper4<
- ::com::sun::star::beans::XPropertyChangeListener,
- ::com::sun::star::frame::XFrameActionListener,
- ::com::sun::star::view::XSelectionChangeListener,
- ::com::sun::star::drawing::framework::XConfigurationChangeListener
- > EventMultiplexerImplementationInterfaceBase;
-
-class EventMultiplexer::Implementation
- : protected MutexOwner,
- public EventMultiplexerImplementationInterfaceBase,
- public SfxListener
-{
-public:
- Implementation (ViewShellBase& rBase);
- ~Implementation (void);
-
- void AddEventListener (
- Link& rCallback,
- EventMultiplexerEvent::EventId aEventTypes);
-
- void RemoveEventListener (
- Link& rCallback,
- EventMultiplexerEvent::EventId aEventTypes);
-
- void CallListeners (EventMultiplexerEvent& rEvent);
-
- ViewShellBase& GetViewShellBase() const { return mrBase; }
-
- //===== lang::XEventListener ==============================================
- virtual void SAL_CALL
- disposing (const ::com::sun::star::lang::EventObject& rEventObject)
- throw (::com::sun::star::uno::RuntimeException);
-
-
- //===== beans::XPropertySetListener =======================================
- virtual void SAL_CALL
- propertyChange (
- const com::sun::star::beans::PropertyChangeEvent& rEvent)
- throw (::com::sun::star::uno::RuntimeException);
-
- //===== view::XSelectionChangeListener ====================================
- virtual void SAL_CALL
- selectionChanged (
- const com::sun::star::lang::EventObject& rEvent)
- throw (::com::sun::star::uno::RuntimeException);
-
- //===== frame::XFrameActionListener ======================================
- /** For certain actions the listener connects to a new controller of the
- frame it is listening to. This usually happens when the view shell
- in the center pane is replaced by another view shell.
- */
- virtual void SAL_CALL
- frameAction (const ::com::sun::star::frame::FrameActionEvent& rEvent)
- throw (::com::sun::star::uno::RuntimeException);
-
- //===== drawing::framework::XConfigurationChangeListener ==================
- virtual void SAL_CALL
- notifyConfigurationChange (
- const ::com::sun::star::drawing::framework::ConfigurationChangeEvent& rEvent)
- throw (::com::sun::star::uno::RuntimeException);
-
-
- virtual void SAL_CALL disposing (void);
-
-protected:
- virtual void Notify (
- SfxBroadcaster& rBroadcaster,
- const SfxHint& rHint);
-
-private:
- ViewShellBase& mrBase;
- typedef ::std::pair<Link,EventMultiplexerEvent::EventId> ListenerDescriptor;
- typedef ::std::vector<ListenerDescriptor> ListenerList;
- ListenerList maListeners;
-
- /// Remember whether we are listening to the UNO controller.
- bool mbListeningToController;
- /// Remember whether we are listening to the frame.
- bool mbListeningToFrame;
-
- ::com::sun::star::uno::WeakReference<
- ::com::sun::star::frame::XController> mxControllerWeak;
- ::com::sun::star::uno::WeakReference<
- ::com::sun::star::frame::XFrame> mxFrameWeak;
- ::com::sun::star::uno::WeakReference<
- ::com::sun::star::view::XSelectionSupplier> mxSlideSorterSelectionWeak;
- SdDrawDocument* mpDocument;
- ::com::sun::star::uno::WeakReference<
- ::com::sun::star::drawing::framework::XConfigurationController>
- mxConfigurationControllerWeak;
-
- static const ::rtl::OUString msCurrentPagePropertyName;
- static const ::rtl::OUString msEditModePropertyName;
-
- void ReleaseListeners (void);
-
- void ConnectToController (void);
- void DisconnectFromController (void);
-
- void CallListeners (
- EventMultiplexerEvent::EventId eId,
- void* pUserData = NULL);
-
- /** This method throws a DisposedException when the object has already been
- disposed.
- */
- void ThrowIfDisposed (void)
- throw (::com::sun::star::lang::DisposedException);
-
- DECL_LINK(SlideSorterSelectionChangeListener, void*);
-};
-
-
-const ::rtl::OUString EventMultiplexer::Implementation::msCurrentPagePropertyName (
- RTL_CONSTASCII_USTRINGPARAM("CurrentPage"));
-const ::rtl::OUString EventMultiplexer::Implementation::msEditModePropertyName (
- RTL_CONSTASCII_USTRINGPARAM("IsMasterPageMode"));
-
-
-//===== EventMultiplexer ======================================================
-
-EventMultiplexer::EventMultiplexer (ViewShellBase& rBase)
- : mpImpl (new EventMultiplexer::Implementation(rBase))
-{
- mpImpl->acquire();
-}
-
-
-
-
-EventMultiplexer::~EventMultiplexer (void)
-{
- try
- {
- mpImpl->dispose();
- // Now we call release twice. One decreases the use count of the
- // implementation object (if all goes well to zero and thus deletes
- // it.) The other releases the auto_ptr and prevents the
- // implementation object from being deleted a second time.
- mpImpl->release();
- mpImpl.release();
- }
- catch (const RuntimeException&)
- {
- }
- catch (const Exception&)
- {
- }
-}
-
-
-
-
-void EventMultiplexer::AddEventListener (
- Link& rCallback,
- EventMultiplexerEvent::EventId aEventTypes)
-{
- mpImpl->AddEventListener (rCallback, aEventTypes);
-}
-
-
-
-
-void EventMultiplexer::RemoveEventListener (
- Link& rCallback,
- EventMultiplexerEvent::EventId aEventTypes)
-{
- mpImpl->RemoveEventListener (rCallback, aEventTypes);
-}
-
-
-
-
-void EventMultiplexer::MultiplexEvent(
- EventMultiplexerEvent::EventId eEventId,
- void* pUserData )
-{
- EventMultiplexerEvent aEvent (mpImpl->GetViewShellBase(), eEventId, pUserData);
- mpImpl->CallListeners(aEvent);
-}
-
-
-
-
-//===== EventMultiplexer::Implementation ======================================
-
-EventMultiplexer::Implementation::Implementation (ViewShellBase& rBase)
- : MutexOwner(),
- EventMultiplexerImplementationInterfaceBase(maMutex),
- SfxListener(),
- mrBase (rBase),
- mbListeningToController (false),
- mbListeningToFrame (false),
- mxControllerWeak(NULL),
- mxFrameWeak(NULL),
- mxSlideSorterSelectionWeak(NULL),
- mpDocument(NULL),
- mxConfigurationControllerWeak()
-{
- // Connect to the frame to listen for controllers being exchanged.
- // Listen to changes of certain properties.
- Reference<frame::XFrame> xFrame (
- mrBase.GetFrame()->GetTopFrame().GetFrameInterface(),
- uno::UNO_QUERY);
- mxFrameWeak = xFrame;
- if (xFrame.is())
- {
- xFrame->addFrameActionListener (
- Reference<frame::XFrameActionListener>(
- static_cast<XWeak*>(this), UNO_QUERY));
- mbListeningToFrame = true;
- }
-
- // Connect to the current controller.
- ConnectToController ();
-
- // Listen for document changes.
- mpDocument = mrBase.GetDocument();
- if (mpDocument != NULL)
- StartListening (*mpDocument);
-
- // Listen for configuration changes.
- Reference<XControllerManager> xControllerManager (
- Reference<XWeak>(&mrBase.GetDrawController()), UNO_QUERY);
- if (xControllerManager.is())
- {
- Reference<XConfigurationController> xConfigurationController (
- xControllerManager->getConfigurationController());
- mxConfigurationControllerWeak = xConfigurationController;
- if (xConfigurationController.is())
- {
- Reference<XComponent> xComponent (xConfigurationController, UNO_QUERY);
- if (xComponent.is())
- xComponent->addEventListener(static_cast<beans::XPropertyChangeListener*>(this));
-
- xConfigurationController->addConfigurationChangeListener(
- this,
- FrameworkHelper::msResourceActivationEvent,
- makeAny(ResourceActivationEvent));
- xConfigurationController->addConfigurationChangeListener(
- this,
- FrameworkHelper::msResourceDeactivationEvent,
- makeAny(ResourceDeactivationEvent));
- xConfigurationController->addConfigurationChangeListener(
- this,
- FrameworkHelper::msConfigurationUpdateEndEvent,
- makeAny(ConfigurationUpdateEvent));
- }
- }
-}
-
-
-
-
-EventMultiplexer::Implementation::~Implementation (void)
-{
- DBG_ASSERT( !mbListeningToFrame,
- "sd::EventMultiplexer::Implementation::~Implementation(), disposing was not called!" );
-}
-
-
-
-
-void EventMultiplexer::Implementation::ReleaseListeners (void)
-{
- if (mbListeningToFrame)
- {
- mbListeningToFrame = false;
-
- // Stop listening for changes of certain properties.
- Reference<frame::XFrame> xFrame (mxFrameWeak);
- if (xFrame.is())
- {
- xFrame->removeFrameActionListener (
- Reference<frame::XFrameActionListener>(
- static_cast<XWeak*>(this), UNO_QUERY));
- }
- }
-
- DisconnectFromController ();
-
- if (mpDocument != NULL)
- {
- EndListening (*mpDocument);
- mpDocument = NULL;
- }
-
- // Stop listening for configuration changes.
- Reference<XConfigurationController> xConfigurationController (mxConfigurationControllerWeak);
- if (xConfigurationController.is())
- {
- Reference<XComponent> xComponent (xConfigurationController, UNO_QUERY);
- if (xComponent.is())
- xComponent->removeEventListener(static_cast<beans::XPropertyChangeListener*>(this));
-
- xConfigurationController->removeConfigurationChangeListener(this);
- }
-}
-
-
-
-
-void EventMultiplexer::Implementation::AddEventListener (
- Link& rCallback,
- EventMultiplexerEvent::EventId aEventTypes)
-{
- ListenerList::iterator iListener (maListeners.begin());
- ListenerList::const_iterator iEnd (maListeners.end());
- for (;iListener!=iEnd; ++iListener)
- if (iListener->first == rCallback)
- break;
- if (iListener != maListeners.end())
- {
- // Listener exists. Update its event type set.
- iListener->second |= aEventTypes;
- }
- else
- {
- maListeners.push_back (ListenerDescriptor(rCallback,aEventTypes));
- }
-}
-
-
-
-
-void EventMultiplexer::Implementation::RemoveEventListener (
- Link& rCallback,
- EventMultiplexerEvent::EventId aEventTypes)
-{
- ListenerList::iterator iListener (maListeners.begin());
- ListenerList::const_iterator iEnd (maListeners.end());
- for (;iListener!=iEnd; ++iListener)
- if (iListener->first == rCallback)
- break;
- if (iListener != maListeners.end())
- {
- // Update the event type set.
- iListener->second &= ~aEventTypes;
- // When no events remain in the set then remove the listener.
- if (iListener->second == EID_EMPTY_SET)
- maListeners.erase (iListener);
- }
-}
-
-
-
-
-void EventMultiplexer::Implementation::ConnectToController (void)
-{
- // Just in case that we missed some event we now disconnect from the old
- // controller.
- DisconnectFromController ();
-
- // Register at the controller of the main view shell.
-
- // We have to store a (weak) reference to the controller so that we can
- // unregister without having to ask the mrBase member (which at that
- // time may be destroyed.)
- Reference<frame::XController> xController = mrBase.GetController();
- mxControllerWeak = mrBase.GetController();
-
- try
- {
- // Listen for disposing events.
- Reference<lang::XComponent> xComponent (xController, UNO_QUERY);
- if (xComponent.is())
- {
- xComponent->addEventListener (
- Reference<lang::XEventListener>(
- static_cast<XWeak*>(this), UNO_QUERY));
- mbListeningToController = true;
- }
-
- // Listen to changes of certain properties.
- Reference<beans::XPropertySet> xSet (xController, UNO_QUERY);
- if (xSet.is())
- {
- try
- {
- xSet->addPropertyChangeListener(msCurrentPagePropertyName, this);
- }
- catch (const beans::UnknownPropertyException&)
- {
- OSL_TRACE("EventMultiplexer::ConnectToController: CurrentPage unknown");
- }
-
- try
- {
- xSet->addPropertyChangeListener(msEditModePropertyName, this);
- }
- catch (const beans::UnknownPropertyException&)
- {
- OSL_TRACE("EventMultiplexer::ConnectToController: IsMasterPageMode unknown");
- }
- }
-
- // Listen for selection change events.
- Reference<view::XSelectionSupplier> xSelection (xController, UNO_QUERY);
- if (xSelection.is())
- {
- xSelection->addSelectionChangeListener(this);
- }
- }
- catch (const lang::DisposedException&)
- {
- mbListeningToController = false;
- }
-}
-
-
-
-
-void EventMultiplexer::Implementation::DisconnectFromController (void)
-{
- if (mbListeningToController)
- {
- mbListeningToController = false;
-
- Reference<frame::XController> xController = mxControllerWeak;
-
- Reference<beans::XPropertySet> xSet (xController, UNO_QUERY);
- // Remove the property listener.
- if (xSet.is())
- {
- try
- {
- xSet->removePropertyChangeListener(msCurrentPagePropertyName, this);
- }
- catch (const beans::UnknownPropertyException&)
- {
- OSL_TRACE ("DisconnectFromController: CurrentPage unknown");
- }
-
- try
- {
- xSet->removePropertyChangeListener(msEditModePropertyName, this);
- }
- catch (const beans::UnknownPropertyException&)
- {
- OSL_TRACE ("DisconnectFromController: IsMasterPageMode unknown");
- }
- }
-
- // Remove selection change listener.
- Reference<view::XSelectionSupplier> xSelection (xController, UNO_QUERY);
- if (xSelection.is())
- {
- xSelection->removeSelectionChangeListener(this);
- }
-
- // Remove listener for disposing events.
- Reference<lang::XComponent> xComponent (xController, UNO_QUERY);
- if (xComponent.is())
- {
- xComponent->removeEventListener (
- Reference<lang::XEventListener>(static_cast<XWeak*>(this), UNO_QUERY));
- }
- }
-}
-
-
-
-
-//===== lang::XEventListener ================================================
-
-void SAL_CALL EventMultiplexer::Implementation::disposing (
- const lang::EventObject& rEventObject)
- throw (RuntimeException)
-{
- if (mbListeningToController)
- {
- Reference<frame::XController> xController (mxControllerWeak);
- if (rEventObject.Source == xController)
- {
- mbListeningToController = false;
- }
- }
-
- Reference<XConfigurationController> xConfigurationController (
- mxConfigurationControllerWeak);
- if (xConfigurationController.is()
- && rEventObject.Source == xConfigurationController)
- {
- mxConfigurationControllerWeak = Reference<XConfigurationController>();
- }
-}
-
-
-
-
-//===== beans::XPropertySetListener =========================================
-
-void SAL_CALL EventMultiplexer::Implementation::propertyChange (
- const beans::PropertyChangeEvent& rEvent)
- throw (RuntimeException)
-{
- ThrowIfDisposed();
-
- if (rEvent.PropertyName.equals(msCurrentPagePropertyName))
- {
- CallListeners(EventMultiplexerEvent::EID_CURRENT_PAGE);
- }
- else if (rEvent.PropertyName.equals(msEditModePropertyName))
- {
- bool bIsMasterPageMode (false);
- rEvent.NewValue >>= bIsMasterPageMode;
- if (bIsMasterPageMode)
- CallListeners(EventMultiplexerEvent::EID_EDIT_MODE_MASTER);
- else
- CallListeners(EventMultiplexerEvent::EID_EDIT_MODE_NORMAL);
- }
-}
-
-
-
-
-//===== frame::XFrameActionListener ==========================================
-
-void SAL_CALL EventMultiplexer::Implementation::frameAction (
- const frame::FrameActionEvent& rEvent)
- throw (::com::sun::star::uno::RuntimeException)
-{
- Reference<frame::XFrame> xFrame (mxFrameWeak);
- if (rEvent.Frame == xFrame)
- switch (rEvent.Action)
- {
- case frame::FrameAction_COMPONENT_DETACHING:
- DisconnectFromController();
- CallListeners (EventMultiplexerEvent::EID_CONTROLLER_DETACHED);
- break;
-
- case frame::FrameAction_COMPONENT_REATTACHED:
- CallListeners (EventMultiplexerEvent::EID_CONTROLLER_DETACHED);
- DisconnectFromController();
- ConnectToController();
- CallListeners (EventMultiplexerEvent::EID_CONTROLLER_ATTACHED);
- break;
-
- case frame::FrameAction_COMPONENT_ATTACHED:
- ConnectToController();
- CallListeners (EventMultiplexerEvent::EID_CONTROLLER_ATTACHED);
- break;
-
- default:
- break;
- }
-}
-
-
-
-
-//===== view::XSelectionChangeListener ========================================
-
-void SAL_CALL EventMultiplexer::Implementation::selectionChanged (
- const lang::EventObject& )
- throw (::com::sun::star::uno::RuntimeException)
-{
- CallListeners (EventMultiplexerEvent::EID_EDIT_VIEW_SELECTION);
-}
-
-
-
-
-//===== drawing::framework::XConfigurationChangeListener ==================
-
-void SAL_CALL EventMultiplexer::Implementation::notifyConfigurationChange (
- const ConfigurationChangeEvent& rEvent)
- throw (RuntimeException)
-{
- sal_Int32 nEventType = 0;
- rEvent.UserData >>= nEventType;
- switch (nEventType)
- {
- case ResourceActivationEvent:
- if (rEvent.ResourceId->getResourceURL().match(FrameworkHelper::msViewURLPrefix))
- {
- CallListeners (EventMultiplexerEvent::EID_VIEW_ADDED);
-
- if (rEvent.ResourceId->isBoundToURL(
- FrameworkHelper::msCenterPaneURL, AnchorBindingMode_DIRECT))
- {
- CallListeners (EventMultiplexerEvent::EID_MAIN_VIEW_ADDED);
- }
-
- // Add selection change listener at slide sorter.
- if (rEvent.ResourceId->getResourceURL().equals(FrameworkHelper::msSlideSorterURL))
- {
- slidesorter::SlideSorterViewShell* pViewShell
- = dynamic_cast<slidesorter::SlideSorterViewShell*>(
- FrameworkHelper::GetViewShell(
- Reference<XView>(rEvent.ResourceObject,UNO_QUERY)).get());
- if (pViewShell != NULL)
- pViewShell->AddSelectionChangeListener (
- LINK(this,
- EventMultiplexer::Implementation,
- SlideSorterSelectionChangeListener));
- }
- }
- break;
-
- case ResourceDeactivationEvent:
- if (rEvent.ResourceId->getResourceURL().match(FrameworkHelper::msViewURLPrefix))
- {
- CallListeners (EventMultiplexerEvent::EID_VIEW_REMOVED);
-
- if (rEvent.ResourceId->isBoundToURL(
- FrameworkHelper::msCenterPaneURL, AnchorBindingMode_DIRECT))
- {
- CallListeners (EventMultiplexerEvent::EID_MAIN_VIEW_REMOVED);
- }
-
- // Remove selection change listener from slide sorter. Add
- // selection change listener at slide sorter.
- if (rEvent.ResourceId->getResourceURL().equals(FrameworkHelper::msSlideSorterURL))
- {
- slidesorter::SlideSorterViewShell* pViewShell
- = dynamic_cast<slidesorter::SlideSorterViewShell*>(
- FrameworkHelper::GetViewShell(
- Reference<XView>(rEvent.ResourceObject, UNO_QUERY)).get());
- if (pViewShell != NULL)
- pViewShell->RemoveSelectionChangeListener (
- LINK(this,
- EventMultiplexer::Implementation,
- SlideSorterSelectionChangeListener));
- }
- }
- break;
-
- case ConfigurationUpdateEvent:
- CallListeners (EventMultiplexerEvent::EID_CONFIGURATION_UPDATED);
- break;
- }
-
-}
-
-
-
-
-void SAL_CALL EventMultiplexer::Implementation::disposing (void)
-{
- CallListeners (EventMultiplexerEvent::EID_DISPOSING);
- ReleaseListeners();
-}
-
-
-
-
-void EventMultiplexer::Implementation::ThrowIfDisposed (void)
- throw (::com::sun::star::lang::DisposedException)
-{
- if (rBHelper.bDisposed || rBHelper.bInDispose)
- {
- throw lang::DisposedException (
- ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "SlideSorterController object has already been disposed")),
- static_cast<uno::XWeak*>(this));
- }
-}
-
-
-
-
-void EventMultiplexer::Implementation::Notify (
- SfxBroadcaster&,
- const SfxHint& rHint)
-{
- if (rHint.ISA(SdrHint))
- {
- SdrHint& rSdrHint (*PTR_CAST(SdrHint,&rHint));
- switch (rSdrHint.GetKind())
- {
- case HINT_MODELCLEARED:
- case HINT_PAGEORDERCHG:
- CallListeners (EventMultiplexerEvent::EID_PAGE_ORDER);
- break;
-
- case HINT_SWITCHTOPAGE:
- CallListeners (EventMultiplexerEvent::EID_CURRENT_PAGE);
- break;
-
- case HINT_OBJCHG:
- CallListeners(EventMultiplexerEvent::EID_SHAPE_CHANGED,
- const_cast<void*>(static_cast<const void*>(rSdrHint.GetPage())));
- break;
-
- case HINT_OBJINSERTED:
- CallListeners(EventMultiplexerEvent::EID_SHAPE_INSERTED,
- const_cast<void*>(static_cast<const void*>(rSdrHint.GetPage())));
- break;
-
- case HINT_OBJREMOVED:
- CallListeners(EventMultiplexerEvent::EID_SHAPE_REMOVED,
- const_cast<void*>(static_cast<const void*>(rSdrHint.GetPage())));
- break;
- default:
- break;
- }
- }
- else if (rHint.ISA(SfxSimpleHint))
- {
- SfxSimpleHint& rSimpleHint (*PTR_CAST(SfxSimpleHint, &rHint));
- if (rSimpleHint.GetId() == SFX_HINT_DYING)
- mpDocument = NULL;
- }
-}
-
-
-
-
-void EventMultiplexer::Implementation::CallListeners (
- EventMultiplexerEvent::EventId eId,
- void* pUserData)
-{
- EventMultiplexerEvent aEvent (mrBase, eId, pUserData);
- CallListeners(aEvent);
-}
-
-
-
-
-void EventMultiplexer::Implementation::CallListeners (EventMultiplexerEvent& rEvent)
-{
- ListenerList aCopyListeners( maListeners );
- ListenerList::iterator iListener (aCopyListeners.begin());
- ListenerList::const_iterator iListenerEnd (aCopyListeners.end());
- for (; iListener!=iListenerEnd; ++iListener)
- {
- if ((iListener->second && rEvent.meEventId) != 0)
- iListener->first.Call(&rEvent);
- }
-}
-
-
-
-
-IMPL_LINK(EventMultiplexer::Implementation, SlideSorterSelectionChangeListener, void*, EMPTYARG)
-{
- CallListeners (EventMultiplexerEvent::EID_SLIDE_SORTER_SELECTION);
- return 0;
-}
-
-
-
-
-//===== EventMultiplexerEvent =================================================
-
-EventMultiplexerEvent::EventMultiplexerEvent (
- const ViewShellBase& rBase,
- EventId eEventId,
- const void* pUserData)
- : mrBase(rBase),
- meEventId(eEventId),
- mpUserData(pUserData)
-
-{
-}
-
-} } // end of namespace ::sd::tools
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */