LibreOffice Module slideshow (master) 1
|
This class schedules user-activated events. More...
#include <usereventqueue.hxx>
Public Member Functions | |
UserEventQueue (EventMultiplexer &rMultiplexer, EventQueue &rEventQueue, CursorManager &rCursorManager) | |
Create a user event queue. More... | |
~UserEventQueue () | |
UserEventQueue (const UserEventQueue &)=delete | |
UserEventQueue & | operator= (const UserEventQueue &)=delete |
void | clear () |
Clear all registered events. More... | |
void | setAdvanceOnClick (bool bAdvanceOnClick) |
Set advance on click behaviour. More... | |
void | registerAnimationStartEvent (const EventSharedPtr &rEvent, const css::uno::Reference< css::animations::XAnimationNode > &xNode) |
Register an event that will be fired when the given animation node starts. More... | |
void | registerAnimationEndEvent (const EventSharedPtr &rEvent, const css::uno::Reference< css::animations::XAnimationNode > &xNode) |
Register an event that will be fired when the given animation node ends its active duration. More... | |
void | registerAudioStoppedEvent (const EventSharedPtr &rEvent, const css::uno::Reference< css::animations::XAnimationNode > &xNode) |
Register an event that will be fired when audio output stopped for the given animation node. More... | |
void | registerShapeClickEvent (const EventSharedPtr &rEvent, const ShapeSharedPtr &rShape) |
Register an event that is fired when a shape is clicked. More... | |
void | registerSkipEffectEvent (EventSharedPtr const &pEvent, const bool bSkipTriggersNextEffect) |
Registers an event that is fired when the current effects(s) are skipped, .e.g. More... | |
void | registerNextEffectEvent (const EventSharedPtr &rEvent) |
Register an event that is fired to show the next event. More... | |
void | registerShapeDoubleClickEvent (const EventSharedPtr &rEvent, const ShapeSharedPtr &rShape) |
Register an event that is fired on a double mouse click on a shape. More... | |
void | registerMouseEnterEvent (const EventSharedPtr &rEvent, const ShapeSharedPtr &rShape) |
Register an event that is fired when the mouse enters the area of the given shape. More... | |
void | registerMouseLeaveEvent (const EventSharedPtr &rEvent, const ShapeSharedPtr &rShape) |
Register an event that is fired when the mouse leaves the area of the given shape. More... | |
void | callSkipEffectEventHandler () |
Typically skipping the current effect is triggered by mouse clicks or key presses that trigger the next effect. More... | |
template<typename Handler , typename Functor > | |
void | registerEvent (std::shared_ptr< Handler > &rHandler, const EventSharedPtr &rEvent, const Functor &rRegistrationFunctor) |
template<typename Handler , typename Arg , typename Functor > | |
void | registerEvent (std::shared_ptr< Handler > &rHandler, const EventSharedPtr &rEvent, const Arg &rArg, const Functor &rRegistrationFunctor) |
Private Member Functions | |
template<typename Handler , typename Functor > | |
void | registerEvent (::std::shared_ptr< Handler > &rHandler, const EventSharedPtr &rEvent, const Functor &rRegistrationFunctor) |
Generically register an event on one of the handlers. More... | |
template<typename Handler , typename Arg , typename Functor > | |
void | registerEvent (::std::shared_ptr< Handler > &rHandler, const EventSharedPtr &rEvent, const Arg &rArg, const Functor &rRegistrationFunctor) |
Generically register an event on one of the handlers. More... | |
Private Attributes | |
EventMultiplexer & | mrMultiplexer |
EventQueue & | mrEventQueue |
CursorManager & | mrCursorManager |
::std::shared_ptr< AllAnimationEventHandler > | mpAnimationStartEventHandler |
::std::shared_ptr< AllAnimationEventHandler > | mpAnimationEndEventHandler |
::std::shared_ptr< AllAnimationEventHandler > | mpAudioStoppedEventHandler |
::std::shared_ptr< ShapeClickEventHandler > | mpShapeClickEventHandler |
::std::shared_ptr< ClickEventHandler > | mpClickEventHandler |
::std::shared_ptr< SkipEffectEventHandler > | mpSkipEffectEventHandler |
::std::shared_ptr< ShapeClickEventHandler > | mpShapeDoubleClickEventHandler |
::std::shared_ptr< MouseEnterHandler > | mpMouseEnterHandler |
::std::shared_ptr< MouseLeaveHandler > | mpMouseLeaveHandler |
bool | mbAdvanceOnClick |
This class schedules user-activated events.
This class registers at the EventMultiplexer and fires events registered for certain user actions. Note that all events will not be fired immediately after the user action occurred, but always added to the EventQueue (and fired the next time that queue is processed). Which is actually a feature.
Conceptually, an event is an object that typically is fired only once. After that, the event is exhausted, and should be discarded. Therefore, all events registered on this object are fired and then all references to them are removed.
Definition at line 57 of file usereventqueue.hxx.
slideshow::internal::UserEventQueue::UserEventQueue | ( | EventMultiplexer & | rMultiplexer, |
EventQueue & | rEventQueue, | ||
CursorManager & | rCursorManager | ||
) |
Create a user event queue.
rEventMultiplexer | The slideshow-global event source, where this class registers its event handlers. |
rEventQueue | Reference to the main event queue. Since we hold this object by plain reference, it must live longer than we do. On the other hand, that queue must not fire events after this object is destroyed, since we might schedule events there which itself contain plain references to this object. Basically, EventQueue and UserEventQueue should have the same lifetime, and since this is not possible, both must be destructed in a phased mode: first clear both of any remaining events, then destruct them. |
Definition at line 527 of file usereventqueue.cxx.
slideshow::internal::UserEventQueue::~UserEventQueue | ( | ) |
Definition at line 544 of file usereventqueue.cxx.
References clear(), and TOOLS_WARN_EXCEPTION.
|
delete |
void slideshow::internal::UserEventQueue::callSkipEffectEventHandler | ( | ) |
Typically skipping the current effect is triggered by mouse clicks or key presses that trigger the next effect.
This method allows the skipping of effects to be triggered programmatically.
Definition at line 781 of file usereventqueue.cxx.
References mpSkipEffectEventHandler.
Referenced by slideshow::internal::EffectRewinder::asynchronousRewind(), slideshow::internal::EffectRewinder::rewind(), and slideshow::internal::EffectRewinder::skipSingleMainSequenceEffects().
void slideshow::internal::UserEventQueue::clear | ( | ) |
Clear all registered events.
This method clears all registered, but not-yet-executed events. This comes in handy when force-ending a slide, to avoid interference with the next slide's event registration.
Definition at line 557 of file usereventqueue.cxx.
References mpAnimationEndEventHandler, mpAnimationStartEventHandler, mpAudioStoppedEventHandler, mpClickEventHandler, mpMouseEnterHandler, mpMouseLeaveHandler, mpShapeClickEventHandler, mpShapeDoubleClickEventHandler, mpSkipEffectEventHandler, mrMultiplexer, slideshow::internal::EventMultiplexer::removeAnimationEndHandler(), slideshow::internal::EventMultiplexer::removeAnimationStartHandler(), slideshow::internal::EventMultiplexer::removeAudioStoppedHandler(), slideshow::internal::EventMultiplexer::removeClickHandler(), slideshow::internal::EventMultiplexer::removeDoubleClickHandler(), slideshow::internal::EventMultiplexer::removeMouseMoveHandler(), and slideshow::internal::EventMultiplexer::removeNextEffectHandler().
Referenced by ~UserEventQueue().
|
delete |
void slideshow::internal::UserEventQueue::registerAnimationEndEvent | ( | const EventSharedPtr & | rEvent, |
const css::uno::Reference< css::animations::XAnimationNode > & | xNode | ||
) |
Register an event that will be fired when the given animation node ends its active duration.
Note that all registered events will be fired when the animation end occurs. This is in contrast to the mouse events below.
Definition at line 624 of file usereventqueue.cxx.
References slideshow::internal::EventMultiplexer::addAnimationEndHandler(), mpAnimationEndEventHandler, mrMultiplexer, and registerEvent().
Referenced by slideshow::internal::generateEvent().
void slideshow::internal::UserEventQueue::registerAnimationStartEvent | ( | const EventSharedPtr & | rEvent, |
const css::uno::Reference< css::animations::XAnimationNode > & | xNode | ||
) |
Register an event that will be fired when the given animation node starts.
Note that all registered events will be fired when the animation start occurs. This is in contrast to the mouse events below.
Definition at line 613 of file usereventqueue.cxx.
References slideshow::internal::EventMultiplexer::addAnimationStartHandler(), mpAnimationStartEventHandler, mrMultiplexer, and registerEvent().
Referenced by slideshow::internal::generateEvent().
void slideshow::internal::UserEventQueue::registerAudioStoppedEvent | ( | const EventSharedPtr & | rEvent, |
const css::uno::Reference< css::animations::XAnimationNode > & | xNode | ||
) |
Register an event that will be fired when audio output stopped for the given animation node.
Note that all registered events will be fired when the audio stopping occurs. This is in contrast to the mouse events below.
Definition at line 635 of file usereventqueue.cxx.
References slideshow::internal::EventMultiplexer::addAudioStoppedHandler(), mpAudioStoppedEventHandler, mrMultiplexer, and registerEvent().
Referenced by slideshow::internal::generateEvent().
|
private |
Generically register an event on one of the handlers.
If the handler is not yet created, do that and register it via the Functor. This version of the registerEvent method takes an additional parameter rArg, which is passed as the second argument to rHandler's addEvent() method.
|
private |
Generically register an event on one of the handlers.
If the handler is not yet created, do that and register it via the Functor
Referenced by registerAnimationEndEvent(), registerAnimationStartEvent(), registerAudioStoppedEvent(), registerMouseEnterEvent(), registerMouseLeaveEvent(), and registerNextEffectEvent().
void slideshow::internal::UserEventQueue::registerEvent | ( | std::shared_ptr< Handler > & | rHandler, |
const EventSharedPtr & | rEvent, | ||
const Arg & | rArg, | ||
const Functor & | rRegistrationFunctor | ||
) |
Definition at line 506 of file usereventqueue.cxx.
References ENSURE_OR_THROW, and mrEventQueue.
void slideshow::internal::UserEventQueue::registerEvent | ( | std::shared_ptr< Handler > & | rHandler, |
const EventSharedPtr & | rEvent, | ||
const Functor & | rRegistrationFunctor | ||
) |
Definition at line 487 of file usereventqueue.cxx.
References ENSURE_OR_THROW, and mrEventQueue.
void slideshow::internal::UserEventQueue::registerMouseEnterEvent | ( | const EventSharedPtr & | rEvent, |
const ShapeSharedPtr & | rShape | ||
) |
Register an event that is fired when the mouse enters the area of the given shape.
For every enter, only one of the events registered here is fired. The order of fired events is the order of registration, i.e. the first event registered will be the one fired for the first time the mouse enters the given shape.
Definition at line 761 of file usereventqueue.cxx.
References slideshow::internal::EventMultiplexer::addMouseMoveHandler(), mpMouseEnterHandler, mrMultiplexer, and registerEvent().
Referenced by slideshow::internal::generateEvent().
void slideshow::internal::UserEventQueue::registerMouseLeaveEvent | ( | const EventSharedPtr & | rEvent, |
const ShapeSharedPtr & | rShape | ||
) |
Register an event that is fired when the mouse leaves the area of the given shape.
For every leave, only one of the events registered here is fired. The order of fired events is the order of registration, i.e. the first event registered will be the one fired for the first time the mouse leaves the given shape area.
Definition at line 771 of file usereventqueue.cxx.
References slideshow::internal::EventMultiplexer::addMouseMoveHandler(), mpMouseLeaveHandler, mrMultiplexer, and registerEvent().
Referenced by slideshow::internal::generateEvent().
void slideshow::internal::UserEventQueue::registerNextEffectEvent | ( | const EventSharedPtr & | rEvent | ) |
Register an event that is fired to show the next event.
For every next effect event, only one of the events registered here is fired. The order of fired events is the order of registration, i.e. the first event registered will be the one fired for the first mouse click. When advance-on-click (see method setAdvanceOnClick()) is enabled, a mouse click somewhere on the slide will also generate a next effect event. In this case, it is irrelevant where on the slide the mouse is clicked, i.e. the shape need not be hit by the mouse.
Definition at line 699 of file usereventqueue.cxx.
References mbAdvanceOnClick, mpClickEventHandler, mrMultiplexer, and registerEvent().
Referenced by slideshow::internal::generateEvent().
void slideshow::internal::UserEventQueue::registerShapeClickEvent | ( | const EventSharedPtr & | rEvent, |
const ShapeSharedPtr & | rShape | ||
) |
Register an event that is fired when a shape is clicked.
For every mouse click, only one of the events registered here is fired. The order of fired events is the order of registration, i.e. the first event registered will be the one fired for the first mouse click on the given shape.
Definition at line 646 of file usereventqueue.cxx.
References slideshow::internal::EventMultiplexer::addClickHandler(), slideshow::internal::EventMultiplexer::addMouseMoveHandler(), ENSURE_OR_THROW, mpShapeClickEventHandler, mrCursorManager, mrEventQueue, and mrMultiplexer.
Referenced by slideshow::internal::generateEvent().
void slideshow::internal::UserEventQueue::registerShapeDoubleClickEvent | ( | const EventSharedPtr & | rEvent, |
const ShapeSharedPtr & | rShape | ||
) |
Register an event that is fired on a double mouse click on a shape.
For every mouse double click, only one of the events registered here is fired. The order of fired events is the order of registration, i.e. the first event registered will be the one fired for the first mouse double click. It is irrelevant where on the slide the mouse is clicked, i.e. the shape need not be hit by the mouse.
Definition at line 736 of file usereventqueue.cxx.
References slideshow::internal::EventMultiplexer::addDoubleClickHandler(), slideshow::internal::EventMultiplexer::addMouseMoveHandler(), ENSURE_OR_THROW, mpShapeDoubleClickEventHandler, mrCursorManager, mrEventQueue, and mrMultiplexer.
Referenced by slideshow::internal::generateEvent().
void slideshow::internal::UserEventQueue::registerSkipEffectEvent | ( | EventSharedPtr const & | pEvent, |
const bool | bSkipTriggersNextEffect | ||
) |
Registers an event that is fired when the current effects(s) are skipped, .e.g.
when the left mouse button is pressed. Then, all registered events are fired and removed from this queue. After firing, a next effect event is issued to this queue to start the next effect.
pEvent | The event to execute when skipping the current effect. |
bSkipTriggersNextEffect | When <TRUE> then after skipping the current effect the next effect is triggered. When <FALSE> then the next effect is not triggered. |
Definition at line 713 of file usereventqueue.cxx.
References slideshow::internal::EventMultiplexer::addClickHandler(), slideshow::internal::EventMultiplexer::addNextEffectHandler(), mbAdvanceOnClick, mpSkipEffectEventHandler, mrEventQueue, and mrMultiplexer.
Referenced by slideshow::internal::SequentialTimeContainer::resolveChild().
void slideshow::internal::UserEventQueue::setAdvanceOnClick | ( | bool | bAdvanceOnClick | ) |
Set advance on click behaviour.
bAdvanceOnClick | When true, a click somewhere on the slide will also generate next effect event. In this case, it is irrelevant where on the slide the mouse is clicked, i.e. the shape need not be hit by the mouse. |
Definition at line 603 of file usereventqueue.cxx.
References mbAdvanceOnClick, and mpClickEventHandler.
|
private |
Definition at line 262 of file usereventqueue.hxx.
Referenced by registerNextEffectEvent(), registerSkipEffectEvent(), and setAdvanceOnClick().
|
private |
Definition at line 253 of file usereventqueue.hxx.
Referenced by clear(), and registerAnimationEndEvent().
|
private |
Definition at line 252 of file usereventqueue.hxx.
Referenced by clear(), and registerAnimationStartEvent().
|
private |
Definition at line 254 of file usereventqueue.hxx.
Referenced by clear(), and registerAudioStoppedEvent().
|
private |
Definition at line 256 of file usereventqueue.hxx.
Referenced by clear(), registerNextEffectEvent(), and setAdvanceOnClick().
|
private |
Definition at line 259 of file usereventqueue.hxx.
Referenced by clear(), and registerMouseEnterEvent().
|
private |
Definition at line 260 of file usereventqueue.hxx.
Referenced by clear(), and registerMouseLeaveEvent().
|
private |
Definition at line 255 of file usereventqueue.hxx.
Referenced by clear(), and registerShapeClickEvent().
|
private |
Definition at line 258 of file usereventqueue.hxx.
Referenced by clear(), and registerShapeDoubleClickEvent().
|
private |
Definition at line 257 of file usereventqueue.hxx.
Referenced by callSkipEffectEventHandler(), clear(), and registerSkipEffectEvent().
|
private |
Definition at line 250 of file usereventqueue.hxx.
Referenced by registerShapeClickEvent(), and registerShapeDoubleClickEvent().
|
private |
Definition at line 249 of file usereventqueue.hxx.
Referenced by registerEvent(), registerShapeClickEvent(), registerShapeDoubleClickEvent(), and registerSkipEffectEvent().
|
private |
Definition at line 248 of file usereventqueue.hxx.
Referenced by clear(), registerAnimationEndEvent(), registerAnimationStartEvent(), registerAudioStoppedEvent(), registerMouseEnterEvent(), registerMouseLeaveEvent(), registerNextEffectEvent(), registerShapeClickEvent(), registerShapeDoubleClickEvent(), and registerSkipEffectEvent().