summaryrefslogtreecommitdiff
path: root/slideshow/source/inc/usereventqueue.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'slideshow/source/inc/usereventqueue.hxx')
-rw-r--r--slideshow/source/inc/usereventqueue.hxx329
1 files changed, 0 insertions, 329 deletions
diff --git a/slideshow/source/inc/usereventqueue.hxx b/slideshow/source/inc/usereventqueue.hxx
deleted file mode 100644
index e84f0dd08..000000000
--- a/slideshow/source/inc/usereventqueue.hxx
+++ /dev/null
@@ -1,329 +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.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_SLIDESHOW_USEREVENTQUEUE_HXX
-#define INCLUDED_SLIDESHOW_USEREVENTQUEUE_HXX
-
-#include <com/sun/star/animations/XAnimationNode.hpp>
-
-#include "eventmultiplexer.hxx"
-#include "eventqueue.hxx"
-#include "shape.hxx"
-
-#include <boost/noncopyable.hpp>
-
-/* Definition of UserEventQueue class */
-
-namespace slideshow {
-namespace internal {
-
-class PlainEventHandler;
-class AllAnimationEventHandler;
-class ShapeClickEventHandler;
-class ClickEventHandler;
-class CursorManager;
-class SkipEffectEventHandler;
-class RewindEffectEventHandler;
-class MouseEnterHandler;
-class MouseLeaveHandler;
-
-/** This class schedules user-activated events.
-
- This class registeres 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.
-*/
-class UserEventQueue : private ::boost::noncopyable
-{
-public:
- /** Create a user event queue
-
- @param rEventMultiplexer
- The slideshow-global event source, where this class
- registeres its event handlers.
-
- @param 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.
- */
- UserEventQueue( EventMultiplexer& rMultiplexer,
- EventQueue& rEventQueue,
- CursorManager& rCursorManager );
- ~UserEventQueue();
-
- /** Query whether there are any events still pending.
- */
- bool isEmpty() const;
-
- /** 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.
- */
- void clear();
-
- /** Set advance on click behaviour.
-
- @param 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.
- */
- void setAdvanceOnClick( bool bAdvanceOnClick );
-
- /** Register an event that will be fired when the slide is
- just shown.
-
- Note that <em>all</em> registered events will be fired
- when the slide start occurs. This is in contrast to
- the mouse events below.
- */
- void registerSlideStartEvent( const EventSharedPtr& rEvent );
-
- /** Register an event that will be fired when the slide is
- about to vanish.
-
- Note that <em>all</em> registered events will be fired
- when the slide end occurs. This is in contrast to
- the mouse events below.
- */
- void registerSlideEndEvent( const EventSharedPtr& rEvent );
-
- /** Register an event that will be fired when the given
- animation node starts.
-
- Note that <em>all</em> registered events will be fired
- when the animation start occurs. This is in contrast to
- the mouse events below.
- */
- void registerAnimationStartEvent(
- const EventSharedPtr& rEvent,
- const ::com::sun::star::uno::Reference<
- ::com::sun::star::animations::XAnimationNode>& xNode );
-
- /** Register an event that will be fired when the given
- animation node ends its active duration.
-
- Note that <em>all</em> registered events will be fired
- when the animation end occurs. This is in contrast to
- the mouse events below.
- */
- void registerAnimationEndEvent(
- const EventSharedPtr& rEvent,
- const ::com::sun::star::uno::Reference<
- ::com::sun::star::animations::XAnimationNode>& xNode );
-
- /** Register an event that will be fired when audio output
- stopped for the given animation node.
-
- Note that <em>all</em> registered events will be fired
- when the audio stopping occurs. This is in contrast to
- the mouse events below.
- */
- void registerAudioStoppedEvent(
- const EventSharedPtr& rEvent,
- const ::com::sun::star::uno::Reference<
- ::com::sun::star::animations::XAnimationNode>& xNode );
-
- /** 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.
- */
- void registerShapeClickEvent( const EventSharedPtr& rEvent,
- const ShapeSharedPtr& rShape );
-
- /** Registes 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.
- @param pEvent
- The event to execute when skipping the current effect.
- @param bSkipTriggersNextEffect
- When <TRUE/> then after skipping the current effect the next
- effect is triggered. When <FALSE/> then the next effect is not
- triggered.
- */
- void registerSkipEffectEvent(
- EventSharedPtr const& pEvent,
- const bool bSkipTriggersNextEffect);
-
- /** Registes an event that is fired when the current effects(s)
- are rewound, .e.g. when the right mouse button is pressed.
- Then, all registered events are fired and removed from this
- queue.
- */
- void registerRewindEffectEvent( EventSharedPtr const& 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.
- */
- void registerNextEffectEvent( const EventSharedPtr& rEvent );
-
- /** 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.
- */
- void registerShapeDoubleClickEvent( const EventSharedPtr& rEvent,
- const ShapeSharedPtr& rShape );
-
- /** Register an event that is fired on a double mouse click
-
- 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.
- */
- void registerDoubleClickEvent( const EventSharedPtr& rEvent );
-
- /** 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.
- */
- void registerMouseEnterEvent( 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.
- */
- void registerMouseLeaveEvent( const EventSharedPtr& rEvent,
- const ShapeSharedPtr& rShape );
-
- /** 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 programatically.
- */
- void callSkipEffectEventHandler (void);
-
-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
- */
- template< typename Handler, typename Functor >
- void registerEvent( ::boost::shared_ptr< Handler >& rHandler,
- const EventSharedPtr& rEvent,
- const Functor& rRegistrationFunctor );
-
- /** 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.
- */
- template< typename Handler, typename Arg, typename Functor >
- void registerEvent( ::boost::shared_ptr< Handler >& rHandler,
- const EventSharedPtr& rEvent,
- const Arg& rArg,
- const Functor& rRegistrationFunctor );
-
- EventMultiplexer& mrMultiplexer;
- EventQueue& mrEventQueue;
- CursorManager& mrCursorManager;
-
- ::boost::shared_ptr<PlainEventHandler> mpStartEventHandler;
- ::boost::shared_ptr<PlainEventHandler> mpEndEventHandler;
- ::boost::shared_ptr<AllAnimationEventHandler> mpAnimationStartEventHandler;
- ::boost::shared_ptr<AllAnimationEventHandler> mpAnimationEndEventHandler;
- ::boost::shared_ptr<AllAnimationEventHandler> mpAudioStoppedEventHandler;
- ::boost::shared_ptr<ShapeClickEventHandler> mpShapeClickEventHandler;
- ::boost::shared_ptr<ClickEventHandler> mpClickEventHandler;
- ::boost::shared_ptr<SkipEffectEventHandler> mpSkipEffectEventHandler;
- ::boost::shared_ptr<RewindEffectEventHandler> mpRewindEffectEventHandler;
- ::boost::shared_ptr<ShapeClickEventHandler> mpShapeDoubleClickEventHandler;
- ::boost::shared_ptr<ClickEventHandler> mpDoubleClickEventHandler;
- ::boost::shared_ptr<MouseEnterHandler> mpMouseEnterHandler;
- ::boost::shared_ptr<MouseLeaveHandler> mpMouseLeaveHandler;
-
- bool mbAdvanceOnClick;
-};
-
-} // namespace internal
-} // namespace presentation
-
-#endif /* INCLUDED_SLIDESHOW_USEREVENTQUEUE_HXX */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */