diff options
Diffstat (limited to 'sd/source/ui/slidesorter/inc/controller/SlsCurrentSlideManager.hxx')
-rwxr-xr-x[-rw-r--r--] | sd/source/ui/slidesorter/inc/controller/SlsCurrentSlideManager.hxx | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/sd/source/ui/slidesorter/inc/controller/SlsCurrentSlideManager.hxx b/sd/source/ui/slidesorter/inc/controller/SlsCurrentSlideManager.hxx index b0f3a75b540c..f49207a0bd48 100644..100755 --- a/sd/source/ui/slidesorter/inc/controller/SlsCurrentSlideManager.hxx +++ b/sd/source/ui/slidesorter/inc/controller/SlsCurrentSlideManager.hxx @@ -29,6 +29,8 @@ #define SD_SLIDESORTER_CURRENT_SLIDE_MANAGER_HXX #include "model/SlsSharedPageDescriptor.hxx" +#include <vcl/timer.hxx> +#include <tools/link.hxx> #include <com/sun/star/drawing/XDrawPage.hpp> class SdPage; @@ -43,6 +45,10 @@ namespace sd { namespace slidesorter { namespace controller { /** Manage the current slide. This includes setting the according flags at the PageDescriptor objects and setting the current slide at the main view shell. + + Switching pages is triggered only after a little delay. This allows + fast travelling through a larger set of slides without having to wait + for the edit view to update its content after every slide change. */ class CurrentSlideManager { @@ -57,14 +63,24 @@ public: /** Call this when the current page of the main view shell has been switched. Use SwitchCurrentSlide() to initiate such a switch. */ - void CurrentSlideHasChanged (const sal_Int32 nSlideIndex); + void NotifyCurrentSlideChange (const sal_Int32 nSlideIndex); + void NotifyCurrentSlideChange (const SdPage* pPage); /** Call this method to switch the current page of the main view shell to the given slide. Use CurrentSlideHasChanged() when the current slide change has been initiated by someone else. + @param nSlideIndex + Zero based index in the range [0,number-of-slides). + @param bUpdateSelection + When <TRUE/> then the page selection is cleared and only the new + current slide is selected. */ - void SwitchCurrentSlide (const sal_Int32 nSlideIndex); - void SwitchCurrentSlide (const model::SharedPageDescriptor& rpSlide); + void SwitchCurrentSlide ( + const sal_Int32 nSlideIndex, + const bool bUpdateSelection = false); + void SwitchCurrentSlide ( + const model::SharedPageDescriptor& rpSlide, + const bool bUpdateSelection = false); /** Return the page descriptor for the current slide. Note, that when there is no current slide then the returned pointer is empty. @@ -83,9 +99,14 @@ private: SlideSorter& mrSlideSorter; sal_Int32 mnCurrentSlideIndex; model::SharedPageDescriptor mpCurrentSlide; + /** Timer to control the delay after which to ask + XController/ViewShellBase to switch to another slide. + */ + Timer maSwitchPageDelayTimer; bool IsCurrentSlideIsValid (void); void SetCurrentSlideAtViewShellBase (const model::SharedPageDescriptor& rpSlide); + void SetCurrentSlideAtTabControl (const model::SharedPageDescriptor& rpSlide); void SetCurrentSlideAtXController (const model::SharedPageDescriptor& rpSlide); /** When switching from one slide to a new current slide then this @@ -97,6 +118,8 @@ private: method connects to the new current slide. */ void AcquireCurrentSlide (const sal_Int32 nSlideIndex); + + DECL_LINK(SwitchPageCallback,void*); }; |