INTEGRATION: CWS impress2 (1.1.2); FILE ADDED
2004/07/10 14:33:31 af 1.1.2.22: #i22705# Handling SID_MODIFYPAGE slot by calling ViewShell::Implementation. 2004/07/04 13:35:25 af 1.1.2.21: #i22705# Setting the active window before painting. 2004/06/23 12:56:20 af 1.1.2.20: #i22705# Added GetFocus() and LoseFocus() methods. 2004/06/22 11:33:17 af 1.1.2.19: #i22705# Renamed GetController() to GetSlideSorterController(). 2004/06/15 09:33:57 af 1.1.2.18: #i22705# Setting internal sub-shell name. Object bars are registerd with the ..._FEATURE_... version. 2004/06/12 12:38:36 af 1.1.2.17: #i22705# Replaced OuterResizePixel(), InnerResizePixel(), AdjustPosSizePixel() by GetBorder() and Resize(). 2004/06/11 07:36:21 af 1.1.2.16: #i22705# Using GetActiveWindow() instead of GetWindow() or GetBrowserWindow(). 2004/06/06 12:58:44 af 1.1.2.15: #i22705# Removed references to the old tab bar. Added access method to the ScrollBarBox member. 2004/06/06 10:01:20 af 1.1.2.14: #i22705# Using slide sorter specific tool bars only when shown in center pane. 2004/06/04 12:16:15 af 1.1.2.13: #i22705# Improved resizing. 2004/06/04 06:57:15 af 1.1.2.12: #i22705# Moved registration of child windows to ViewShellBase. Setting the correct shell type. Added implementation of GetSelectedPages() function. 2004/05/23 13:37:20 af 1.1.2.11: #i22705# Adaption to changes in ViewShellBase::ArrangeGUIElements(). 2004/05/05 12:56:40 af 1.1.2.10: #i22705# (last commit was an accident) The Create...() methods return pointers to the new objects instead of setting them by side effect. 2004/05/05 11:04:07 af 1.1.2.9: #i22705#lidesorter\controller\SlideSorterController.cxx 2004/04/27 12:41:53 af 1.1.2.8: #i22705# Calling ViewShellBase::ArrangeGUI() method to show view tab bar. 2004/04/22 07:35:59 af 1.1.2.7: #i22705# Removed buttons that switch between views. 2004/04/15 12:06:33 af 1.1.2.6: #i22705# Splitter removed: Replaced pointer arrays by single auto_ptr. 2004/04/15 08:20:43 af 1.1.2.5: #i22705# Introduced factory methods for model, view, and controller. Removed splitters. 2004/04/06 12:10:26 af 1.1.2.4: #i22705# Made the display of the tab bar optional. 2004/03/05 12:20:48 af 1.1.2.3: #i22705# Removed debug code. 2004/02/25 15:32:52 af 1.1.2.2: #i22705# Fixed some minor bugs. 2004/02/13 12:45:56 af 1.1.2.1: #i22705# Initial revision.
This commit is contained in:
parent
2b3d3f3ddb
commit
2ef96dea25
1 changed files with 819 additions and 0 deletions
819
sd/source/ui/slidesorter/shell/SlideSorterViewShell.cxx
Normal file
819
sd/source/ui/slidesorter/shell/SlideSorterViewShell.cxx
Normal file
|
@ -0,0 +1,819 @@
|
||||||
|
/*************************************************************************
|
||||||
|
*
|
||||||
|
* $RCSfile: SlideSorterViewShell.cxx,v $
|
||||||
|
*
|
||||||
|
* $Revision: 1.2 $
|
||||||
|
*
|
||||||
|
* last change: $Author: rt $ $Date: 2004-07-13 14:26:34 $
|
||||||
|
*
|
||||||
|
* The Contents of this file are made available subject to the terms of
|
||||||
|
* either of the following licenses
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1
|
||||||
|
* - Sun Industry Standards Source License Version 1.1
|
||||||
|
*
|
||||||
|
* Sun Microsystems Inc., October, 2000
|
||||||
|
*
|
||||||
|
* GNU Lesser General Public License Version 2.1
|
||||||
|
* =============================================
|
||||||
|
* Copyright 2000 by Sun Microsystems, Inc.
|
||||||
|
* 901 San Antonio Road, Palo Alto, CA 94303, USA
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License version 2.1, as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This library 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 for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||||
|
* MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Sun Industry Standards Source License Version 1.1
|
||||||
|
* =================================================
|
||||||
|
* The contents of this file are subject to the Sun Industry Standards
|
||||||
|
* Source License Version 1.1 (the "License"); You may not use this file
|
||||||
|
* except in compliance with the License. You may obtain a copy of the
|
||||||
|
* License at http://www.openoffice.org/license.html.
|
||||||
|
*
|
||||||
|
* Software provided under this License is provided on an "AS IS" basis,
|
||||||
|
* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
|
||||||
|
* WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
|
||||||
|
* MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
|
||||||
|
* See the License for the specific provisions governing your rights and
|
||||||
|
* obligations concerning the Software.
|
||||||
|
*
|
||||||
|
* The Initial Developer of the Original Code is: Sun Microsystems, Inc.
|
||||||
|
*
|
||||||
|
* Copyright: 2000 by Sun Microsystems, Inc.
|
||||||
|
*
|
||||||
|
* All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Contributor(s): _______________________________________
|
||||||
|
*
|
||||||
|
*
|
||||||
|
************************************************************************/
|
||||||
|
|
||||||
|
#include "SlideSorterViewShell.hxx"
|
||||||
|
|
||||||
|
#include "model/SlideSorterModel.hxx"
|
||||||
|
#include "model/SlsPageEnumeration.hxx"
|
||||||
|
#include "model/SlsPageDescriptor.hxx"
|
||||||
|
#include "view/SlideSorterView.hxx"
|
||||||
|
#include "controller/SlideSorterController.hxx"
|
||||||
|
#include "controller/SlsScrollBarManager.hxx"
|
||||||
|
#include "controller/SlsClipboard.hxx"
|
||||||
|
#include "controller/SlsFocusManager.hxx"
|
||||||
|
|
||||||
|
#include "ViewShellBase.hxx"
|
||||||
|
#include "ViewShellImplementation.hxx"
|
||||||
|
#include "SlideChangeChildWindow.hxx"
|
||||||
|
#include "drawdoc.hxx"
|
||||||
|
#include "app.hrc"
|
||||||
|
#include "glob.hrc"
|
||||||
|
#include "sdresid.hxx"
|
||||||
|
#include "Window.hxx"
|
||||||
|
#include "FrameView.hxx"
|
||||||
|
#include "sdpage.hxx"
|
||||||
|
#include "SdUnoSlideView.hxx"
|
||||||
|
|
||||||
|
#include <sfx2/app.hxx>
|
||||||
|
#include <sfx2/msg.hxx>
|
||||||
|
#include <sfx2/objface.hxx>
|
||||||
|
#include <sfx2/viewfrm.hxx>
|
||||||
|
#include <sfx2/bindings.hxx>
|
||||||
|
#include <sfx2/dispatch.hxx>
|
||||||
|
#include <sfx2/request.hxx>
|
||||||
|
#include <svx/svxids.hrc>
|
||||||
|
#include <svx/ruler.hxx>
|
||||||
|
#include <svtools/tabbar.hxx>
|
||||||
|
#include <vcl/scrbar.hxx>
|
||||||
|
|
||||||
|
using namespace ::sd::slidesorter;
|
||||||
|
#define SlideSorterViewShell
|
||||||
|
#include "sdslots.hxx"
|
||||||
|
|
||||||
|
using namespace ::com::sun::star;
|
||||||
|
|
||||||
|
namespace sd { namespace slidesorter {
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
const ULONG gnSlideSorterToolbarFeature = 0x11;
|
||||||
|
}
|
||||||
|
|
||||||
|
SFX_IMPL_INTERFACE(
|
||||||
|
SlideSorterViewShell,
|
||||||
|
SfxShell,
|
||||||
|
SdResId(STR_SLIDESORTERVIEWSHELL))
|
||||||
|
{
|
||||||
|
SFX_FEATURED_OBJECTBAR_REGISTRATION(
|
||||||
|
SFX_OBJECTBAR_APPLICATION
|
||||||
|
| SFX_VISIBILITY_DESKTOP
|
||||||
|
| SFX_VISIBILITY_STANDARD
|
||||||
|
| SFX_VISIBILITY_CLIENT
|
||||||
|
| SFX_VISIBILITY_VIEWER
|
||||||
|
| SFX_VISIBILITY_READONLYDOC,
|
||||||
|
SdResId(RID_DRAW_VIEWER_TOOLBOX),
|
||||||
|
gnSlideSorterToolbarFeature);
|
||||||
|
SFX_FEATURED_OBJECTBAR_REGISTRATION(
|
||||||
|
SFX_OBJECTBAR_TOOLS
|
||||||
|
| SFX_VISIBILITY_STANDARD
|
||||||
|
| SFX_VISIBILITY_FULLSCREEN
|
||||||
|
| SFX_VISIBILITY_SERVER,
|
||||||
|
SdResId(RID_SLIDE_TOOLBOX),
|
||||||
|
gnSlideSorterToolbarFeature);
|
||||||
|
SFX_FEATURED_OBJECTBAR_REGISTRATION(
|
||||||
|
SFX_OBJECTBAR_OBJECT,
|
||||||
|
SdResId(RID_SLIDE_OBJ_TOOLBOX),
|
||||||
|
gnSlideSorterToolbarFeature);
|
||||||
|
SFX_CHILDWINDOW_REGISTRATION(SlideChangeChildWindow::GetChildWindowId() );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
TYPEINIT1(SlideSorterViewShell, ViewShell);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SlideSorterViewShell::SlideSorterViewShell (
|
||||||
|
SfxViewFrame* pFrame,
|
||||||
|
ViewShellBase& rViewShellBase,
|
||||||
|
::Window* pParentWindow,
|
||||||
|
FrameView* pFrameViewArgument)
|
||||||
|
: ViewShell (pFrame, pParentWindow, rViewShellBase),
|
||||||
|
mbLayoutPending (true)
|
||||||
|
{
|
||||||
|
meShellType = ST_SLIDE_SORTER;
|
||||||
|
|
||||||
|
// Initialize the window.
|
||||||
|
::sd::Window* pWindow = GetActiveWindow();
|
||||||
|
pParentWindow->SetBackground(Wallpaper());
|
||||||
|
pWindow->SetBackground(Wallpaper());
|
||||||
|
pWindow->SetViewOrigin (Point(0,0));
|
||||||
|
// We do our own scrolling while dragging a page selection.
|
||||||
|
pWindow->SetUseDropScroll (false);
|
||||||
|
pWindow->SetStyle (pWindow->GetStyle() | WB_TABSTOP);
|
||||||
|
pWindow->Show();
|
||||||
|
|
||||||
|
|
||||||
|
SetPool( &GetDoc()->GetPool() );
|
||||||
|
|
||||||
|
mpView = mpSlideSorterView.get();
|
||||||
|
if (pFrameViewArgument != NULL)
|
||||||
|
pFrameView = pFrameViewArgument;
|
||||||
|
else
|
||||||
|
pFrameView = new FrameView(GetDoc());
|
||||||
|
GetFrameView()->Connect();
|
||||||
|
|
||||||
|
pWindow->SetViewShell (this);
|
||||||
|
|
||||||
|
SetName (String (RTL_CONSTASCII_USTRINGPARAM("SlideSorterViewShell")));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SlideSorterViewShell::~SlideSorterViewShell (void)
|
||||||
|
{
|
||||||
|
ReleaseListeners();
|
||||||
|
|
||||||
|
// Reset the auto pointers explicitly to control the order of destruction.
|
||||||
|
mpSlideSorterController.reset();
|
||||||
|
mpSlideSorterModel.reset();
|
||||||
|
mpSlideSorterView.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void SlideSorterViewShell::Init (void)
|
||||||
|
{
|
||||||
|
CreateModelViewController ();
|
||||||
|
mpView = mpSlideSorterView.get();
|
||||||
|
|
||||||
|
// Set view pointer of base class.
|
||||||
|
SetupControls (GetParentWindow());
|
||||||
|
|
||||||
|
ViewShell::Init ();
|
||||||
|
SetupListeners ();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
DrawController* SlideSorterViewShell::GetController (void)
|
||||||
|
{
|
||||||
|
if ( !mpController.is() && IsMainViewShell())
|
||||||
|
{
|
||||||
|
// Create uno controller for the main view shell. For the ones
|
||||||
|
// displayed in the non-center panes we may later introduce
|
||||||
|
// sub-controllers.
|
||||||
|
DrawController* pController = new SdUnoSlideView (
|
||||||
|
GetViewShellBase(),
|
||||||
|
*this,
|
||||||
|
*GetView());
|
||||||
|
mpController = ::comphelper::ImplementationReference<
|
||||||
|
DrawController,
|
||||||
|
::com::sun::star::uno::XInterface,
|
||||||
|
::com::sun::star::uno::XWeak> (pController);
|
||||||
|
}
|
||||||
|
return mpController.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void SlideSorterViewShell::CreateModelViewController (void)
|
||||||
|
{
|
||||||
|
mpSlideSorterModel = ::std::auto_ptr<model::SlideSorterModel>(
|
||||||
|
CreateModel());
|
||||||
|
DBG_ASSERT (mpSlideSorterModel.get()!=NULL,
|
||||||
|
"Can not create model for slide browser");
|
||||||
|
|
||||||
|
mpSlideSorterView = ::std::auto_ptr<view::SlideSorterView>(
|
||||||
|
CreateView());
|
||||||
|
DBG_ASSERT (mpSlideSorterView.get()!=NULL,
|
||||||
|
"Can not create view for slide browser");
|
||||||
|
|
||||||
|
mpSlideSorterController
|
||||||
|
= ::std::auto_ptr<controller::SlideSorterController>(
|
||||||
|
CreateController());
|
||||||
|
DBG_ASSERT (mpSlideSorterController.get()!=NULL,
|
||||||
|
"Can not create controller for slide browser");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
model::SlideSorterModel* SlideSorterViewShell::CreateModel (void)
|
||||||
|
{
|
||||||
|
// Get pointers to the document.
|
||||||
|
SdDrawDocument* pDocument = GetViewShellBase().GetDocument();
|
||||||
|
OSL_ASSERT (pDocument!=NULL);
|
||||||
|
|
||||||
|
return new model::SlideSorterModel (*pDocument);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
view::SlideSorterView* SlideSorterViewShell::CreateView (void)
|
||||||
|
{
|
||||||
|
return new view::SlideSorterView (*this, *mpSlideSorterModel);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
controller::SlideSorterController* SlideSorterViewShell::CreateController (void)
|
||||||
|
{
|
||||||
|
controller::SlideSorterController* pController
|
||||||
|
= new controller::SlideSorterController (
|
||||||
|
GetViewFrame()->GetBindings().GetDispatcher()->GetFrame(),
|
||||||
|
GetParentWindow(),
|
||||||
|
*this,
|
||||||
|
*mpSlideSorterModel,
|
||||||
|
*mpSlideSorterView);
|
||||||
|
pController->Init();
|
||||||
|
return pController;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SfxShell* SlideSorterViewShell::CreateInstance (
|
||||||
|
sal_Int32 nId,
|
||||||
|
SfxShell* pParent,
|
||||||
|
void* pUserData,
|
||||||
|
ViewShellBase& rBase)
|
||||||
|
{
|
||||||
|
return new SlideSorterViewShell (
|
||||||
|
rBase.GetViewFrame(),
|
||||||
|
rBase,
|
||||||
|
static_cast< ::Window*>(pUserData),
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void SlideSorterViewShell::SetupControls (::Window* pParentWindow)
|
||||||
|
{
|
||||||
|
GetVerticalScrollBar()->Show ();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void SlideSorterViewShell::SetupListeners (void)
|
||||||
|
{
|
||||||
|
if (mpTabBar.get() != NULL)
|
||||||
|
mpTabBar->SetActivatePageHdl (
|
||||||
|
LINK(
|
||||||
|
mpSlideSorterController.get(),
|
||||||
|
controller::SlideSorterController,
|
||||||
|
TabBarHandler));
|
||||||
|
|
||||||
|
GetParentWindow()->AddEventListener(
|
||||||
|
LINK(
|
||||||
|
mpSlideSorterController.get(),
|
||||||
|
controller::SlideSorterController,
|
||||||
|
WindowEventHandler));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void SlideSorterViewShell::ReleaseListeners (void)
|
||||||
|
{
|
||||||
|
if (mpTabBar.get() != NULL)
|
||||||
|
{
|
||||||
|
mpTabBar->SetActivatePageHdl (Link());
|
||||||
|
mpTabBar.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (GetVerticalScrollBar() != NULL)
|
||||||
|
{
|
||||||
|
GetVerticalScrollBar()->SetScrollHdl (Link());
|
||||||
|
}
|
||||||
|
GetParentWindow()->RemoveEventListener(
|
||||||
|
LINK(mpSlideSorterController.get(),
|
||||||
|
controller::SlideSorterController,
|
||||||
|
WindowEventHandler));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void SlideSorterViewShell::GetFocus (void)
|
||||||
|
{
|
||||||
|
GetSlideSorterController().GetFocusManager().ShowFocus();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void SlideSorterViewShell::LoseFocus (void)
|
||||||
|
{
|
||||||
|
GetSlideSorterController().GetFocusManager().HideFocus();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SdPage* SlideSorterViewShell::GetActualPage (void)
|
||||||
|
{
|
||||||
|
return mpSlideSorterController->GetActualPage();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void SlideSorterViewShell::GetMenuState ( SfxItemSet& rSet)
|
||||||
|
{
|
||||||
|
ViewShell::GetMenuState(rSet);
|
||||||
|
mpSlideSorterController->GetMenuState (rSet);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void SlideSorterViewShell::ExecCtrl (SfxRequest& rRequest)
|
||||||
|
{
|
||||||
|
mpSlideSorterController->ExecCtrl(rRequest);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void SlideSorterViewShell::GetCtrlState (SfxItemSet& rSet)
|
||||||
|
{
|
||||||
|
mpSlideSorterController->GetCtrlState(rSet);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void SlideSorterViewShell::FuSupport (SfxRequest& rRequest)
|
||||||
|
{
|
||||||
|
mpSlideSorterController->FuSupport(rRequest);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** We have to handle those slot calls here that need to have access to
|
||||||
|
private or protected members and methods of this class.
|
||||||
|
*/
|
||||||
|
void SlideSorterViewShell::FuTemporary (SfxRequest& rRequest)
|
||||||
|
{
|
||||||
|
switch (rRequest.GetSlot())
|
||||||
|
{
|
||||||
|
case SID_MODIFYPAGE:
|
||||||
|
mpImpl->ProcessModifyPageSlot (
|
||||||
|
rRequest,
|
||||||
|
GetActualPage(),
|
||||||
|
mpSlideSorterModel->GetPageType());
|
||||||
|
Cancel();
|
||||||
|
rRequest.Done ();
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
mpSlideSorterController->FuTemporary(rRequest);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void SlideSorterViewShell::GetStatusBarState (SfxItemSet& rSet)
|
||||||
|
{
|
||||||
|
mpSlideSorterController->GetStatusBarState(rSet);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void SlideSorterViewShell::FuPermanent (SfxRequest& rRequest)
|
||||||
|
{
|
||||||
|
mpSlideSorterController->FuPermanent(rRequest);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void SlideSorterViewShell::GetAttrState (SfxItemSet& rSet)
|
||||||
|
{
|
||||||
|
mpSlideSorterController->GetAttrState(rSet);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void SlideSorterViewShell::ExecStatusBar (SfxRequest& rRequest)
|
||||||
|
{
|
||||||
|
mpSlideSorterController->ExecStatusBar(rRequest);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void SlideSorterViewShell::Paint (
|
||||||
|
const Rectangle& rBBox,
|
||||||
|
::sd::Window* pWindow)
|
||||||
|
{
|
||||||
|
SetActiveWindow (pWindow);
|
||||||
|
mpSlideSorterView->InitRedraw (pWindow, Region(rBBox));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void SlideSorterViewShell::ArrangeGUIElements (void)
|
||||||
|
{
|
||||||
|
Point aOrigin (aViewPos);
|
||||||
|
Size aSize (aViewSize);
|
||||||
|
|
||||||
|
if (aSize.Width()!=0 && aSize.Height()!=0)
|
||||||
|
{
|
||||||
|
// Prevent untimely redraws while the view is not yet correctly
|
||||||
|
// resized.
|
||||||
|
mpSlideSorterView->LockRedraw (TRUE);
|
||||||
|
if (GetActiveWindow() != NULL)
|
||||||
|
GetActiveWindow()->EnablePaint (FALSE);
|
||||||
|
|
||||||
|
if (mpTabBar.get() != NULL)
|
||||||
|
{
|
||||||
|
Size aTabSize (mpTabBar->GetSizePixel());
|
||||||
|
|
||||||
|
Point aTabPosition (mpTabBar->GetPosPixel());
|
||||||
|
mpTabBar->SetPosSizePixel (
|
||||||
|
aOrigin,
|
||||||
|
Size(aSize.Width(), aTabSize.Height()));
|
||||||
|
mpTabBar->Resize();
|
||||||
|
aOrigin.Y() += aTabSize.Height();
|
||||||
|
}
|
||||||
|
|
||||||
|
maAllWindowRectangle
|
||||||
|
= mpSlideSorterController->Resize (Rectangle(aOrigin, aSize));
|
||||||
|
|
||||||
|
if (GetActiveWindow() != NULL)
|
||||||
|
GetActiveWindow()->EnablePaint (TRUE);
|
||||||
|
|
||||||
|
mbLayoutPending = false;
|
||||||
|
mpSlideSorterView->LockRedraw (FALSE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
maAllWindowRectangle = Rectangle();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SvBorder SlideSorterViewShell::GetBorder (bool bOuterResize)
|
||||||
|
{
|
||||||
|
SvBorder aBorder;
|
||||||
|
|
||||||
|
ScrollBar* pScrollBar = GetVerticalScrollBar();
|
||||||
|
if (pScrollBar != NULL && pScrollBar->IsVisible())
|
||||||
|
aBorder.Right() = pScrollBar->GetOutputSizePixel().Width();
|
||||||
|
|
||||||
|
pScrollBar = GetHorizontalScrollBar();
|
||||||
|
if (pScrollBar != NULL && pScrollBar->IsVisible())
|
||||||
|
aBorder.Bottom() = pScrollBar->GetOutputSizePixel().Height();
|
||||||
|
|
||||||
|
return aBorder;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void SlideSorterViewShell::Command (
|
||||||
|
const CommandEvent& rEvent,
|
||||||
|
::sd::Window* pWindow)
|
||||||
|
{
|
||||||
|
if ( ! mpSlideSorterController->Command (rEvent, pWindow))
|
||||||
|
ViewShell::Command (rEvent, pWindow);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ScrollBar* SlideSorterViewShell::GetVerticalScrollBar (void) const
|
||||||
|
{
|
||||||
|
return mpVerticalScrollBar.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ScrollBar* SlideSorterViewShell::GetHorizontalScrollBar (void) const
|
||||||
|
{
|
||||||
|
return mpHorizontalScrollBar.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ScrollBarBox* SlideSorterViewShell::GetScrollBarFiller (void) const
|
||||||
|
{
|
||||||
|
return mpScrollBarBox.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void SlideSorterViewShell::ReadFrameViewData (FrameView* pFrameView)
|
||||||
|
{
|
||||||
|
if (pFrameView != NULL)
|
||||||
|
{
|
||||||
|
view::SlideSorterView& rView (*mpSlideSorterView);
|
||||||
|
rView.SetLineDraft (pFrameView->IsLineDraft());
|
||||||
|
rView.SetFillDraft (pFrameView->IsFillDraft());
|
||||||
|
rView.SetTextDraft (pFrameView->IsTextDraft());
|
||||||
|
rView.SetGrafDraft (pFrameView->IsGrafDraft());
|
||||||
|
//AF rView.ChangePagesPerRow (pFrameView->GetSlidesPerRow());
|
||||||
|
|
||||||
|
// DrawMode for 'main' window
|
||||||
|
if (GetActiveWindow()->GetDrawMode() != pFrameView->GetDrawMode() )
|
||||||
|
GetActiveWindow()->SetDrawMode( pFrameView->GetDrawMode() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void SlideSorterViewShell::WriteFrameViewData()
|
||||||
|
{
|
||||||
|
if (pFrameView != NULL)
|
||||||
|
{
|
||||||
|
view::SlideSorterView& rView (*mpSlideSorterView);
|
||||||
|
pFrameView->SetLineDraft( rView.IsLineDraft() );
|
||||||
|
pFrameView->SetFillDraft( rView.IsFillDraft() );
|
||||||
|
pFrameView->SetTextDraft( rView.IsTextDraft() );
|
||||||
|
pFrameView->SetGrafDraft( rView.IsGrafDraft() );
|
||||||
|
//AF pFrameView->SetSlidesPerRow(rView.GetPagesPerRow());
|
||||||
|
|
||||||
|
// DrawMode for 'main' window
|
||||||
|
if( pFrameView->GetDrawMode() != GetActiveWindow()->GetDrawMode() )
|
||||||
|
pFrameView->SetDrawMode( GetActiveWindow()->GetDrawMode() );
|
||||||
|
|
||||||
|
SdPage* pActualPage = GetActualPage();
|
||||||
|
|
||||||
|
if (pActualPage != NULL)
|
||||||
|
pFrameView->SetSelectedPage (
|
||||||
|
( pActualPage->GetPageNum() - 1 ) / 2 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
BOOL SlideSorterViewShell::HasUIFeature (ULONG nFeature)
|
||||||
|
{
|
||||||
|
switch (nFeature)
|
||||||
|
{
|
||||||
|
case gnSlideSorterToolbarFeature:
|
||||||
|
// Return true only when this is a main view.
|
||||||
|
if (IsMainViewShell())
|
||||||
|
return TRUE;
|
||||||
|
else
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
default:
|
||||||
|
// Unknown features are not supported.
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void SlideSorterViewShell::SetZoom (long int nZoom)
|
||||||
|
{
|
||||||
|
mpSlideSorterController->SetZoom (nZoom);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void SlideSorterViewShell::SetZoomRect (const Rectangle& rZoomRect)
|
||||||
|
{
|
||||||
|
Size aPageSize (mpSlideSorterView->GetPageBoundingBox(
|
||||||
|
0,
|
||||||
|
view::SlideSorterView::CS_MODEL,
|
||||||
|
view::SlideSorterView::BBT_SHAPE).GetSize());
|
||||||
|
|
||||||
|
Rectangle aRect(rZoomRect);
|
||||||
|
|
||||||
|
if (aRect.GetWidth() < aPageSize.Width())
|
||||||
|
{
|
||||||
|
long nWidthDiff = (aPageSize.Width() - aRect.GetWidth()) / 2;
|
||||||
|
|
||||||
|
aRect.Left() -= nWidthDiff;
|
||||||
|
aRect.Right() += nWidthDiff;
|
||||||
|
|
||||||
|
if (aRect.Left() < 0)
|
||||||
|
{
|
||||||
|
aRect.SetPos(Point(0, aRect.Top()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (aRect.GetHeight() < aPageSize.Height())
|
||||||
|
{
|
||||||
|
long nHeightDiff = (aPageSize.Height() - aRect.GetHeight()) / 2;
|
||||||
|
|
||||||
|
aRect.Top() -= nHeightDiff;
|
||||||
|
aRect.Bottom() += nHeightDiff;
|
||||||
|
|
||||||
|
if (aRect.Top() < 0)
|
||||||
|
{
|
||||||
|
aRect.SetPos(Point(aRect.Left(), 0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ViewShell::SetZoomRect(aRect);
|
||||||
|
|
||||||
|
// #106268#
|
||||||
|
GetViewFrame()->GetBindings().Invalidate( SID_ATTR_ZOOM );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SlideSorterViewShell::TabBarEntry
|
||||||
|
SlideSorterViewShell::SwitchTabBar (TabBarEntry eEntry)
|
||||||
|
{
|
||||||
|
SlideSorterViewShell::TabBarEntry eCurrentEntry;
|
||||||
|
|
||||||
|
if (mpTabBar.get() != NULL)
|
||||||
|
{
|
||||||
|
switch (eEntry)
|
||||||
|
{
|
||||||
|
case TBE_SWITCH:
|
||||||
|
if (mpTabBar->GetCurPageId() == TBE_SLIDES)
|
||||||
|
eEntry = TBE_MASTER_PAGES;
|
||||||
|
else
|
||||||
|
eEntry = TBE_SLIDES;
|
||||||
|
// Fall through.
|
||||||
|
|
||||||
|
case TBE_SLIDES:
|
||||||
|
case TBE_MASTER_PAGES:
|
||||||
|
mpTabBar->SetCurPageId (eEntry);
|
||||||
|
mpSlideSorterController->HandleModelChange();
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
// Unknown values are ignored.
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
eCurrentEntry = static_cast<TabBarEntry>(mpTabBar->GetCurPageId());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
eCurrentEntry = TBE_SLIDES;
|
||||||
|
|
||||||
|
return eCurrentEntry;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void SlideSorterViewShell::UpdateScrollBars (void)
|
||||||
|
{
|
||||||
|
// Do not call the overwritten method of the base class: We do all the
|
||||||
|
// scroll bar setup by ourselves.
|
||||||
|
mpSlideSorterController->GetScrollBarManager().UpdateScrollBars (false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
controller::SlideSorterController&
|
||||||
|
SlideSorterViewShell::GetSlideSorterController (void)
|
||||||
|
{
|
||||||
|
return *mpSlideSorterController;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void SlideSorterViewShell::StartDrag (
|
||||||
|
const Point& rDragPt,
|
||||||
|
::Window* pWindow )
|
||||||
|
{
|
||||||
|
GetSlideSorterController().GetClipboard().StartDrag (
|
||||||
|
rDragPt,
|
||||||
|
pWindow);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void SlideSorterViewShell::DragFinished (
|
||||||
|
sal_Int8 nDropAction)
|
||||||
|
{
|
||||||
|
GetSlideSorterController().GetClipboard().DragFinished (nDropAction);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
sal_Int8 SlideSorterViewShell::AcceptDrop (
|
||||||
|
const AcceptDropEvent& rEvt,
|
||||||
|
DropTargetHelper& rTargetHelper,
|
||||||
|
::sd::Window* pTargetWindow,
|
||||||
|
USHORT nPage,
|
||||||
|
USHORT nLayer)
|
||||||
|
{
|
||||||
|
return GetSlideSorterController().GetClipboard().AcceptDrop (
|
||||||
|
rEvt,
|
||||||
|
rTargetHelper,
|
||||||
|
pTargetWindow,
|
||||||
|
nPage,
|
||||||
|
nLayer);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
sal_Int8 SlideSorterViewShell::ExecuteDrop (
|
||||||
|
const ExecuteDropEvent& rEvt,
|
||||||
|
DropTargetHelper& rTargetHelper,
|
||||||
|
::sd::Window* pTargetWindow,
|
||||||
|
USHORT nPage,
|
||||||
|
USHORT nLayer)
|
||||||
|
{
|
||||||
|
return GetSlideSorterController().GetClipboard().ExecuteDrop (
|
||||||
|
rEvt,
|
||||||
|
rTargetHelper,
|
||||||
|
pTargetWindow,
|
||||||
|
nPage,
|
||||||
|
nLayer);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void SlideSorterViewShell::GetSelectedPages (
|
||||||
|
::std::vector<SdPage*>& rPageContainer)
|
||||||
|
{
|
||||||
|
model::PageEnumeration aPages (
|
||||||
|
mpSlideSorterModel->GetSelectedPagesEnumeration());
|
||||||
|
while (aPages.HasMoreElements())
|
||||||
|
{
|
||||||
|
model::PageDescriptor& rDescriptor (aPages.GetNextElement());
|
||||||
|
rPageContainer.push_back (rDescriptor.GetPage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} } // end of namespace ::sd::slidesorter
|
Loading…
Reference in a new issue