diff options
Diffstat (limited to 'sd/source/ui/slidesorter/inc/controller')
18 files changed, 0 insertions, 3039 deletions
diff --git a/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx b/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx deleted file mode 100644 index 912397c8c..000000000 --- a/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx +++ /dev/null @@ -1,346 +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 SD_SLIDESORTER_SLIDE_SORTER_CONTROLLER_HXX -#define SD_SLIDESORTER_SLIDE_SORTER_CONTROLLER_HXX - -#include "model/SlsSharedPageDescriptor.hxx" -#include "ViewShell.hxx" - -#include <com/sun/star/drawing/XDrawPages.hpp> - -#include <sfx2/shell.hxx> -#include <sfx2/viewfac.hxx> -#include <tools/link.hxx> -#include <tools/gen.hxx> -#include <comphelper/implementationreference.hxx> - -namespace sd { namespace slidesorter { -class SlideSorter; -} } - -namespace sd { namespace slidesorter { namespace view { -class SlideSorterView; -class HighlightObject; -} } } - -namespace sd { namespace slidesorter { namespace model { -class SlideSorterModel; -} } } - -namespace css = ::com::sun::star; - -namespace sd { namespace slidesorter { namespace controller { - -class Animator; -class Clipboard; -class CurrentSlideManager; -class FocusManager; -class InsertionIndicatorHandler; -class Listener; -class PageSelector; -class ScrollBarManager; -class SelectionFunction; -class SelectionManager; -class SelectionObserver; -class SlotManager; -class VisibleAreaManager; - -class SlideSorterController -{ -public: - /** Create a new controller for the slide sorter. - @param pParentWindow - The window that contains the controls of the new - controller. - */ - SlideSorterController (SlideSorter& rSlideSorter); - - /** Late initialization. Call this method once a new new object has been - created. - */ - virtual void Init (void); - - virtual ~SlideSorterController (void); - - void Dispose (void); - - /** Place and size the scroll bars and the browser window so that the - given rectangle is filled. - @return - The space occupied by the browser window is returned. - */ - Rectangle Resize (const Rectangle& rAvailableSpace); - - /** Determine which of the UI elements--the scroll bars, the scroll bar - filler, the actual slide sorter view--are visible and place them in - the area last passed to Resize(). - @param bForce - When <TRUE/> is given (<FALSE/> is the default) then the content - window and with it the SlideSorterView is resized event when its - size does not change (the size does change when the visibility - of scroll bars changes.) - @return - Returns the space occupied by the browser window. - */ - Rectangle Rearrange (bool bForce = false); - - /** Return the descriptor of the page that is rendered under the - given position. This takes the IsOnlyPreviewTriggersMouseOver - property into account. - @return - Returns a pointer to a page descriptor instead of a - reference because when no page is found at the position - then NULL is returned to indicate this. - */ - model::SharedPageDescriptor GetPageAt (const Point& rPixelPosition); - - PageSelector& GetPageSelector (void); - FocusManager& GetFocusManager (void); - controller::Clipboard& GetClipboard (void); - - /** Return the object that manages the scroll bars. - */ - ScrollBarManager& GetScrollBarManager (void); - - ::boost::shared_ptr<CurrentSlideManager> GetCurrentSlideManager (void) const; - ::boost::shared_ptr<SlotManager> GetSlotManager (void) const; - ::boost::shared_ptr<SelectionManager> GetSelectionManager (void) const; - ::boost::shared_ptr<InsertionIndicatorHandler> GetInsertionIndicatorHandler (void) const; - - /** This method forwards the call to the SlideSorterView and executes - pending operations like moving selected pages into the visible area. - */ - void Paint (const Rectangle& rRect, ::Window* pWin); - - void FuTemporary (SfxRequest& rRequest); - void FuPermanent (SfxRequest& rRequest); - void FuSupport (SfxRequest& rRequest); - bool Command ( - const CommandEvent& rEvent, - ::sd::Window* pWindow); - - void GetCtrlState (SfxItemSet &rSet); - void GetStatusBarState (SfxItemSet& rSet); - - void ExecCtrl (SfxRequest& rRequest); - void GetAttrState (SfxItemSet& rSet); - void ExecStatusBar (SfxRequest& rRequest); - - bool IsLocked (void) const; - - /** Create an object of this inner class to prevent updates due to model - changes. - */ - class ModelChangeLock - {public: - ModelChangeLock (SlideSorterController& rController); - ~ModelChangeLock (void); - void Release (void); - private: - SlideSorterController* mpController; - }; - friend class ModelChangeLock; - - - /** Handle a change of the model, that is, handle the removal and - insertion of whole pages or a change of the edit mode. - - This method is a convenience function that simply calls - PreModelChange() and then PostModelChange(). - */ - void HandleModelChange (void); - - DECL_LINK(WindowEventHandler, VclWindowEvent*); - - /** Update the display of all pages. This involves a redraw and - releasing previews and caches. - */ - void UpdateAllPages (void); - - /** This factory method creates a selection function. - */ - virtual FunctionReference CreateSelectionFunction (SfxRequest& rRequest); - - /** When the current function of the view shell is the slide sorter - selection function then return a reference to it. Otherwise return - an empty reference. - */ - ::rtl::Reference<SelectionFunction> GetCurrentSelectionFunction (void); - - /** Prepare for a change of the edit mode. Depending on the current - edit mode we may save the selection so that it can be restored when - later changing back to the current edit mode. - */ - void PrepareEditModeChange (void); - - /** Set a new edit mode and return whether the edit mode really - has been changed. For proper saving and restoring of the selection - this method should be called between calls to - PrepareEditModeChange() and FinishEditModeChange(). - @return - A return value of <TRUE/> indicates that the edit mode has - changed. - */ - bool ChangeEditMode (EditMode eEditMode); - - /** Finish the change of the edit mode. Here we may select a page or - restore a previously saved selection. - */ - void FinishEditModeChange (void); - - /** Call this method when the name of one of the pages has changed. - This is then notified to the accessibility object, when that exists. - @param nPageIndex - The index of the page whose name has been changed. - @param rsOldName - The old name of the page. The new name can be taken from the - page object. - */ - void PageNameHasChanged (int nPageIndex, const String& rsOldName); - - /** Return whether a context menu has been opened by the called - SlideSorterController object and is still open. - */ - bool IsContextMenuOpen (void) const; - - /** Provide the set of pages to be displayed in the slide sorter. The - GetDocumentSlides() method can be found only in the SlideSorterModel. - */ - void SetDocumentSlides (const css::uno::Reference<css::container::XIndexAccess>& rxSlides); - - /** Return an Animator object. - */ - ::boost::shared_ptr<Animator> GetAnimator (void) const; - - VisibleAreaManager& GetVisibleAreaManager (void) const; - - void CheckForMasterPageAssignment (void); - -private: - SlideSorter& mrSlideSorter; - model::SlideSorterModel& mrModel; - view::SlideSorterView& mrView; - ::boost::scoped_ptr<PageSelector> mpPageSelector; - ::boost::scoped_ptr<FocusManager> mpFocusManager; - ::boost::shared_ptr<SlotManager> mpSlotManager; - ::boost::scoped_ptr<controller::Clipboard> mpClipboard; - ::boost::scoped_ptr<ScrollBarManager> mpScrollBarManager; - mutable ::boost::shared_ptr<CurrentSlideManager> mpCurrentSlideManager; - ::boost::shared_ptr<SelectionManager> mpSelectionManager; - ::boost::shared_ptr<InsertionIndicatorHandler> mpInsertionIndicatorHandler; - ::boost::shared_ptr<Animator> mpAnimator; - ::boost::scoped_ptr<VisibleAreaManager> mpVisibleAreaManager; - - // The listener listens to UNO events and thus is a UNO object. - // For proper life time management and at the same time free access to - // the implementation object we use the ImplementationReference class. - ::rtl::Reference<controller::Listener> mpListener; - - int mnModelChangeLockCount; - bool mbIsForcedRearrangePending; - - bool mbPreModelChangeDone; - bool mbPostModelChangePending; - - ::std::vector<Link> maSelectionChangeListeners; - - /** This array stores the indices of the selected page descriptors at - the time when the edit mode is switched to EM_MASTERPAGE. With this - we can restore the selection when switching back to EM_PAGE mode. - */ - ::std::vector<SdPage*> maSelectionBeforeSwitch; - /// The current page before the edit mode is switched to EM_MASTERPAGE. - int mnCurrentPageBeforeSwitch; - - /** The master page to select after the edit mode is changed. This - member is used to pass the pointer from PrepareEditModeChange() to - FinishEditModeChange(). - */ - SdPage* mpEditModeChangeMasterPage; - - /** This rectangle in the parent window encloses scroll bars and slide - sorter window. It is set when Resize() is called. - */ - Rectangle maTotalWindowArea; - - /** This counter is used to avoid processing of reentrant calls to - Paint(). - */ - sal_Int32 mnPaintEntranceCount; - - /** Remember whether the context menu is open. - */ - bool mbIsContextMenuOpen; - - /** Delete the given list of normal pages. This method is a helper - function for DeleteSelectedPages(). - @param rSelectedNormalPages - A list of normal pages. Supplying master pages is an error. - */ - void DeleteSelectedNormalPages (const ::std::vector<SdPage*>& rSelectedNormalPages); - - /** Delete the given list of master pages. This method is a helper - function for DeleteSelectedPages(). - @param rSelectedMasterPages - A list of master pages. Supplying normal pages is an error. - */ - void DeleteSelectedMasterPages (const ::std::vector<SdPage*>& rSelectedMasterPages); - - /** Prepare for several model changes, i.e. prevent time-consuming and - non-critical operations like repaints until UnlockModelChange() is - called. Ciritcal operations like releasing references to pages that - do not exist anymore are executed. - */ - void LockModelChange (void); - - /** Further calls to HandleModelChange() will result in a full featured - update of model, view, and controller. When HandleModelChange() has - been called since the last LockModelChange() then this is done right - away to bring the view up-to-date. - */ - void UnlockModelChange (void); - - /** Prepare for a model change. This method does all the things that - need to be done _before_ the model changes, e.g. because they need - access to the model data before the change. - */ - void PreModelChange (void); - - /** Complete a model change. This includes the recreation of data - structures that depend on the model and the request for a repaint to - show the changes. - */ - void PostModelChange (void); -}; - -} } } // end of namespace ::sd::slidesorter::controller - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/slidesorter/inc/controller/SlsAnimationFunction.hxx b/sd/source/ui/slidesorter/inc/controller/SlsAnimationFunction.hxx deleted file mode 100644 index e26ca94cf..000000000 --- a/sd/source/ui/slidesorter/inc/controller/SlsAnimationFunction.hxx +++ /dev/null @@ -1,180 +0,0 @@ -/************************************************************************* - * - * 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 SD_SLIDESORTER_CONTROLLER_ANIMATION_FUNCTION_HXX -#define SD_SLIDESORTER_CONTROLLER_ANIMATION_FUNCTION_HXX - -#include "model/SlsSharedPageDescriptor.hxx" -#include <basegfx/point/b2dpoint.hxx> -#include <boost/noncopyable.hpp> -#include <boost/function.hpp> -#include <tools/gen.hxx> -#include <vector> - -namespace sd { namespace slidesorter { namespace view { -class SlideSorterView; -} } } - - - -namespace sd { namespace slidesorter { namespace controller { - -/** A collection of functions that are usefull when creating animations. - They are collected here until a better place is found. -*/ -class AnimationFunction - : private ::boost::noncopyable -{ -public: - /** Acceleration function that maps [0,1] to [0,1] linearly, ie it - returns the given time value unaltered. - */ - static double Linear (const double nTime); - - /** Acceleration function that maps [0,1] to [0,1]. Speed starts fast - and ends slow following the sine function. - */ - static double FastInSlowOut_Sine (const double nTime); - - /** Acceleration function that maps [0,1] to [0,1]. Speed starts fast - and ends slow following the square root function. - */ - static double FastInSlowOut_Root (const double nTime); - - /** Acceleration function that maps [0,1] to [0,0]. Speed starts slow, - rises, drops and ends slow following the sine function. - */ - static double SlowInSlowOut_0to0_Sine (const double nTime); - - /** Acceleration function that maps [0,1] to [0,0]. Speed starts slow, - rises and drops several times and ends slow following multiple - cycles of the the sine function. - */ - static double Vibrate_Sine (const double nTime); - - /** Scale point linearly. - */ - static Point ScalePoint (const Point& rPoint, const double nTime); - - /** Blend two points together according to the given weight. - */ - static double Blend (const double nStartValue, const double nEndValue, const double nWeight); - - /** Apply a gradual visual state change. The kind of change, i.e. the - previous and the new states are expected to be already set. This - method only adjusts the blending of the visual representation from - one state to the other. - */ - static void ApplyVisualStateChange ( - const model::SharedPageDescriptor& rpDescriptor, - view::SlideSorterView& rView, - const double nTime); - - /** Apply a gradual change of a previously set offset to the location of - a page object. - */ - static void ApplyLocationOffsetChange ( - const model::SharedPageDescriptor& rpDescriptor, - view::SlideSorterView& rView, - const Point aLocationOffset); - - /** Apply a gradual change the alpha value from the old value to a - new value (set prior to this call.) - */ - static void ApplyButtonAlphaChange( - const model::SharedPageDescriptor& rpDescriptor, - view::SlideSorterView& rView, - const double nButtonAlpha, - const double nButtonBarAlpha); -}; - - - - -class AnimationBezierFunction -{ -public: - /** Create a cubic bezier curve whose start and end points are given - implicitly as P0=(0,0) and P3=(1,1). - */ - AnimationBezierFunction ( - const double nX1, - const double nY1, - const double nX2, - const double nY2); - - /** Create a cubic bezier curve whose start and end points are given - implicitly as P0=(0,0) and P3=(1,1). The second control point is - implicitly given as P2=(1-nY1,1-nX1). - */ - AnimationBezierFunction ( - const double nX1, - const double nY1); - - ::basegfx::B2DPoint operator() (const double nT); - -private: - const double mnX1; - const double mnY1; - const double mnX2; - const double mnY2; - - double EvaluateComponent ( - const double nT, - const double nV1, - const double nV2); -}; - - - - -/** Turn a parametric function into one whose y-Values depend on its - x-Values. Note a lot of interpolation takes place. The resulting - accuracy should be good enough for the purpose of acceleration - function for animations. -*/ -class AnimationParametricFunction -{ -public: - typedef ::boost::function<basegfx::B2DPoint(double)> ParametricFunction; - AnimationParametricFunction (const ParametricFunction& rFunction); - - double operator() (const double nX); - -private: - /** y-Values of the parametric function given to the constructor - evaluated (and interpolated) for evenly spaced x-Values. - */ - ::std::vector<double> maY; -}; - - - - -} } } // end of namespace ::sd::slidesorter::controller - -#endif diff --git a/sd/source/ui/slidesorter/inc/controller/SlsAnimator.hxx b/sd/source/ui/slidesorter/inc/controller/SlsAnimator.hxx deleted file mode 100644 index 4a2659f46..000000000 --- a/sd/source/ui/slidesorter/inc/controller/SlsAnimator.hxx +++ /dev/null @@ -1,144 +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 SD_SLIDESORTER_CONTROLLER_ANIMATOR_HXX -#define SD_SLIDESORTER_CONTROLLER_ANIMATOR_HXX - -#include "SlideSorter.hxx" -#include "view/SlideSorterView.hxx" -#include <canvas/elapsedtime.hxx> -#include <vcl/timer.hxx> -#include <sal/types.h> -#include <vector> -#include <boost/function.hpp> -#include <boost/noncopyable.hpp> -#include <boost/scoped_ptr.hpp> -#include <boost/shared_ptr.hpp> - - -namespace sd { namespace slidesorter { namespace controller { - -/** Experimental class for simple eye candy animations. -*/ -class Animator - : private ::boost::noncopyable -{ -public: - /** In some circumstances we have to avoid animation and jump to the - final animation state immediately. Use this enum instead of a bool - to be more expressive. - */ - enum AnimationMode { AM_Animated, AM_Immediate }; - - Animator (SlideSorter& rSlideSorter); - ~Animator (void); - - /** When disposed the animator will stop its work immediately and not - process any timer events anymore. - */ - void Dispose (void); - - /** An animation object is called with values between 0 and 1 as single - argument to its operator() method. - */ - typedef ::boost::function1<void, double> AnimationFunctor; - typedef ::boost::function0<void> FinishFunctor; - - typedef sal_Int32 AnimationId; - static const AnimationId NotAnAnimationId = -1; - - /** Schedule a new animation for execution. The () operator of that - animation will be called with increasing values between 0 and 1 for - the specified duration. - @param rAnimation - The animation operation. - @param nStartOffset - Time in milli seconds before the animation is started. - @param nDuration - The duration in milli seconds. - */ - AnimationId AddAnimation ( - const AnimationFunctor& rAnimation, - const sal_Int32 nStartOffset, - const sal_Int32 nDuration, - const FinishFunctor& rFinishFunctor = FinishFunctor()); - - AnimationId AddInfiniteAnimation ( - const AnimationFunctor& rAnimation, - const double nDelta); - - /** Abort and remove an animation. In order to reduce the bookkeeping - on the caller side, it is OK to call this method with an animation - function that is not currently being animated. Such a call is - silently ignored. - */ - void RemoveAnimation (const AnimationId nAnimationId); - - /** A typical use case for this method is the temporary shutdown of the - slidesorter when the slide sorter bar is put into a cache due to a - change of the edit mode. - */ - void RemoveAllAnimations (void); - -private: - SlideSorter& mrSlideSorter; - Timer maTimer; - bool mbIsDisposed; - class Animation; - typedef ::std::vector<boost::shared_ptr<Animation> > AnimationList; - AnimationList maAnimations; - ::canvas::tools::ElapsedTime maElapsedTime; - - ::boost::scoped_ptr<view::SlideSorterView::DrawLock> mpDrawLock; - - AnimationId mnNextAnimationId; - - DECL_LINK(TimeoutHandler, Timer*); - - /** Execute one step of every active animation. - @param nTime - Time measured in milli seconds with some arbitrary reference point. - @return - When one or more animation has finished then <TRUE/> is - returned. Call CleanUpAnimationList() in this case. - */ - bool ProcessAnimations (const double nTime); - - /** Remove animations that have expired. - */ - void CleanUpAnimationList (void); - - void RequestNextFrame (const double nFrameStart = 0); -}; - - -} } } // end of namespace ::sd::slidesorter::controller - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/slidesorter/inc/controller/SlsClipboard.hxx b/sd/source/ui/slidesorter/inc/controller/SlsClipboard.hxx deleted file mode 100644 index fd83227f3..000000000 --- a/sd/source/ui/slidesorter/inc/controller/SlsClipboard.hxx +++ /dev/null @@ -1,235 +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 SD_SLIDESORTER_CLIPBOARD -#define SD_SLIDESORTER_CLIPBOARD - -#include "ViewClipboard.hxx" -#include "controller/SlsSelectionObserver.hxx" -#include <sal/types.h> -#include <tools/solar.h> -#include <svx/svdpage.hxx> - -#include <set> - -class SfxRequest; -class Window; - -struct AcceptDropEvent; -class DropTargetHelper; -struct ExecuteDropEvent; -class Point; -class SdPage; -class Window; - -namespace sd { -class Window; -} - -namespace sd { namespace slidesorter { -class SlideSorter; -} } - -namespace sd { namespace slidesorter { namespace model { -class PageDescriptor; -} } } - -namespace sd { namespace slidesorter { namespace controller { - -class SlideSorterController; - -class Clipboard - : public ViewClipboard -{ -public: - Clipboard (SlideSorter& rSlideSorter); - ~Clipboard (void); - - void HandleSlotCall (SfxRequest& rRequest); - - void DoCut (::Window* pWindow = 0); - void DoCopy (::Window* pWindow = 0); - void DoPaste (::Window* pWindow = 0); - void DoDelete (::Window* pWindow = 0); - - void StartDrag ( - const Point& rDragPt, - ::Window* pWindow ); - - void DragFinished ( - sal_Int8 nDropAction); - - sal_Int8 AcceptDrop ( - const AcceptDropEvent& rEvt, - DropTargetHelper& rTargetHelper, - ::sd::Window* pTargetWindow = NULL, - sal_uInt16 nPage = SDRPAGE_NOTFOUND, - sal_uInt16 nLayer = SDRPAGE_NOTFOUND ); - - sal_Int8 ExecuteDrop ( - const ExecuteDropEvent& rEvt, - DropTargetHelper& rTargetHelper, - ::sd::Window* pTargetWindow = NULL, - sal_uInt16 nPage = SDRPAGE_NOTFOUND, - sal_uInt16 nLayer = SDRPAGE_NOTFOUND); - - void Abort (void); - -protected: - virtual sal_uInt16 DetermineInsertPosition ( - const SdTransferable& rTransferable); - - virtual sal_uInt16 InsertSlides ( - const SdTransferable& rTransferable, - sal_uInt16 nInsertPosition); - -private: - SlideSorter& mrSlideSorter; - SlideSorterController& mrController; - - typedef ::std::vector<SdPage*> PageList; - /** Remember the pages that are dragged to another document or to - another place in the same document so that they can be removed after - a move operation. - */ - PageList maPagesToRemove; - - /** Remember the pages inserted from another document or another place - in the same document so that they can be selected after the - drag-and-drop operation is completed. - */ - PageList maPagesToSelect; - - /** When pages are moved or copied then the selection of the slide - sorter has to be updated. This flag is used to remember whether the - selection has to be updated or can stay as it is (sal_False). - */ - bool mbUpdateSelectionPending; - - /** Used when a drop is executed to combine all undo actions into one. - Typically created in ExecuteDrop() and released in DragFinish(). - */ - class UndoContext; - ::boost::scoped_ptr<UndoContext> mpUndoContext; - - ::boost::scoped_ptr<SelectionObserver::Context> mpSelectionObserverContext; - sal_uLong mnDragFinishedUserEventId; - - void CreateSlideTransferable ( - ::Window* pWindow, - bool bDrag); - - /** Select the pages stored in the maPagesToSelect member. The list in - the member is cleared afterwards. - */ - void SelectPages (void); - - /** Determine the position of where to insert the pages in the current - transferable of the sd module. - @param pWindow - This window is used as parent for dialogs that have to be shown - to the user. - @return - The index in the range [0,n] (both inclusive) with n the number - of pages is returned. - */ - sal_Int32 GetInsertionPosition (::Window* pWindow); - - /** Paste the pages of the transferable of the sd module at the given - position. - @param nInsertPosition - The position at which to insert the pages. The valid range is - [0,n] (both inclusive) with n the number of pages in the - document. - @return - The number of inserted pages is returned. - */ - sal_Int32 PasteTransferable (sal_Int32 nInsertPosition); - - /** Select a range of pages of the model. Typicall usage is the - selection of newly inserted pages. - @param nFirstIndex - The index of the first page to select. - @param nPageCount - The number of pages to select. - */ - void SelectPageRange (sal_Int32 nFirstIndex, sal_Int32 nPageCount); - - /** Return <TRUE/> when the current transferable in the current state of - the slidesorter is acceptable to be pasted. For this the - transferable has to - a) exist, - b) contain one or more regular draw pages, no master pages. - When master pages are involved, either in the transferable or in the - slide sorter (by it displaying master pages) the drop of the - transferable is not accepted. The reason is the missing - implementation of proper handling master pages copy-and-paste. - */ - enum DropType { DT_PAGE, DT_SHAPE, DT_NONE }; - DropType IsDropAccepted (void) const; - - /** This method contains the code for AcceptDrop() and ExecuteDrop() shapes. - There are only minor differences for the two cases at this level. - @param eCommand - This parameter specifies whether to do a AcceptDrop() or - ExecuteDrop(). - @param rPosition - Since the event is given as void pointer we can not take the - mouse position from it. The caller has to supply it in this - parameter. - @param pDropEvent - Event though the AcceptDropEvent and ExecuteDropEvent are very - similar they do not have a common base class. Because of that - we have to use a void* to pase these structs. - @param nPage - When the page number is given as 0xffff then it is replaced by - the number of the page at the mouse position. If the mouse is - not over a page then neither AcceptDrop() nor ExecuteDrop() are - executed. - */ - enum DropCommand { DC_ACCEPT, DC_EXECUTE }; - sal_Int8 ExecuteOrAcceptShapeDrop ( - DropCommand eCommand, - const Point& rPosition, - const void* pDropEvent , - DropTargetHelper& rTargetHelper, - ::sd::Window* pTargetWindow, - sal_uInt16 nPage, - sal_uInt16 nLayer); - - /** Asynchronous part of DragFinished. The argument is the sal_Int8 - nDropAction, disguised as void*. - */ - DECL_LINK(ProcessDragFinished, void*); -}; - -} } } // end of namespace ::sd::slidesorter::controller - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/slidesorter/inc/controller/SlsCurrentSlideManager.hxx b/sd/source/ui/slidesorter/inc/controller/SlsCurrentSlideManager.hxx deleted file mode 100644 index 6e3bb250e..000000000 --- a/sd/source/ui/slidesorter/inc/controller/SlsCurrentSlideManager.hxx +++ /dev/null @@ -1,131 +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 SD_SLIDESORTER_CURRENT_SLIDE_MANAGER_HXX -#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; - -namespace sd { namespace slidesorter { -class SlideSorter; -} } - - -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 -{ -public: - /** Create a new CurrentSlideManager object that manages the current - slide for the given SlideSorter. - */ - CurrentSlideManager (SlideSorter& rSlideSorter); - - ~CurrentSlideManager (void); - - /** Call this when the current page of the main view shell has been - switched. Use SwitchCurrentSlide() to initiate such a switch. - */ - 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, - 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. - */ - model::SharedPageDescriptor GetCurrentSlide (void); - - /** Release all references to model data. - */ - void PrepareModelChange (void); - - /** Modify inner state in reaction to a change of the SlideSorterModel. - */ - void HandleModelChange (void); - -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 - method releases all ties to the old slide. - */ - void ReleaseCurrentSlide (void); - - /** When switching from one slide to a new current slide then this - method connects to the new current slide. - */ - void AcquireCurrentSlide (const sal_Int32 nSlideIndex); - - DECL_LINK(SwitchPageCallback,void*); -}; - - -} } } // end of namespace ::sd::slidesorter::controller - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/slidesorter/inc/controller/SlsFocusManager.hxx b/sd/source/ui/slidesorter/inc/controller/SlsFocusManager.hxx deleted file mode 100644 index 05305d3b2..000000000 --- a/sd/source/ui/slidesorter/inc/controller/SlsFocusManager.hxx +++ /dev/null @@ -1,236 +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 SD_SLIDESORTER_FOCUS_MANAGER_HXX -#define SD_SLIDESORTER_FOCUS_MANAGER_HXX - -#include <model/SlsSharedPageDescriptor.hxx> - -#include <sal/types.h> -#include <tools/link.hxx> -#include <vector> - -namespace sd { namespace slidesorter { -class SlideSorter; -} } - - -namespace sd { namespace slidesorter { namespace controller { - -/** This class manages the focus of the slide sorter. There is the focus - page which is or is not focused. Initialized to point to the first page - it can be set to other pages by using the MoveFocus() method. The - focused state of the focus page can be toggled with the ToggleFocus() - method. -*/ -class FocusManager -{ -public: - /** Create a new focus manager that operates on the pages of the model - associated with the given controller. The focus page is set to the - first page. Focused state is off. - */ - FocusManager (SlideSorter& rSlideSorter); - - ~FocusManager (void); - - enum FocusMoveDirection - { - FMD_NONE, - FMD_LEFT, - FMD_RIGHT, - FMD_UP, - FMD_DOWN - }; - - /** Move the focus from the currently focused page to one that is - displayed adjacent to it, either vertically or horizontally. - @param eDirection - Direction in which to move the focus. Wrap arround is done - differently when moving vertically or horizontally. Vertical - wrap arround takes place in the same column, i.e. when you are - in the top row and move up you come out in the bottom row in the - same column. Horizontal wrap arround moves to the next - (FMD_RIGHT) or previous (FMD_LEFT) page. Moving to the right - from the last page goes to the first page and vice versa. - When FMD_NONE is given, the current page index is checked for - being valid. If it is not, then it is set to the nearest valid - page index. - */ - void MoveFocus (FocusMoveDirection eDirection); - - /** Show the focus indicator of the current slide. - @param bScrollToFocus - When <TRUE/> (the default) then the view is scrolled so that the - focus rectangle lies inside its visible area. - */ - void ShowFocus (const bool bScrollToFocus = true); - - /** Hide the focus indicator. - */ - void HideFocus (void); - - /** Toggle the focused state of the current slide. - @return - Returns the focused state of the focus page after the call. - */ - bool ToggleFocus (void); - - /** Return whether the window managed by the called focus manager has - the input focus of the application. - */ - bool HasFocus (void) const; - - /** Return the descriptor of the page that currently has the focus. - @return - When there is no page that currently has the focus then NULL is - returned. - */ - model::SharedPageDescriptor GetFocusedPageDescriptor (void) const; - - /** Return the index of the page that currently has the focus as it is - accepted by the slide sorter model. - @return - When there is no page that currently has the focus then -1 is - returned. - */ - sal_Int32 GetFocusedPageIndex (void) const; - - /** Set the focused page to the one described by the given page - descriptor. The visibility of the focus indicator is not modified. - @param rDescriptor - One of the page descriptors that are currently managed by the - SlideSorterModel. - */ - void SetFocusedPage (const model::SharedPageDescriptor& rDescriptor); - - /** Set the focused page to the one described by the given page - index. The visibility of the focus indicator is not modified. - @param nPageIndex - A valid page index that is understood by the SlideSorterModel. - */ - void SetFocusedPage (sal_Int32 nPageIndex); - - void SetFocusedPageToCurrentPage (void); - - /** Return <TRUE/> when the focus inidcator is currently shown. A - prerequisite is that the window managed by this focus manager has - the input focus as indicated by a <TRUE/> return value of - HasFocus(). It is not necessary that the focus indicator is - visible. It may have been scrolled outside the visible area. - */ - bool IsFocusShowing (void) const; - - /** Add a listener that is called when the focus is shown or hidden or - set to another page object. - @param rListener - When this method is called multiple times for the same listener - the second and all following calls are ignored. Each listener - is added only once. - */ - void AddFocusChangeListener (const Link& rListener); - - /** Remove a focus change listener. - @param rListener - It is save to pass a listener that was not added are has been - removed previously. Such calls are ignored. - */ - void RemoveFocusChangeListener (const Link& rListener); - - /** Move focus to sibling outside the actual slide sorter. This is - typically the tool bar with the close button. - */ - void SetFocusToToolBox (void); - - /** Create an instance of this class to temporarily hide the focus - indicator. It is restored to its former visibility state when the - FocusHider is destroyed. - */ - class FocusHider - { - public: - FocusHider (FocusManager&); - ~FocusHider (void); - private: - bool mbFocusVisible; - FocusManager& mrManager; - }; - -private: - SlideSorter& mrSlideSorter; - - /** Index of the page that may be focused. It is -1 when the model - contains no page. - */ - sal_Int32 mnPageIndex; - - /** This flag indicates whether the page pointed to by mpFocusDescriptor - has the focus. - */ - bool mbPageIsFocused; - - ::std::vector<Link> maFocusChangeListeners; - - /** When vertical wrap is active then pressing UP in the top row moves - the focus to the bottom row, DOWN in the bottom row moves the focus - to the top row. - */ - bool mbIsVerticalWrapActive; - - /** Reset the focus state of the given descriptor and request a repaint - so that the focus indicator is hidden. - @param pDescriptor - When NULL is given then the call is ignored. - */ - void HideFocusIndicator (const model::SharedPageDescriptor& rpDescriptor); - - /** Set the focus state of the given descriptor, scroll it into the - visible area and request a repaint so that the focus indicator is - made visible. - @param pDescriptor - When NULL is given then the call is ignored. - @param bScrollToFocus - When <TRUE/> (the default) then the view is scrolled so that the - focus rectangle lies inside its visible area. - */ - void ShowFocusIndicator ( - const model::SharedPageDescriptor& rpDescriptor, - const bool bScrollToFocus); - - /** Call all currently registered listeners that a focus change has - happended. The focus may be hidden or shown or moved from one page - object to another. - */ - void NotifyFocusChangeListeners (void) const; -}; - -} } } // end of namespace ::sd::slidesorter::controller - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/slidesorter/inc/controller/SlsInsertionIndicatorHandler.hxx b/sd/source/ui/slidesorter/inc/controller/SlsInsertionIndicatorHandler.hxx deleted file mode 100644 index 6c4026bac..000000000 --- a/sd/source/ui/slidesorter/inc/controller/SlsInsertionIndicatorHandler.hxx +++ /dev/null @@ -1,153 +0,0 @@ -/************************************************************************* - * - * 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 SD_SLIDESORTER_INSERTION_INDICATOR_HANDLER_HXX -#define SD_SLIDESORTER_INSERTION_INDICATOR_HANDLER_HXX - -#include "view/SlsInsertAnimator.hxx" - -#include "view/SlsLayouter.hxx" - -namespace sd { namespace slidesorter { class SlideSorter; } } -namespace sd { namespace slidesorter { namespace model { -class PageEnumeration; -} } } -namespace sd { namespace slidesorter { namespace view { -class InsertAnimator; -class InsertionIndicatorOverlay; -} } } - - -namespace sd { namespace slidesorter { namespace controller { - -class Transferable; - - -/** Manage the visibility and location of the insertion indicator. Its - actual display is controlled by the InsertionIndicatorOverlay. -*/ -class InsertionIndicatorHandler -{ -public: - InsertionIndicatorHandler (SlideSorter& rSlideSorter); - ~InsertionIndicatorHandler (void); - - enum Mode { CopyMode, MoveMode, UnknownMode }; - static Mode GetModeFromDndAction (const sal_Int8 nDndAction); - - /** Activate the insertion marker at the given coordinates. - */ - void Start (const bool bIsOverSourceView); - - /** Deactivate the insertion marker. - */ - void End (const controller::Animator::AnimationMode eMode); - - /** This context make sure that the insertion indicator is shown - (provided that the clipboard is not empty) while the context is - alive. Typically used while a context menu is displayed. - */ - class ForceShowContext - { - public: - ForceShowContext (const ::boost::shared_ptr<InsertionIndicatorHandler>& rpHandler); - ~ForceShowContext (void); - private: - const ::boost::shared_ptr<InsertionIndicatorHandler> mpHandler; - }; - - /** Update the indicator icon from the current transferable (from the - clipboard or an active drag and drop operation.) - */ - void UpdateIndicatorIcon (const Transferable* pTransferable); - - /** Set the position of the insertion marker to the given coordinates. - */ - void UpdatePosition ( - const Point& rMouseModelPosition, - const Mode eMode); - void UpdatePosition ( - const Point& rMouseModelPosition, - const sal_Int8 nDndAction); - - /** Return whether the insertion marker is active. - */ - bool IsActive (void) const; - - /** Return the insertion index that corresponds with the current - graphical location of the insertion indicator. - */ - sal_Int32 GetInsertionPageIndex (void) const; - - /** Determine whether moving the current selection to the current - position of the insertion marker would alter the document. This - would be the case when the selection is not consecutive or would be - moved to a position outside and not adjacent to the selection. - */ - bool IsInsertionTrivial ( - const sal_Int32 nInsertionIndex, - const Mode eMode) const; - /** This method is like the other variant. It operates implicitly - on the current insertion index as would be returned by - GetInsertionPageIndex(). - */ - bool IsInsertionTrivial (const sal_Int8 nDndAction); - -private: - SlideSorter& mrSlideSorter; - ::boost::shared_ptr<view::InsertAnimator> mpInsertAnimator; - ::boost::shared_ptr<view::InsertionIndicatorOverlay> mpInsertionIndicatorOverlay; - view::InsertPosition maInsertPosition; - Mode meMode; - bool mbIsInsertionTrivial; - bool mbIsActive; - bool mbIsReadOnly; - bool mbIsOverSourceView; - Size maIconSize; - bool mbIsForcedShow; - - void SetPosition ( - const Point& rPoint, - const Mode eMode); - ::boost::shared_ptr<view::InsertAnimator> GetInsertAnimator (void); - - /** Make the insertion indicator visible (that is the show part) and - keep it visible, even when the mouse leaves the window (that is the - force part). We need this when a context menu is displayed (mouse - over the popup menu triggers a mouse leave event) while the - insertion indicator remains visible in the background. - - In effect all calls to End() are ignored until ForceEnd() is called. - */ - void ForceShow (void); - void ForceEnd (void); -}; - - -} } } // end of namespace ::sd::slidesorter::controller - -#endif diff --git a/sd/source/ui/slidesorter/inc/controller/SlsPageObjectFactory.hxx b/sd/source/ui/slidesorter/inc/controller/SlsPageObjectFactory.hxx deleted file mode 100644 index fef75520c..000000000 --- a/sd/source/ui/slidesorter/inc/controller/SlsPageObjectFactory.hxx +++ /dev/null @@ -1,99 +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 SD_SLIDESORTER_PAGE_OBJECT_FACTORY_HEADER -#define SD_SLIDESORTER_PAGE_OBJECT_FACTORY_HEADER - -#include <boost/shared_ptr.hpp> -#include "model/SlsSharedPageDescriptor.hxx" - -class SdPage; - -namespace sdr { namespace contact { -class ObjectContact; -class ViewContact; -class ViewObjectContact; -} } - -namespace sd { namespace slidesorter { namespace view { -class PageObject; -} } } - -namespace sd { namespace slidesorter { namespace cache { -class PageCache; -} } } - - -namespace sd { namespace slidesorter { namespace controller { - -class Properties; - -/** This class is a factory for the creation of objects that represent page - objects (shapes). This includes the contact objects of the drawing - layer. - - <p>The factory methods are called by the model::PageDescriptor and the - standard implementations of the contact objects.</p> - - <p>The factory forwars the preview cache and Properties object to page - objects and contact objects.</p> -*/ -class PageObjectFactory -{ -public: - /** Create a new PageObjectFactory object that has references to the - given cache and properties. - */ - PageObjectFactory ( - const ::boost::shared_ptr<cache::PageCache>& rpCache, - const ::boost::shared_ptr<controller::Properties>& rpProperties); - PageObjectFactory (const ::boost::shared_ptr<cache::PageCache>& rpCache); - virtual ~PageObjectFactory (void); - - virtual view::PageObject* CreatePageObject ( - SdPage* pPage, - const model::SharedPageDescriptor& rpDescriptor) const; - - virtual ::sdr::contact::ViewContact* CreateViewContact ( - view::PageObject* pPageObject, - const model::SharedPageDescriptor& rpDescriptor) const; - - virtual ::sdr::contact::ViewObjectContact* CreateViewObjectContact ( - ::sdr::contact::ObjectContact& rObjectContact, - ::sdr::contact::ViewContact& rViewContact) const; - -private: - ::boost::shared_ptr<cache::PageCache> mpPageCache; - ::boost::shared_ptr<controller::Properties> mpProperties; -}; - -} } } // end of namespace ::sd::slidesorter::controller - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/slidesorter/inc/controller/SlsPageSelector.hxx b/sd/source/ui/slidesorter/inc/controller/SlsPageSelector.hxx deleted file mode 100644 index 11717f2da..000000000 --- a/sd/source/ui/slidesorter/inc/controller/SlsPageSelector.hxx +++ /dev/null @@ -1,232 +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 SD_SLIDESORTER_PAGE_SELECTOR_HXX -#define SD_SLIDESORTER_PAGE_SELECTOR_HXX - -#include "model/SlsSharedPageDescriptor.hxx" - -#include <com/sun/star/drawing/XDrawPage.hpp> -#include <vector> -#include <memory> - -class SdPage; - -namespace sd { namespace slidesorter { -class SlideSorter; -} } - -namespace sd { namespace slidesorter { namespace model { -class SlideSorterModel; -} } } - -namespace sd { namespace slidesorter { namespace view { -class SlideSorterView; -} } } - -namespace sd { namespace slidesorter { namespace controller { - -class SlideSorterController; - - -/** A sub-controller that handles page selection of the slide browser. - Selecting a page does not make it the current page (of the main view) - automatically as this would not be desired in a multi selection. This - has to be done explicitly by calling the - CurrentSlideManager::SetCurrentSlide() method. - - Indices of pages relate allways to the number of all pages in the model - (as returned by GetPageCount()) not just the selected pages. -*/ -class PageSelector -{ -public: - PageSelector (SlideSorter& rSlideSorter); - - void SelectAllPages (void); - void DeselectAllPages (void); - - /** Update the selection state of all page descriptors to be the same as - that of the corresponding pages of the SdPage objects and issue - redraw requests where necessary. - */ - void GetCoreSelection (void); - - /** Update the selection state of the SdPage objects to be the same as - that of the correspinding page descriptors. - */ - void SetCoreSelection (void); - - /** Select the specified descriptor. The selection state of the other - descriptors is not affected. - */ - void SelectPage (int nPageIndex); - /** Select the descriptor that is associated with the given page. The - selection state of the other descriptors is not affected. - */ - void SelectPage (const SdPage* pPage); - /** Select the specified descriptor. The selection state of the other - descriptors is not affected. - */ - void SelectPage (const model::SharedPageDescriptor& rpDescriptor); - - /** Return whether the specified page is selected. This convenience - method is a subsitute for - SlideSorterModel::GetPageDescriptor(i)->IsSelected() is included - here to make this class more self contained. - */ - bool IsPageSelected (int nPageIndex); - - /** Deselect the descriptor that is associated with the given page. - @param bUpdateCurrentPage - When <TRUE/> then the current page is updated to the first slide - of the remaining selection. - */ - void DeselectPage ( - int nPageIndex, - const bool bUpdateCurrentPage = true); - void DeselectPage ( - const SdPage* pPage, - const bool bUpdateCurrentPage = true); - void DeselectPage ( - const model::SharedPageDescriptor& rpDescriptor, - const bool bUpdateCurrentPage = true); - - /** This convenience method returns the same number of pages that - SlideSorterModel.GetPageCount() returns. It is included here so - that it is self contained for iterating over all pages to select or - deselect them. - */ - int GetPageCount (void) const; - int GetSelectedPageCount (void) const; - - /** Return the anchor for a range selection. This usually is the first - selected page after all pages have been deselected. - @return - The returned anchor may be NULL. - */ - model::SharedPageDescriptor GetSelectionAnchor (void) const; - - - typedef ::std::vector<SdPage*> PageSelection; - - /** Return an object that describes the current selection. The caller - can use that object to later restore the selection. - @return - The object returned describes the selection via indices. So - even if pages are exchanged a later call to SetPageSelection() - is valid. - */ - ::boost::shared_ptr<PageSelection> GetPageSelection (void) const; - - /** Restore a page selection according to the given selection object. - @param rSelection - Typically obtained by calling GetPageSelection() this object - is used to restore the selection. If pages were exchanged since - the last call to GetPageSelection() it is still valid to call - this method with the selection. When pages have been inserted - or removed the result may be unexpected. - @param bUpdateCurrentPage - When <TRUE/> (the default value) then after setting the - selection update the current page to the first page of the - selection. - When called from withing UpdateCurrentPage() then this flag is - used to prevent a recursion loop. - */ - void SetPageSelection ( - const ::boost::shared_ptr<PageSelection>& rSelection, - const bool bUpdateCurrentPage = true); - - /** Call this method after the the model has changed to set the number - of selected pages. - */ - void CountSelectedPages (void); - - /** Use the UpdateLock whenever you do a complex selection, i.e. call - more than one method in a row. An active lock prevents intermediate - changes of the current slide. - */ - class UpdateLock - { - public: - UpdateLock (SlideSorter& rSlideSorter); - UpdateLock (PageSelector& rPageSelector); - ~UpdateLock (void); - void Release (void); - private: - PageSelector* mpSelector; - }; - - class BroadcastLock - { - public: - BroadcastLock (SlideSorter& rSlideSorter); - BroadcastLock (PageSelector& rPageSelector); - ~BroadcastLock (void); - private: - PageSelector& mrSelector; - }; - -private: - model::SlideSorterModel& mrModel; - SlideSorter& mrSlideSorter; - SlideSorterController& mrController; - int mnSelectedPageCount; - int mnBroadcastDisableLevel; - bool mbSelectionChangeBroadcastPending; - model::SharedPageDescriptor mpMostRecentlySelectedPage; - /// Anchor for a range selection. - model::SharedPageDescriptor mpSelectionAnchor; - model::SharedPageDescriptor mpCurrentPage; - sal_Int32 mnUpdateLockCount; - bool mbIsUpdateCurrentPagePending; - - /** Enable the broadcasting of selection change events. This calls the - SlideSorterController::SelectionHasChanged() method to do the actual - work. When EnableBroadcasting has been called as many times as - DisableBroadcasting() was called before and the selection has been - changed in the mean time, this change will be broadcasted. - */ - void EnableBroadcasting (void); - - /** Disable the broadcasting of selection change events. Subsequent - changes of the selection will set a flag that triggers the sending - of events when EnableBroadcasting() is called. - */ - void DisableBroadcasting (void); - - void UpdateCurrentPage (const bool bUpdateOnlyWhenPending = false); - - void CheckConsistency (void) const; -}; - -} } } // end of namespace ::sd::slidesorter::controller - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/slidesorter/inc/controller/SlsProperties.hxx b/sd/source/ui/slidesorter/inc/controller/SlsProperties.hxx deleted file mode 100644 index bbf01a8ec..000000000 --- a/sd/source/ui/slidesorter/inc/controller/SlsProperties.hxx +++ /dev/null @@ -1,146 +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 SD_SLIDESORTER_PROPERTIES_HEADER -#define SD_SLIDESORTER_PROPERTIES_HEADER - -#include <tools/color.hxx> - -namespace sd { namespace slidesorter { namespace controller { - -/** An extensible set of properties used throughout the slide sorter. -*/ -class Properties -{ -public: - Properties (void); - ~Properties (void); - - /** Call this method after receiving a VCLEVENT_APPLICATION_DATACHANGED - event. - */ - void HandleDataChangeEvent (void); - - /** When this method returns <TRUE/> then the current slide is - highlighted in the view. The default value is <FALSE/>. - */ - bool IsHighlightCurrentSlide (void) const; - void SetHighlightCurrentSlide (const bool bIsHighlightCurrentSlide); - - /** When this method returns <TRUE/> then the selection is indicated in - the view (typically by drawing rectangles around the selected - slides.) The default value is <TRUE/>. - */ - bool IsShowSelection (void) const; - void SetShowSelection (const bool bIsShowSelection); - - /** When this method returns <TRUE/> then the focusdselection is indicated in - the view (typically by drawing dotted rectangles around the selected - slides.) The default value is <TRUE/>. - */ - bool IsShowFocus (void) const; - void SetShowFocus (const bool bIsShowFocus); - - /** When this method returns <TRUE/> then on a selection change the - visible area is adapted so that the selected slides are shown - centered in the view. This can be used to center the current slide - by selecting only the current slide. The default value is <FALSE/>. - */ - bool IsCenterSelection (void) const; - void SetCenterSelection (const bool bIsCenterSelection); - - /** When this mehod returns <TRUE/> then the view may try to change the - visible area by scrolling it smoothly on the screen. Experimental. - Default value is <FALSE/>. - */ - bool IsSmoothSelectionScrolling (void) const; - void SetSmoothSelectionScrolling (const bool bIsSmoothSelectionScrolling); - - /** When this method returns <TRUE/> then during a full screen - presentation the previews in a slide sorter are not updated. - Default value is <TRUE/>. - */ - bool IsSuspendPreviewUpdatesDuringFullScreenPresentation (void) const; - void SetSuspendPreviewUpdatesDuringFullScreenPresentation (const bool bFlag); - - /** Return the background color. - */ - Color GetBackgroundColor (void) const; - void SetBackgroundColor (const Color& rColor); - - /** Return the text color. - */ - Color GetTextColor (void) const; - void SetTextColor (const Color& rColor); - - /** Return the color in which selections are to be painted. - */ - Color GetSelectionColor (void) const; - void SetSelectionColor (const Color& rColor); - - /** Return the color used for highlighting e.g. the current slide. - */ - Color GetHighlightColor (void) const; - void SetHighlightColor (const Color& rColor); - - /** The UI can be set to be read only indepently from the model status. - Used for instance in the presenter view. - */ - bool IsUIReadOnly (void) const; - void SetUIReadOnly (const bool bIsUIReadOnly); - - /** The mouse over effect (and whether a mouse motion starts a multi - selection or a drag-and-drop) can be triggered by just the preview - area or the whole page object area. - */ - bool IsOnlyPreviewTriggersMouseOver (void) const; - void SetOnlyPreviewTriggersMouseOver (const bool bFlag); - - bool IsHighContrastModeActive (void) const; - -private: - bool mbIsHighlightCurrentSlide; - bool mbIsShowSelection; - bool mbIsShowFocus; - bool mbIsCenterSelection; - bool mbIsSmoothSelectionScrolling; - bool mbIsSuspendPreviewUpdatesDuringFullScreenPresentation; - Color maBackgroundColor; - Color maTextColor; - Color maSelectionColor; - Color maHighlightColor; - bool mbIsUIReadOnly; - bool mbIsOnlyPreviewTriggersMouseOver; - bool mbIsHighContrastModeActive; -}; - -} } } // end of namespace ::sd::slidesorter::controller - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/slidesorter/inc/controller/SlsScrollBarManager.hxx b/sd/source/ui/slidesorter/inc/controller/SlsScrollBarManager.hxx deleted file mode 100644 index 999d824f1..000000000 --- a/sd/source/ui/slidesorter/inc/controller/SlsScrollBarManager.hxx +++ /dev/null @@ -1,286 +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 SD_SLIDESORTER_SLIDE_SORTER_SCROLL_BAR_MANAGER_HXX -#define SD_SLIDESORTER_SLIDE_SORTER_SCROLL_BAR_MANAGER_HXX - -#include "SlideSorter.hxx" - -#include <tools/link.hxx> -#include <tools/gen.hxx> -#include <vcl/timer.hxx> -#include <boost/shared_ptr.hpp> -#include <boost/function.hpp> - -class Point; -class Rectangle; -class ScrollBar; -class ScrollBarBox; -class Window; - -namespace sd { -class Window; -} - -namespace sd { namespace slidesorter { - class SlideSorter; -} } - - -namespace sd { namespace slidesorter { namespace controller { - -/** Manage the horizontal and vertical scroll bars. Listen for events, set - their sizes, place them in the window, determine their visibilities. - - <p>Handle auto scrolling, i.e. the scrolling of the window when the - mouse comes near the window border while dragging a selection.</p> - - <p>In order to make the slide sorter be used in the task pane with its - own vertical scrollbars the vertical scrollbar of the use of the slide - sorter is optional. When using it the available area in a window is - used and the vertical scrollbar is displayed when that area is not large - enough. When the vertical scrollbar is not used then the available area - is assumed to be modifiable. In that case the PlaceScrollBars() method - may return an area larger than the one given.<p> -*/ -class ScrollBarManager -{ -public: - /** Create a new scroll bar manager that manages three controls: the - horizontal scroll bar, the vertical scroll bar, and the little - window that fills the gap at the bottom right corner that is left - between the two scroll bars. Call LateInitialization() after - constructing a new object. - */ - ScrollBarManager (SlideSorter& rSlideSorter); - - ~ScrollBarManager (void); - - /** Call this method after constructing a new object of this class. - */ - void LateInitialization (void); - - /** Register listeners at the scroll bars. This method is called after - startup of a new slide sorter object or after a reactivation of a - slide sorter that for example is taken from a cache. - */ - void Connect (void); - - /** Remove listeners from the scroll bars. This method is called whent - the slide sorter is destroyed or when it is suspended, e.g. put - into a cache for later reuse. - */ - void Disconnect (void); - - /** Set up the scroll bar, i.e. thumb size and position. Call this - method when the content of the browser window changed, i.e. pages - were inserted or deleted, the layout or the zoom factor has - changed. - @param bResetThumbPosition - When <TRUE/> then set the thumb position to position 0. This is - done when e.g. switching between master page mode and draw mode. - @param bScrollToCurrentPosition - When <TRUE/> then scroll the window to the new offset that is - defined by the scroll bars. Otherwise the new offset is simply - set and the whole window is repainted. - */ - void UpdateScrollBars ( - bool bResetThumbPosition = false, - bool bScrollToCurrentPosition = true); - - /** Place the scroll bars inside the given area. When the available - area is not large enough for the content to display the horizontal - and/or vertical scroll bar is enabled. - @param rAvailableArea - The scroll bars will be placed inside this rectangle. It is - expected to be given in pixel relative to its parent. - @param bIsHorizontalScrollBarAllowed - Only when this flag is <TRUE/> the horizontal scroll may be - displayed. - @param bIsVerticalScrollBarAllowed - Only when this flag is <TRUE/> the horizontal scroll may be - displayed. - @return - Returns the space that remains after the scroll bars are - placed. - */ - Rectangle PlaceScrollBars ( - const Rectangle& rAvailableArea, - const bool bIsHorizontalScrollBarAllowed, - const bool bIsVerticalScrollBarAllowed); - - /** Update the vertical and horizontal scroll bars so that the visible - area has the given top and left values. - */ - void SetTopLeft (const Point aNewTopLeft); - - sal_Int32 GetTop (void) const; - - sal_Int32 GetLeft (void) const; - - /** Return the width of the vertical scroll bar, which--when - shown--should be fixed in contrast to its height. - @return - Returns 0 when the vertical scroll bar is not shown or does not - exist, otherwise its width in pixel is returned. - */ - int GetVerticalScrollBarWidth (void) const; - - /** Return the height of the horizontal scroll bar, which--when - shown--should be fixed in contrast to its width. - @return - Returns 0 when the vertical scroll bar is not shown or does not - exist, otherwise its height in pixel is returned. - */ - int GetHorizontalScrollBarHeight (void) const; - - /** Call this method to scroll a window while the mouse is in dragging a - selection. If the mouse is near the window border or is outside the - window then scroll the window accordingly. - @param rMouseWindowPosition - The mouse position for which the scroll amount is calculated. - @param rAutoScrollFunctor - Every time when the window is scrolled then this functor is executed. - @return - When the window is scrolled then this method returns <TRUE/>. - When the window is not changed then <FALSE/> is returned. - */ - bool AutoScroll ( - const Point& rMouseWindowPosition, - const ::boost::function<void(void)>& rAutoScrollFunctor); - - void StopAutoScroll (void); - - enum Orientation { Orientation_Horizontal, Orientation_Vertical }; - enum Unit { Unit_Pixel, Unit_Slide }; - /** Scroll the slide sorter by setting the thumbs of the scroll bars and - by moving the content of the content window. - @param eOrientation - Defines whether to scroll horizontally or vertically. - @param eUnit - Defines whether the distance is a pixel value or the number of - slides to scroll. - */ - void Scroll( - const Orientation eOrientation, - const Unit eUnit, - const sal_Int32 nDistance); - -private: - SlideSorter& mrSlideSorter; - - /** The horizontal scroll bar. Note that is used but not owned by - objects of this class. It is given to the constructor. - */ - ::boost::shared_ptr<ScrollBar> mpHorizontalScrollBar; - - /** The vertical scroll bar. Note that is used but not owned by - objects of this class. It is given to the constructor. - */ - ::boost::shared_ptr<ScrollBar> mpVerticalScrollBar; - - /// Relative horizontal position of the visible area in the view. - double mnHorizontalPosition; - /// Relative vertical position of the visible area in the view. - double mnVerticalPosition; - /** The width and height of the border at the inside of the window which - when entered while in drag mode leads to a scrolling of the window. - */ - Size maScrollBorder; - double mnHorizontalScrollFactor; - double mnVerticalScrollFactor; - /** The only task of this little window is to paint the little square at - the bottom right corner left by the two scroll bars (when both are - visible). - */ - ::boost::shared_ptr<ScrollBarBox> mpScrollBarFiller; - - /** The auto scroll timer is used for keep scrolling the window when the - mouse reaches its border while dragging a selection. When the mouse - is not moved the timer issues events to keep scrolling. - */ - Timer maAutoScrollTimer; - Size maAutoScrollOffset; - bool mbIsAutoScrollActive; - - /** The content window is the one whose view port is controlled by the - scroll bars. - */ - SharedSdWindow mpContentWindow; - - ::boost::function<void(void)> maAutoScrollFunctor; - - void SetWindowOrigin ( - double nHorizontalPosition, - double nVerticalPosition); - - /** Determine the visibility of the scroll bars so that the window - content is not clipped in any dimension without showing a scroll - bar. - @param rAvailableArea - The area in which the scroll bars, the scroll bar filler, and - the SlideSorterView will be placed. - @return - The area that is enclosed by the scroll bars is returned. It - will be filled with the SlideSorterView. - */ - Rectangle DetermineScrollBarVisibilities( - const Rectangle& rAvailableArea, - const bool bIsHorizontalScrollBarAllowed, - const bool bIsVerticalScrollBarAllowed); - - /** Typically called by DetermineScrollBarVisibilities() this method - tests a specific configuration of the two scroll bars being visible - or hidden. - @return - When the window content can be shown with only being clipped in - an orientation where the scroll bar would be shown then <TRUE/> - is returned. - */ - bool TestScrollBarVisibilities ( - bool bHorizontalScrollBarVisible, - bool bVerticalScrollBarVisible, - const Rectangle& rAvailableArea); - - void CalcAutoScrollOffset (const Point& rMouseWindowPosition); - bool RepeatAutoScroll (void); - - DECL_LINK(HorizontalScrollBarHandler, ScrollBar*); - DECL_LINK(VerticalScrollBarHandler, ScrollBar*); - DECL_LINK(AutoScrollTimeoutHandler, Timer*); - - void PlaceHorizontalScrollBar (const Rectangle& aArea); - void PlaceVerticalScrollBar (const Rectangle& aArea); - void PlaceFiller (const Rectangle& aArea); -}; - -} } } // end of namespace ::sd::slidesorter::controller - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/slidesorter/inc/controller/SlsSelectionFunction.hxx b/sd/source/ui/slidesorter/inc/controller/SlsSelectionFunction.hxx deleted file mode 100644 index 34efc2280..000000000 --- a/sd/source/ui/slidesorter/inc/controller/SlsSelectionFunction.hxx +++ /dev/null @@ -1,206 +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 SD_SLIDESORTER_SELECTION_FUNCTION_HXX -#define SD_SLIDESORTER_SELECTION_FUNCTION_HXX - -#include "model/SlsSharedPageDescriptor.hxx" -#include "controller/SlsFocusManager.hxx" -#include "controller/SlsInsertionIndicatorHandler.hxx" -#include "fupoor.hxx" -#include <svtools/transfer.hxx> -#include <boost/noncopyable.hpp> -#include <boost/scoped_ptr.hpp> - -class SdWindow; -class SdDrawDocument; -class Sound; - -namespace sd { namespace slidesorter { -class SlideSorter; -} } - -namespace sd { namespace slidesorter { namespace controller { - -class SlideSorterController; -class DragAndDropContext; - - -class SelectionFunction - : public FuPoor, - private ::boost::noncopyable -{ -public: - TYPEINFO(); - - static FunctionReference Create( SlideSorter& rSlideSorter, SfxRequest& rRequest ); - - // Mouse- & Key-Events - virtual sal_Bool KeyInput(const KeyEvent& rKEvt); - virtual sal_Bool MouseMove(const MouseEvent& rMEvt); - virtual sal_Bool MouseButtonUp(const MouseEvent& rMEvt); - virtual sal_Bool MouseButtonDown(const MouseEvent& rMEvt); - - virtual void Activate(); - virtual void Deactivate(); - - virtual void ScrollStart(); - virtual void ScrollEnd(); - - /// Forward to the clipboard manager. - virtual void DoCut (void); - - /// Forward to the clipboard manager. - virtual void DoCopy (void); - - /// Forward to the clipboard manager. - virtual void DoPaste (void); - - /** is called when the current function should be aborted. <p> - This is used when a function gets a KEY_ESCAPE but can also - be called directly. - - @returns - true if a active function was aborted - */ - virtual bool cancel(); - - void MouseDragged ( - const AcceptDropEvent& rEvent, - const sal_Int8 nDragAction); - - /** Turn of substitution display and insertion indicator. - */ - void NotifyDragFinished (void); - - /** Call when drag-and-drop or multi selection is started or stopped in - order to update permission of mouse over indication. - */ - void UpdateMouseOverIndicationPermission (void); - - class EventDescriptor; - class ModeHandler; - friend class ModeHandler; - enum Mode - { - NormalMode, - MultiSelectionMode, - DragAndDropMode, - ButtonMode - }; - void SwitchToNormalMode (void); - void SwitchToDragAndDropMode(const Point aMousePosition); - void SwitchToMultiSelectionMode (const Point aMousePosition, const sal_uInt32 nEventCode); - bool SwitchToButtonMode (void); - - void ResetShiftKeySelectionAnchor (void); - /** Special case handling for when the context menu is hidden. This - method will reinitialize the current mouse position to prevent the - mouse motion during the time the context menu is displayed from - being interpreted as drag-and-drop start. - */ - void ResetMouseAnchor (void); - -protected: - SlideSorter& mrSlideSorter; - SlideSorterController& mrController; - - SelectionFunction ( - SlideSorter& rSlideSorter, - SfxRequest& rRequest); - - virtual ~SelectionFunction(); - -private: - - /// The rectangle of the mouse drag selection. - Rectangle maDragSelectionRectangle; - bool mbDragSelection; - - /// Box of the insert marker in model coordinates. - Rectangle maInsertionMarkerBox; - - /** We use this flag to filter out the cases where MouseMotion() is called - with a pressed mouse button but without a prior MouseButtonDown() - call. This is an indication that the mouse button was pressed over - another control, e.g. the view tab bar, and that a re-layout of the - controls moved the slide sorter under the mouse. - */ - bool mbProcessingMouseButtonDown; - - bool mbIsDeselectionPending; - - /** Remember the slide where the shift key was pressed and started a - multiselection via keyboard. - */ - sal_Int32 mnShiftKeySelectionAnchor; - - /** The selection function can be in one of several mutually - exclusive modes. - */ - ::boost::shared_ptr<ModeHandler> mpModeHandler; - - /** Make the slide nOffset slides away of the current one the new - current slide. When the new index is outside the range of valid - page numbers it is clipped to that range. - @param nOffset - When nOffset is negative then go back. When nOffset if positive go - forward. When it is zero then ignore the call. - */ - void GotoNextPage (int nOffset); - - /** Make the slide with the given index the new current slide. - @param nIndex - Index of the new current slide. When the new index is outside - the range of valid page numbers it is clipped to that range. - */ - void GotoPage (int nIndex); - - void ProcessMouseEvent (sal_uInt32 nEventType, const MouseEvent& rEvent); - void ProcessKeyEvent (const KeyEvent& rEvent); - - // What follows are a couple of helper methods that are used by - // ProcessMouseEvent(). - - void ProcessEvent (EventDescriptor& rEvent); - - void MoveFocus ( - const FocusManager::FocusMoveDirection eDirection, - const bool bIsShiftDown, - const bool bIsControlDown); - - void StopDragAndDrop (void); - - void SwitchMode (const ::boost::shared_ptr<ModeHandler>& rpHandler); -}; - -} } } // end of namespace ::sd::slidesorter::controller - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/slidesorter/inc/controller/SlsSelectionManager.hxx b/sd/source/ui/slidesorter/inc/controller/SlsSelectionManager.hxx deleted file mode 100644 index ff120d544..000000000 --- a/sd/source/ui/slidesorter/inc/controller/SlsSelectionManager.hxx +++ /dev/null @@ -1,170 +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 SD_SLIDESORTER_CONTROLLER_SELECTION_MANAGER_HXX -#define SD_SLIDESORTER_CONTROLLER_SELECTION_MANAGER_HXX - -#include "model/SlsSharedPageDescriptor.hxx" -#include "controller/SlsAnimator.hxx" -#include <sal/types.h> -#include <tools/gen.hxx> -#include <basegfx/range/b2irectangle.hxx> -#include <vector> - -class Link; -class SdPage; - -namespace sd { namespace slidesorter { -class SlideSorter; -} } - -namespace sd { namespace slidesorter { namespace controller { - -class SlideSorterController; -class SelectionObserver; - -/** This class is a part of the controller and handles the selection of - slides. - <p>It has methods to modify the selected slides (delete them or - move them to other places in the document), change the visible area so - to make the selected slides visble, tell listeners when the selection - changes.</p> -*/ -class SelectionManager -{ -public: - /** Create a new SelectionManger for the given slide sorter. - */ - SelectionManager (SlideSorter& rSlideSorter); - - ~SelectionManager (void); - - /** Delete the currently selected slides. When this method returns the - selection is empty. - @param bSelectFollowingPage - When <TRUE/> then after deleting the selected pages make the - slide after the last selected page the new current page. - When <FALSE/> then make the first slide before the selected - pages the new current slide. - */ - void DeleteSelectedPages (const bool bSelectFollowingPage = true); - - /** Call this method after the selection has changed (possible several - calls to the PageSelector) to invalidate the relevant slots and send - appropriate events. - */ - void SelectionHasChanged (const bool bMakeSelectionVisible = true); - - /** Add a listener that is called when the selection of the slide sorter - changes. - @param rListener - When this method is called multiple times for the same listener - the second and all following calls are ignored. Each listener - is added only once. - */ - void AddSelectionChangeListener (const Link& rListener); - - /** Remove a listener that was called when the selection of the slide - sorter changes. - @param rListener - It is save to pass a listener that was not added are has been - removed previously. Such calls are ignored. - */ - void RemoveSelectionChangeListener (const Link& rListener); - - /** Return the position where to insert pasted slides based on the - current selection. When there is a selection then the insert - position is behind the last slide. When the selection is empty then - most of the time the insert position is at the end of the document. - There is an exception right after the display of a popup-menu. The - position of the associated insertion marker is stored here and reset - the next time the selection changes. - */ - sal_Int32 GetInsertionPosition (void) const; - - /** Store an insertion position temporarily. It is reset when the - selection changes the next time. - */ - void SetInsertionPosition (const sal_Int32 nInsertionPosition); - - ::boost::shared_ptr<SelectionObserver> GetSelectionObserver (void) const; - -private: - SlideSorter& mrSlideSorter; - SlideSorterController& mrController; - - ::std::vector<Link> maSelectionChangeListeners; - - /** This array stores the indices of the selected page descriptors at - the time when the edit mode is switched to EM_MASTERPAGE. With this - we can restore the selection when switching back to EM_PAGE mode. - */ - ::std::vector<SdPage*> maSelectionBeforeSwitch; - - /** When this flag is set then on the next call to Paint() the selection - is moved into the visible area. - */ - bool mbIsMakeSelectionVisiblePending; - - /** The insertion position is only temporarily valid. Negative values - indicate that the explicit insertion position is not valid. In this - case GetInsertionPosition() calculates it from the current selection. - */ - sal_Int32 mnInsertionPosition; - - /** Animation id for a scroll animation the will eventually set the top - and left of the visible area to maRequestedTopLeft. - */ - Animator::AnimationId mnAnimationId; - Point maRequestedTopLeft; - - class PageInsertionListener; - ::boost::scoped_ptr<PageInsertionListener> mpPageInsertionListener; - - ::boost::shared_ptr<SelectionObserver> mpSelectionObserver; - - /** Delete the given list of normal pages. This method is a helper - function for DeleteSelectedPages(). - @param rSelectedNormalPages - A list of normal pages. Supplying master pages is an error. - */ - void DeleteSelectedNormalPages (const ::std::vector<SdPage*>& rSelectedNormalPages); - - /** Delete the given list of master pages. This method is a helper - function for DeleteSelectedPages(). - @param rSelectedMasterPages - A list of master pages. Supplying normal pages is an error. - */ - void DeleteSelectedMasterPages (const ::std::vector<SdPage*>& rSelectedMasterPages); -}; - -} } } // end of namespace ::sd::slidesorter::controller - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/slidesorter/inc/controller/SlsSelectionObserver.hxx b/sd/source/ui/slidesorter/inc/controller/SlsSelectionObserver.hxx deleted file mode 100644 index 07246bb4f..000000000 --- a/sd/source/ui/slidesorter/inc/controller/SlsSelectionObserver.hxx +++ /dev/null @@ -1,85 +0,0 @@ -/************************************************************************* - * - * 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 SD_SLIDESORTER_CONTROLLER_SELECTION_OBSERVER_HXX -#define SD_SLIDESORTER_CONTROLLER_SELECTION_OBSERVER_HXX - -#include <tools/gen.hxx> -#include <vector> -#include <boost/shared_ptr.hpp> - -namespace sd { namespace slidesorter { -class SlideSorter; -} } - -class SdDrawDocument; -class SdrPage; - -namespace sd { namespace slidesorter { namespace controller { - -/** Observe insertions and deletions of pages between calls to - StartObservation() and EndObservation(). When the later is called - the selection is set to just the newly inserted pages. -*/ -class SelectionObserver -{ -public: - SelectionObserver (SlideSorter& rSlideSorter); - virtual ~SelectionObserver (void); - - void NotifyPageEvent (const SdrPage* pPage); - void StartObservation (void); - void AbortObservation (void); - void EndObservation (void); - - /** Use this little class instead of calling StartObservation and - EndObservation directly so that EndObservation is not forgotten or - omitted due to an exception or some break or return in the middle of - code. - */ - class Context - { - public: - Context (SlideSorter& rSlideSorter); - ~Context(void); - void Abort (void); - private: - ::boost::shared_ptr<SelectionObserver> mpSelectionObserver; - }; - -private: - SlideSorter& mrSlideSorter; - SdDrawDocument* mpDocument; - bool mbIsOvservationActive; - - ::std::vector<const SdPage*> maInsertedPages; - ::std::vector<sal_Int32> maDeletedPages; -}; - -} } } // end of namespace ::sd::slidesorter::controller - -#endif diff --git a/sd/source/ui/slidesorter/inc/controller/SlsSlideFunction.hxx b/sd/source/ui/slidesorter/inc/controller/SlsSlideFunction.hxx deleted file mode 100644 index 44df6672c..000000000 --- a/sd/source/ui/slidesorter/inc/controller/SlsSlideFunction.hxx +++ /dev/null @@ -1,76 +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 SD_SLIDESORTER_SLIDE_FUNCTION_HXX -#define SD_SLIDESORTER_SLIDE_FUNCTION_HXX - -#include "fupoor.hxx" - -class SdDrawDocument; - -namespace sd { namespace slidesorter { -class SlideSorter; -} } - - -namespace sd { namespace slidesorter { namespace controller { - -class SlideSorterController; - - -/** Base class for functions of the slide sorter. -*/ -class SlideFunction - : public FuPoor -{ -public: - TYPEINFO(); - - virtual sal_Bool MouseMove (const MouseEvent& rMEvt); - virtual sal_Bool MouseButtonUp (const MouseEvent& rMEvt); - virtual sal_Bool MouseButtonDown (const MouseEvent& rMEvt); - - /** Called from ForceScroll() before the actual scrolling. - */ - virtual void ScrollStart (void); - - /** Called from ForceScroll() after the actual scrolling. - */ - virtual void ScrollEnd (void); - -protected: - SlideFunction ( - SlideSorter& rSlideSorter, - SfxRequest& rRequest); -}; - -} } } // end of namespace ::sd::slidesorter::controller - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/slidesorter/inc/controller/SlsSlotManager.hxx b/sd/source/ui/slidesorter/inc/controller/SlsSlotManager.hxx deleted file mode 100644 index 3635355e3..000000000 --- a/sd/source/ui/slidesorter/inc/controller/SlsSlotManager.hxx +++ /dev/null @@ -1,127 +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 SD_SLIDESORTER_SLOT_MANAGER_HXX -#define SD_SLIDESORTER_SLOT_MANAGER_HXX - -#include "model/SlsSharedPageDescriptor.hxx" -#include <tools/link.hxx> -#include <memory> -#include <queue> - -class AbstractSvxNameDialog; -class SfxItemSet; -class SfxRequest; -class String; - -namespace sd { namespace slidesorter { -class SlideSorter; -} } - - -namespace sd { namespace slidesorter { namespace controller { - -class Command; - -/** This manager takes over the work of handling slot calls from the - controller of the slide sorter. -*/ -class SlotManager -{ -public: - /** Create a new slot manager that handles slot calls for the controller - of a slide sorter. - @param rController - The controller for which to handle the slot calls. - */ - SlotManager (SlideSorter& rSlideSorter); - - ~SlotManager (void); - - void FuTemporary (SfxRequest& rRequest); - void FuPermanent (SfxRequest& rRequest); - void FuSupport (SfxRequest& rRequest); - void GetMenuState (SfxItemSet &rSet); - void GetClipboardState (SfxItemSet &rSet); - void GetStatusBarState (SfxItemSet& rSet); - void ExecCtrl (SfxRequest& rRequest); - void GetAttrState (SfxItemSet& rSet); - - void ExecuteCommandAsynchronously (::std::auto_ptr<Command> pCommand); - - /** Exclude or include one slide or all selected slides. - @param rpDescriptor - When the pointer is empty then apply the new state to all - selected pages. Otherwise apply the new state to just the - specified state. - */ - void ChangeSlideExclusionState ( - const model::SharedPageDescriptor& rpDescriptor, - const bool bExcludeSlide); - - /** Call this after a change from normal mode to master mode or back. - The affected slots are invalidated. - */ - void NotifyEditModeChange (void); - -private: - /// The controller for which we manage the slot calls. - SlideSorter& mrSlideSorter; - - typedef ::std::queue<Command*> CommandQueue; - CommandQueue maCommandQueue; - - /** Called by FuTemporary to show the slide show. - */ - void ShowSlideShow (SfxRequest& rRequest); - - /** The implementation is a copy of the code for SID_RENAMEPAGE in - drviews2.cxx. - */ - void RenameSlide (void); - DECL_LINK(RenameSlideHdl, AbstractSvxNameDialog*); - bool RenameSlideFromDrawViewShell( sal_uInt16 nPageId, const String& rName); - - /** Handle SID_INSERTPAGE slot calls. - */ - void InsertSlide (SfxRequest& rRequest); - - void DuplicateSelectedSlides (SfxRequest& rRequest); - - /** Use one of several ways to determine where to insert a new page. - This can be the current selection or the insertion indicator. - */ - sal_Int32 GetInsertionPosition (void); - - DECL_LINK(UserEventCallback, void*); -}; - -} } } // end of namespace ::sd::slidesorter::controller - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/slidesorter/inc/controller/SlsTransferable.hxx b/sd/source/ui/slidesorter/inc/controller/SlsTransferable.hxx deleted file mode 100644 index a29b53403..000000000 --- a/sd/source/ui/slidesorter/inc/controller/SlsTransferable.hxx +++ /dev/null @@ -1,87 +0,0 @@ -/************************************************************************* - * - * 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 SD_SLIDESORTER_TRANSFERABLE_HXX -#define SD_SLIDESORTER_TRANSFERABLE_HXX - -#include "sdxfer.hxx" - -class SdDrawDocument; -namespace sd { namespace slidesorter { -class SlideSorterViewShell; -} } - -namespace sd { namespace slidesorter { namespace controller { - - -/** This class exists to have DragFinished call the correct object: the - SlideSorterViewShell instead of the old SlideView. -*/ -class Transferable - : public SdTransferable -{ -public: - class Representative - { - public: - Representative (const Bitmap& rBitmap, const bool bIsExcluded) - : maBitmap(rBitmap), mbIsExcluded(bIsExcluded) {} - Representative (const Representative& rOther) - : maBitmap(rOther.maBitmap), mbIsExcluded(rOther.mbIsExcluded) {} - Representative operator= (Representative const& rOther) - { if (&rOther != this) {maBitmap = rOther.maBitmap; mbIsExcluded = rOther.mbIsExcluded; } - return *this; - } - - Bitmap maBitmap; - bool mbIsExcluded; - }; - - - Transferable ( - SdDrawDocument* pSrcDoc, - ::sd::View* pWorkView, - sal_Bool bInitOnGetData, - SlideSorterViewShell* pViewShell, - const ::std::vector<Representative>& rRepresentatives); - - virtual ~Transferable (void); - - virtual void DragFinished (sal_Int8 nDropAction); - - const ::std::vector<Representative>& GetRepresentatives (void) const; - -private: - SlideSorterViewShell* mpViewShell; - const ::std::vector<Representative> maRepresentatives; - - virtual void Notify (SfxBroadcaster& rBroadcaster, const SfxHint& rHint); -}; - -} } } // end of namespace ::sd::slidesorter::controller - -#endif diff --git a/sd/source/ui/slidesorter/inc/controller/SlsVisibleAreaManager.hxx b/sd/source/ui/slidesorter/inc/controller/SlsVisibleAreaManager.hxx deleted file mode 100644 index e4eb87c25..000000000 --- a/sd/source/ui/slidesorter/inc/controller/SlsVisibleAreaManager.hxx +++ /dev/null @@ -1,100 +0,0 @@ -/************************************************************************* - * - * 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 SD_SLIDESORTER_VISIBLE_AREA_MANAGER_HXX -#define SD_SLIDESORTER_VISIBLE_AREA_MANAGER_HXX - -#include "controller/SlsAnimator.hxx" -#include "model/SlsSharedPageDescriptor.hxx" -#include <boost/noncopyable.hpp> -#include <boost/optional.hpp> - -namespace sd { namespace slidesorter { namespace controller { - - -/** Manage requests for scrolling page objects into view. -*/ -class VisibleAreaManager - : public ::boost::noncopyable -{ -public: - VisibleAreaManager (SlideSorter& rSlideSorter); - ~VisibleAreaManager (void); - - void ActivateCurrentSlideTracking (void); - void DeactivateCurrentSlideTracking (void); - - /** Request the current slide to be moved into the visible area. - This request is only obeyed when the current slide tracking is - active. - @see ActivateCurrentSlideTracking() and DeactivateCurrentSlideTracking() - */ - void RequestCurrentSlideVisible (void); - - /** Request to make the specified page object visible. - */ - void RequestVisible ( - const model::SharedPageDescriptor& rpDescriptor, - const bool bForce = false); - - /** Temporarily disable the update of the visible area. - */ - class TemporaryDisabler - { - public: - TemporaryDisabler (SlideSorter& rSlideSorter); - ~TemporaryDisabler (void); - private: - VisibleAreaManager& mrVisibleAreaManager; - }; - -private: - SlideSorter& mrSlideSorter; - - /** List of rectangle that someone wants to be moved into the visible - area. - Cleared on every call to ForgetVisibleRequests() and MakeVisible(). - */ - ::std::vector<Rectangle> maVisibleRequests; - - /** Animation id for a scroll animation that sets the top - and left of the visible area to maRequestedVisibleTopLeft. - */ - Animator::AnimationId mnScrollAnimationId; - Point maRequestedVisibleTopLeft; - Animator::AnimationMode meRequestedAnimationMode; - bool mbIsCurrentSlideTrackingActive; - int mnDisableCount; - - void MakeVisible (void); - ::boost::optional<Point> GetRequestedTopLeft (void) const; -}; - - -} } } // end of namespace ::sd::slidesorter::view - -#endif |