26#include <com/sun/star/awt/XMouseListener.hpp>
27#include <com/sun/star/awt/XMouseMotionListener.hpp>
28#include <com/sun/star/presentation/XSlideShowView.hpp>
53 struct ViewEventHandlerWeakPtrWrapper final {
57 ptr(
std::move(thePtr)) {}
59 bool operator ==(ViewEventHandlerWeakPtrWrapper
const & other)
const
60 {
return ptr.lock().get() == other.ptr.lock().get(); }
69 template<
typename ContainerT,
74 for(
const auto& rCurr : rContainer )
76 std::shared_ptr<ViewEventHandler> pListener( rCurr.ptr.lock() );
78 if( pListener && func(pListener) )
85 template<
typename ContainerT,
91 for(
const auto& rCurr : rContainer )
93 std::shared_ptr<ViewEventHandler> pListener( rCurr.ptr.lock() );
95 if( pListener.get() &&
96 FunctionApply<typename ::std::invoke_result<FuncT, std::shared_ptr<ViewEventHandler>
const&>::type,
97 std::shared_ptr<ViewEventHandler> >::apply(func,pListener) )
105 template<
typename ContainerT >
107 size_t nSizeThreshold )
109 if( rContainer.size() <= nSizeThreshold )
112 ContainerT aAliveListeners;
113 aAliveListeners.reserve(rContainer.size());
115 for(
const auto& rCurr : rContainer )
117 if( !rCurr.ptr.expired() )
118 aAliveListeners.push_back( rCurr );
121 std::swap( rContainer, aAliveListeners );
129template <
typename HandlerT>
130class PrioritizedHandlerEntry
132 typedef std::shared_ptr<HandlerT> HandlerSharedPtrT;
137 PrioritizedHandlerEntry( HandlerSharedPtrT pHandler,
143 HandlerSharedPtrT
const& getHandler()
const {
return mpHandler; }
146 bool operator<( PrioritizedHandlerEntry
const& rRHS )
const
150 return mnPrio > rRHS.mnPrio;
154 bool operator==( PrioritizedHandlerEntry
const& rRHS )
const
178 EventMultiplexerListener(
EventQueue& rEventQueue,
185 EventMultiplexerListener(
const EventMultiplexerListener& ) =
delete;
186 EventMultiplexerListener& operator=(
const EventMultiplexerListener& ) =
delete;
189 virtual void disposing(std::unique_lock<std::mutex>& rGuard)
override;
192 virtual void SAL_CALL disposing(
const lang::EventObject&
Source )
override;
195 virtual void SAL_CALL
mousePressed(
const awt::MouseEvent& e )
override;
196 virtual void SAL_CALL
mouseReleased(
const awt::MouseEvent& e )
override;
197 virtual void SAL_CALL
mouseEntered(
const awt::MouseEvent& e )
override;
198 virtual void SAL_CALL
mouseExited(
const awt::MouseEvent& e )
override;
201 virtual void SAL_CALL
mouseDragged(
const awt::MouseEvent& e )
override;
202 virtual void SAL_CALL
mouseMoved(
const awt::MouseEvent& e )
override;
217 mxListener( new EventMultiplexerListener(rEventQueue,
260 PrioritizedHandlerEntry<EventHandler>,
277 ViewEventHandlerWeakPtrWrapper,
289 PrioritizedHandlerEntry<HyperlinkHandler>,
292 template <
typename XSl
ideShowViewFunc>
293 void forEachView( XSlideShowViewFunc pViewMethod );
296 presentation::XSlideShowView>& xView)
const;
298 template<
typename RegisterFunction >
302 RegisterFunction pRegisterListener );
310 const awt::MouseEvent& ),
311 const awt::MouseEvent& e );
366void EventMultiplexerListener::disposing(std::unique_lock<std::mutex>& )
372void SAL_CALL EventMultiplexerListener::disposing(
373 const lang::EventObject& )
384void SAL_CALL EventMultiplexerListener::mousePressed(
385 const awt::MouseEvent& e )
387 std::unique_lock
const guard( m_aMutex );
396 "EventMultiplexerImpl::mousePressed") );
399void SAL_CALL EventMultiplexerListener::mouseReleased(
400 const awt::MouseEvent& e )
402 std::unique_lock
const guard( m_aMutex );
411 "EventMultiplexerImpl::mouseReleased") );
414void SAL_CALL EventMultiplexerListener::mouseEntered(
415 const awt::MouseEvent& )
420void SAL_CALL EventMultiplexerListener::mouseExited(
421 const awt::MouseEvent& )
427void SAL_CALL EventMultiplexerListener::mouseDragged(
428 const awt::MouseEvent& e )
430 std::unique_lock
const guard( m_aMutex );
439 "EventMultiplexerImpl::mouseDragged") );
442void SAL_CALL EventMultiplexerListener::mouseMoved(
443 const awt::MouseEvent& e )
445 std::unique_lock
const guard( m_aMutex );
454 "EventMultiplexerImpl::mouseMoved") );
463 {
return pEventHandler->handleAnimationEvent( rNode ); } );
466template <
typename XSl
ideShowViewFunc>
479 (xView.get()->*pViewMethod)(
mxListener.get() );
483 OSL_ASSERT(xView.is());
492 UnoViewVector::const_iterator aIter;
497 { return xView == pView->getUnoView(); } )) == aEnd )
499 OSL_FAIL(
"EventMultiplexer::findUnoView(): unexpected message source" );
506template<
typename RegisterFunction >
511 RegisterFunction pRegisterListener )
515 "EventMultiplexer::addMouseHandler(): Invalid handler" );
522 typename ImplMouseHandlers::container_type::value_type(
553 "EventMultiplexerImpl::tick with delay"));
584 UnoViewVector::const_iterator aIter;
586 if ((aIter = std::find_if(
588 [&xView](
const UnoViewSharedPtr& pView) { return xView == pView->getUnoView(); }))
596 aPosition *= aMatrix;
607 UnoViewVector::const_iterator aIter;
609 if ((aIter = std::find_if(
611 [&xView](
const UnoViewSharedPtr& pView) { return xView == pView->getUnoView(); }))
621 " view matrix singular");
622 aPosition *= aMatrix;
639 if( (*aIter)->getUnoView().is() )
640 (*aIter)->getUnoView()->removeMouseListener(
mxListener );
651 if( (*aIter)->getUnoView().is() )
652 (*aIter)->getUnoView()->removeMouseMotionListener(
mxListener );
679 const awt::MouseEvent& e )
682 e.Source, uno::UNO_QUERY );
685 "event source is not an XSlideShowView" );
689 UnoViewVector::const_iterator aIter;
691 if( (aIter=::std::find_if(
695 { return xView == pView->getUnoView(); } )) == aEnd )
698 false,
"EventMultiplexer::notifyHandlers(): "
699 "event source not found under registered views" );
707 " view matrix singular" );
708 aPosition *= aMatrix;
710 awt::MouseEvent
aEvent( e );
711 aEvent.X = ::basegfx::fround( aPosition.
getX() );
712 aEvent.Y = ::basegfx::fround( aPosition.
getY() );
719 {
return ( ( *rMouseHandler.getHandler() ).*pHandlerMethod )(
aEvent ); } );
725 sal_Int32 nCurrClickCount = e.ClickCount;
726 while( nCurrClickCount > 1 &&
731 nCurrClickCount -= 2;
735 while( nCurrClickCount > 0 &&
747 sal_Int32 nCurrClickCount = e.ClickCount;
748 while( nCurrClickCount > 1 &&
753 nCurrClickCount -= 2;
757 while( nCurrClickCount > 0 &&
786 [](
const PrioritizedHandlerEntry< EventHandler >& pHandler )
787 {
return pHandler.getHandler()->handleEvent(); } );
809 if( bIsAuto ==
mpImpl->mbIsAutoMode )
812 mpImpl->mbIsAutoMode = bIsAuto;
819 return mpImpl->mbIsAutoMode;
824 mpImpl->mnTimeout = nTimeout;
836 mpImpl->maNextEffectHandlers.addSorted(
837 EventMultiplexerImpl::ImplNextEffectHandlers::container_type::value_type(
848 mpImpl->maNextEffectHandlers.remove(
849 EventMultiplexerImpl::ImplNextEffectHandlers::container_type::value_type(
857 mpImpl->maSlideStartHandlers.add( rHandler );
863 mpImpl->maSlideStartHandlers.remove( rHandler );
869 mpImpl->maSlideEndHandlers.add( rHandler );
875 mpImpl->maSlideEndHandlers.remove( rHandler );
881 mpImpl->maAnimationStartHandlers.add( rHandler );
887 mpImpl->maAnimationStartHandlers.remove( rHandler );
893 mpImpl->maAnimationEndHandlers.add( rHandler );
899 mpImpl->maAnimationEndHandlers.remove( rHandler );
905 mpImpl->maSlideAnimationsEndHandlers.add( rHandler );
911 mpImpl->maSlideAnimationsEndHandlers.remove( rHandler );
917 mpImpl->maAudioStoppedHandlers.add( rHandler );
923 mpImpl->maAudioStoppedHandlers.remove( rHandler );
929 mpImpl->maCommandStopAudioHandlers.add( rHandler );
935 mpImpl->maCommandStopAudioHandlers.remove( rHandler );
941 mpImpl->maPauseHandlers.add( rHandler );
947 mpImpl->maPauseHandlers.remove( rHandler );
953 mpImpl->maViewHandlers.add( rHandler );
958 mpImpl->maViewHandlers.remove( rHandler );
963 mpImpl->maViewRepaintHandlers.add( rHandler );
968 mpImpl->maViewRepaintHandlers.remove( rHandler );
973 mpImpl->maShapeListenerHandlers.add( rHandler );
978 mpImpl->maShapeListenerHandlers.remove( rHandler );
983 mpImpl->maUserPaintEventHandlers.add( rHandler );
991 mpImpl->maMouseClickHandlers,
994 mpImpl->isMouseListenerRegistered()
996 : &presentation::XSlideShowView::addMouseListener );
1002 mpImpl->maMouseClickHandlers.remove(
1003 EventMultiplexerImpl::ImplMouseHandlers::container_type::value_type(
1007 if( !
mpImpl->isMouseListenerRegistered() )
1008 mpImpl->forEachView( &presentation::XSlideShowView::removeMouseListener );
1016 mpImpl->maMouseDoubleClickHandlers,
1019 mpImpl->isMouseListenerRegistered()
1021 : &presentation::XSlideShowView::addMouseListener );
1027 mpImpl->maMouseDoubleClickHandlers.remove(
1028 EventMultiplexerImpl::ImplMouseHandlers::container_type::value_type(
1032 if( !
mpImpl->isMouseListenerRegistered() )
1033 mpImpl->forEachView( &presentation::XSlideShowView::removeMouseListener );
1041 mpImpl->maMouseMoveHandlers,
1044 mpImpl->maMouseMoveHandlers.isEmpty()
1045 ? &presentation::XSlideShowView::addMouseMotionListener
1052 mpImpl->maMouseMoveHandlers.remove(
1053 EventMultiplexerImpl::ImplMouseHandlers::container_type::value_type(
1057 if(
mpImpl->maMouseMoveHandlers.isEmpty() )
1059 &presentation::XSlideShowView::removeMouseMotionListener );
1065 mpImpl->maHyperlinkHandlers.addSorted(
1066 EventMultiplexerImpl::ImplHyperLinkHandlers::container_type::value_type(
1073 mpImpl->maHyperlinkHandlers.remove(
1074 EventMultiplexerImpl::ImplHyperLinkHandlers::container_type::value_type(
1082 mpImpl->maShapeListenerHandlers.applyAll(
1084 {
return pHandler->listenerAdded( xShape ); } );
1090 mpImpl->maShapeListenerHandlers.applyAll(
1092 {
return pHandler->listenerRemoved( xShape ); } );
1097 mpImpl->maUserPaintEventHandlers.applyAll(
1099 {
return pHandler->colorChanged( rUserColor ); } );
1104 mpImpl->maUserPaintEventHandlers.applyAll(
1106 {
return pHandler->widthChanged( rUserStrokeWidth ); } );
1111 mpImpl->maUserPaintEventHandlers.applyAll(
1116 mpImpl->maUserPaintEventHandlers.applyAll(
1121 mpImpl->maUserPaintEventHandlers.applyAll(
1128 mpImpl->maUserPaintEventHandlers.applyAll(
1130 {
return pHandler->eraseAllInkChanged( bEraseAllInk ); } );
1136 mpImpl->maUserPaintEventHandlers.applyAll(
1138 {
return pHandler->eraseInkWidthChanged( rEraseInkSize ); } );
1143 return mpImpl->notifyNextEffect();
1148 mpImpl->maSlideStartHandlers.applyAll(
1154 return mpImpl->maSlideEndHandlers.applyAll(
1174 return mpImpl->maSlideAnimationsEndHandlers.applyAll(
1182 mpImpl->maAudioStoppedHandlers,
1190 mpImpl->maCommandStopAudioHandlers,
1196 mpImpl->maPauseHandlers.applyAll(
1198 {
return pHandler->handlePause( bPauseShow ); } );
1203 ENSURE_OR_THROW( rView,
"EventMultiplexer::notifyViewAdded(): Invalid view");
1207 rView->getUnoView() );
1209 if(
mpImpl->isMouseListenerRegistered() )
1210 rUnoView->addMouseListener(
1213 if( !
mpImpl->maMouseMoveHandlers.isEmpty() )
1214 rUnoView->addMouseMotionListener(
1217 mpImpl->maViewHandlers.applyAll(
1219 {
return pHandler.lock()->viewAdded( rView ); } );
1225 "EventMultiplexer::removeView(): Invalid view" );
1229 rView->getUnoView() );
1231 if(
mpImpl->isMouseListenerRegistered() )
1232 rUnoView->removeMouseListener(
1235 if( !
mpImpl->maMouseMoveHandlers.isEmpty() )
1236 rUnoView->removeMouseMotionListener(
1239 mpImpl->maViewHandlers.applyAll(
1241 {
return pHandler.lock()->viewRemoved( rView ); } );
1246 mpImpl->maViewHandlers.applyAll(
1248 {
return pHandler.lock()->viewChanged( rView ); } );
1263 mpImpl->maViewHandlers.applyAll(
1275 mpImpl->maViewRepaintHandlers.applyAll(
1277 {
return pHandler->viewClobbered( pView ); } );
1281 OUString
const& hyperLink )
1283 mpImpl->maHyperlinkHandlers.apply(
1284 [&hyperLink](
const PrioritizedHandlerEntry< HyperlinkHandler >& pHandler )
1285 {
return pHandler.getHandler()->handleHyperlink( hyperLink ); } );
1292 return mpImpl->toMatrixPoint(xView, pnt);
1299 return mpImpl->toNormalPoint(xView, pnt);
virtual bool handleEvent()=0
Handle the event.
void removeClickHandler(const MouseEventHandlerSharedPtr &rHandler)
void setAutomaticTimeout(double nTimeout)
Set the timeout for automatic mode.
void notifyViewChanged(const UnoViewSharedPtr &rView)
View changed.
void addAnimationStartHandler(const AnimationEventHandlerSharedPtr &rHandler)
Register an event handler that will be called when an XAnimationNode starts its active duration.
void addHyperlinkHandler(const HyperlinkHandlerSharedPtr &rHandler, double nPriority)
Registers a hyperlink click handler.
bool notifyAudioStopped(const AnimationNodeSharedPtr &rNode)
Notify that for the given node, audio output has stopped.
void removeMouseMoveHandler(const MouseEventHandlerSharedPtr &rHandler)
void notifyViewRemoved(const UnoViewSharedPtr &rView)
View removed.
double getAutomaticTimeout() const
Get automatic mode timeout value.
void addClickHandler(const MouseEventHandlerSharedPtr &rHandler, double nPriority)
Register a mouse handler that is called on mouse click.
void addMouseMoveHandler(const MouseEventHandlerSharedPtr &rHandler, double nPriority)
Register a mouse handler that is called for mouse moves.
void removeSlideAnimationsEndHandler(const EventHandlerSharedPtr &rHandler)
void addCommandStopAudioHandler(const AnimationEventHandlerSharedPtr &rHandler)
Register an event handler that will be called when an XCommand node's with the command STOPAUDIO is a...
void removeAnimationEndHandler(const AnimationEventHandlerSharedPtr &rHandler)
EventMultiplexer(EventQueue &rEventQueue, UnoViewContainer const &rViewContainer)
Create an event multiplexer.
void notifyUserPaintStrokeWidth(double rUserStrokeWidth)
Notify a new user paint width.
void clear()
Clear all registered handlers.
void removeSlideEndHandler(const EventHandlerSharedPtr &rHandler)
void removeViewRepaintHandler(const ViewRepaintHandlerSharedPtr &rHandler)
void removeViewHandler(const ViewEventHandlerWeakPtr &rHandler)
void removePauseHandler(const PauseEventHandlerSharedPtr &rHandler)
void addSlideEndHandler(const EventHandlerSharedPtr &rHandler)
Register an event handler that will be called when the slide is about to vanish.
void notifyUserPaintColor(RGBColor const &rUserColor)
Notify a new user paint color.
void addSlideStartHandler(const EventHandlerSharedPtr &rHandler)
Register an event handler that will be called when the slide is just shown.
void notifyEraseAllInk(bool bEraseAllInk)
Notify a new user paint erase all ink mode.
basegfx::B2DPoint toNormalPoint(css::uno::Reference< css::uno::XInterface > xInterface, basegfx::B2DPoint pnt)
void addSlideAnimationsEndHandler(const EventHandlerSharedPtr &rHandler)
Register an event handler that will be called when the main animation sequence of a slide ends its ac...
void removeAudioStoppedHandler(const AnimationEventHandlerSharedPtr &rHandler)
bool notifyAnimationStart(const AnimationNodeSharedPtr &rNode)
Notify that the given node enters its active duration.
void notifyPauseMode(bool bPauseShow)
Notify that the show has entered or exited pause mode.
void notifySwitchEraserMode()
void notifyUserPaintDisabled()
Notify that user paint is disabled.
void removeDoubleClickHandler(const MouseEventHandlerSharedPtr &rHandler)
void notifyViewAdded(const UnoViewSharedPtr &rView)
View added.
bool notifyCommandStopAudio(const AnimationNodeSharedPtr &rNode)
Notify that all audio has to be stopped.
bool getAutomaticMode() const
Get automatic mode setting.
bool notifySlideEndEvent()
Notify that a slide has ended.
void notifySlideStartEvent()
Notify that a new slide has started.
void addViewHandler(const ViewEventHandlerWeakPtr &rHandler)
Register an event handler that will be called when views are changed.
std::unique_ptr< EventMultiplexerImpl > mpImpl
void addNextEffectHandler(const EventHandlerSharedPtr &rHandler, double nPriority)
Register an event handler that will be called when the user requests the next effect.
bool notifyNextEffect()
Notify that the user requested the next effect.
void notifyViewClobbered(const css::uno::Reference< css::presentation::XSlideShowView > &xView)
View clobbered.
void addPauseHandler(const PauseEventHandlerSharedPtr &rHandler)
Register a handler that is called when the show enters or exits pause mode.
void notifyViewsChanged()
All Views changed.
void addDoubleClickHandler(const MouseEventHandlerSharedPtr &rHandler, double nPriority)
Register a mouse handler that is called on a double mouse click.
void removeSlideStartHandler(const EventHandlerSharedPtr &rHandler)
basegfx::B2DPoint toMatrixPoint(css::uno::Reference< css::uno::XInterface > xInterface, basegfx::B2DPoint pnt)
void removeNextEffectHandler(const EventHandlerSharedPtr &rHandler)
void addViewRepaintHandler(const ViewRepaintHandlerSharedPtr &rHandler)
Register an event handler that will be called when a view gets clobbered.
void addAnimationEndHandler(const AnimationEventHandlerSharedPtr &rHandler)
Register an event handler that will be called when an XAnimationNode ends its active duration.
void notifyEraseInkWidth(sal_Int32 rEraseInkSize)
void notifyShapeListenerAdded(const css::uno::Reference< css::drawing::XShape > &xShape)
New shape event listener added.
bool notifySlideAnimationsEnd()
Notify that the slide animations sequence leaves its active duration.
void addShapeListenerHandler(const ShapeListenerEventHandlerSharedPtr &rHandler)
Register an event handler that will be called when XShapeListeners are changed.
void removeHyperlinkHandler(const HyperlinkHandlerSharedPtr &rHandler)
void notifyShapeListenerRemoved(const css::uno::Reference< css::drawing::XShape > &xShape)
A shape event listener was removed.
void removeShapeListenerHandler(const ShapeListenerEventHandlerSharedPtr &rHandler)
void setAutomaticMode(bool bIsAuto)
Change automatic mode.
void removeAnimationStartHandler(const AnimationEventHandlerSharedPtr &rHandler)
void removeCommandStopAudioHandler(const AnimationEventHandlerSharedPtr &rHandler)
void addAudioStoppedHandler(const AnimationEventHandlerSharedPtr &rHandler)
Register an event handler that will be called when an XAudio node's sound stops playing.
void notifyHyperlinkClicked(OUString const &hyperLink)
Notifies that a hyperlink has been clicked.
bool notifyAnimationEnd(const AnimationNodeSharedPtr &rNode)
Notify that the given node leaves its active duration.
void addUserPaintHandler(const UserPaintEventHandlerSharedPtr &rHandler)
Register an event handler that will be called when user paint parameters change.
void notifySwitchPenMode()
This class handles events in a presentation.
bool addEventForNextRound(const EventSharedPtr &event)
Add the given event to the queue.
bool addEvent(const EventSharedPtr &event)
Add the given event to the queue.
bool apply(FuncT func) const
Apply functor to one listener.
bool isEmpty() const
Check whether listener container is empty.
bool applyAll(FuncT func) const
Apply functor to all listeners.
bool addSorted(listener_type const &rListener)
Add new listener into sorted container.
void clear()
Removes all listeners in one go.
Interface for handling mouse events.
virtual bool handleMouseDragged(const css::awt::MouseEvent &e)=0
Handle a mouse was moved with a pressed button event.
virtual bool handleMousePressed(const css::awt::MouseEvent &e)=0
Handle a mouse button pressed event.
virtual bool handleMouseMoved(const css::awt::MouseEvent &e)=0
Handle a mouse was moved event.
virtual bool handleMouseReleased(const css::awt::MouseEvent &e)=0
Handle a mouse button released event.
ListenerContainer variant that does not serialize access.
UnoViewVector::iterator begin()
UnoViewVector::iterator end()
virtual bool switchEraserMode()=0
virtual bool switchPenMode()=0
virtual void viewsChanged()=0
Notify that all views changed.
#define makeDelay(f, t, d)
#define ENSURE_OR_RETURN_FALSE(c, m)
#define ENSURE_OR_THROW(c, m)
EventMultiplexerImpl * mpEventMultiplexer
EventQueue * mpEventQueue
HandlerSharedPtrT mpHandler
void SAL_CALL mouseReleased(const css::awt::MouseEvent &e) override
void SAL_CALL mouseExited(const css::awt::MouseEvent &e) override
void SAL_CALL mouseMoved(const css::awt::MouseEvent &e) override
DECL_LISTENERMULTIPLEXER_END void SAL_CALL mousePressed(const css::awt::MouseEvent &e) override
void SAL_CALL mouseEntered(const css::awt::MouseEvent &e) override
DECL_LISTENERMULTIPLEXER_END void SAL_CALL mouseDragged(const css::awt::MouseEvent &e) override
B2IRange fround(const B2DRange &rRange)
::std::weak_ptr< ViewEventHandler > ViewEventHandlerWeakPtr
bool operator==(const HSLColor &rLHS, const HSLColor &rRHS)
::std::shared_ptr< EventHandler > EventHandlerSharedPtr
comphelper::WeakComponentImplHelper< awt::XMouseListener, awt::XMouseMotionListener > Listener_UnoBase
::std::shared_ptr< MouseEventHandler > MouseEventHandlerSharedPtr
::std::shared_ptr< PauseEventHandler > PauseEventHandlerSharedPtr
::std::shared_ptr< ShapeListenerEventHandler > ShapeListenerEventHandlerSharedPtr
::std::shared_ptr< HyperlinkHandler > HyperlinkHandlerSharedPtr
::std::shared_ptr< UserPaintEventHandler > UserPaintEventHandlerSharedPtr
::std::shared_ptr< AnimationNode > AnimationNodeSharedPtr
::std::shared_ptr< Event > EventSharedPtr
::std::shared_ptr< ViewRepaintHandler > ViewRepaintHandlerSharedPtr
::std::shared_ptr< AnimationEventHandler > AnimationEventHandlerSharedPtr
std::shared_ptr< UnoView > UnoViewSharedPtr
ThreadUnsafeListenerContainer< PrioritizedHandlerEntry< HyperlinkHandler >, std::vector< PrioritizedHandlerEntry< HyperlinkHandler > > > ImplHyperLinkHandlers
::rtl::Reference< EventMultiplexerListener > mxListener
ThreadUnsafeListenerContainer< PrioritizedHandlerEntry< EventHandler >, std::vector< PrioritizedHandlerEntry< EventHandler > > > ImplNextEffectHandlers
ImplEventHandlers maSlideAnimationsEndHandlers
void tick()
Called for automatic nextEffect.
void mousePressed(const awt::MouseEvent &e)
bool isMouseListenerRegistered() const
void addMouseHandler(ImplMouseHandlers &rHandlerContainer, const MouseEventHandlerSharedPtr &rHandler, double nPriority, RegisterFunction pRegisterListener)
void mouseMoved(const awt::MouseEvent &e)
ImplEventHandlers maSlideEndHandlers
ImplMouseHandlers maMouseClickHandlers
void handleTicks()
Schedules tick events, if mbIsAutoMode is true.
UnoViewContainer const & mrViewContainer
ThreadUnsafeListenerContainer< UserPaintEventHandlerSharedPtr, std::vector< UserPaintEventHandlerSharedPtr > > ImplUserPaintEventHandlers
UnoViewSharedPtr findUnoView(const uno::Reference< presentation::XSlideShowView > &xView) const
void clear()
Remove all handlers.
ImplPauseHandlers maPauseHandlers
basegfx::B2DPoint toNormalPoint(uno::Reference< presentation::XSlideShowView > xView, basegfx::B2DPoint pnt)
ThreadUnsafeListenerContainer< PauseEventHandlerSharedPtr, std::vector< PauseEventHandlerSharedPtr > > ImplPauseHandlers
void mouseReleased(const awt::MouseEvent &e)
ImplShapeListenerHandlers maShapeListenerHandlers
void forEachView(XSlideShowViewFunc pViewMethod)
bool notifyMouseHandlers(const ImplMouseHandlers &rQueue, bool(MouseEventHandler::*pHandlerMethod)(const awt::MouseEvent &), const awt::MouseEvent &e)
ThreadUnsafeListenerContainer< ViewRepaintHandlerSharedPtr, std::vector< ViewRepaintHandlerSharedPtr > > ImplRepaintHandlers
ThreadUnsafeListenerContainer< ViewEventHandlerWeakPtrWrapper, std::vector< ViewEventHandlerWeakPtrWrapper > > ImplViewHandlers
ImplEventHandlers maSlideStartHandlers
ImplViewHandlers maViewHandlers
EventMultiplexerImpl(EventQueue &rEventQueue, UnoViewContainer const &rViewContainer)
ImplAnimationHandlers maAnimationStartHandlers
ImplAnimationHandlers maCommandStopAudioHandlers
ThreadUnsafeListenerContainer< AnimationEventHandlerSharedPtr, std::vector< AnimationEventHandlerSharedPtr > > ImplAnimationHandlers
void mouseDragged(const awt::MouseEvent &e)
static bool notifyAllAnimationHandlers(ImplAnimationHandlers const &rContainer, AnimationNodeSharedPtr const &rNode)
void scheduleTick()
Schedules a tick event.
ImplHyperLinkHandlers maHyperlinkHandlers
ImplRepaintHandlers maViewRepaintHandlers
ImplUserPaintEventHandlers maUserPaintEventHandlers
basegfx::B2DPoint toMatrixPoint(uno::Reference< presentation::XSlideShowView > xView, basegfx::B2DPoint pnt)
::std::weak_ptr< Event > mpTickEvent
Holds ptr to optional tick event weakly.
EventQueue & mrEventQueue
ThreadUnsafeListenerContainer< ShapeListenerEventHandlerSharedPtr, std::vector< ShapeListenerEventHandlerSharedPtr > > ImplShapeListenerHandlers
ImplAnimationHandlers maAnimationEndHandlers
ThreadUnsafeListenerContainer< ImplMouseHandlerEntry, std::vector< ImplMouseHandlerEntry > > ImplMouseHandlers
PrioritizedHandlerEntry< MouseEventHandler > ImplMouseHandlerEntry
double mnTimeout
automatic next effect mode timeout
ImplMouseHandlers maMouseMoveHandlers
ThreadUnsafeListenerContainer< EventHandlerSharedPtr, std::vector< EventHandlerSharedPtr > > ImplEventHandlers
ImplNextEffectHandlers maNextEffectHandlers
ImplAnimationHandlers maAudioStoppedHandlers
ImplMouseHandlers maMouseDoubleClickHandlers
static void pruneListeners(ContainerT &rContainer, size_t nSizeThreshold)
static bool notifySingleListener(ContainerT &rContainer, FuncT func)
static bool notifyAllListeners(ContainerT &rContainer, FuncT func)
bool operator<(const wwFont &r1, const wwFont &r2)