xref: /AOO41X/main/sd/source/ui/view/presvish.cxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir 
28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
29*cdf0e10cSrcweir #include "precompiled_sd.hxx"
30*cdf0e10cSrcweir 
31*cdf0e10cSrcweir #include <com/sun/star/presentation/XSlideShowController.hpp>
32*cdf0e10cSrcweir 
33*cdf0e10cSrcweir #include <com/sun/star/lang/XMultiServiceFactory.hpp>
34*cdf0e10cSrcweir #include <com/sun/star/beans/XPropertySet.hpp>
35*cdf0e10cSrcweir #include <comphelper/processfactory.hxx>
36*cdf0e10cSrcweir 
37*cdf0e10cSrcweir #include "PresentationViewShell.hxx"
38*cdf0e10cSrcweir #include "optsitem.hxx"
39*cdf0e10cSrcweir #include "sddll.hxx"
40*cdf0e10cSrcweir #include <sfx2/request.hxx>
41*cdf0e10cSrcweir #ifndef _SFX_DISPATCH_HXX
42*cdf0e10cSrcweir #include <sfx2/dispatch.hxx>
43*cdf0e10cSrcweir #endif
44*cdf0e10cSrcweir 
45*cdf0e10cSrcweir #include <sfx2/objface.hxx>
46*cdf0e10cSrcweir 
47*cdf0e10cSrcweir #include <svx/svxids.hrc>
48*cdf0e10cSrcweir #ifndef SD_FRAME_VIEW
49*cdf0e10cSrcweir #include "FrameView.hxx"
50*cdf0e10cSrcweir #endif
51*cdf0e10cSrcweir #include "sdresid.hxx"
52*cdf0e10cSrcweir #include "DrawDocShell.hxx"
53*cdf0e10cSrcweir #include "slideshow.hxx"
54*cdf0e10cSrcweir #include "sdattr.hxx"
55*cdf0e10cSrcweir #include "sdpage.hxx"
56*cdf0e10cSrcweir #include "drawdoc.hxx"
57*cdf0e10cSrcweir #include "drawview.hxx"
58*cdf0e10cSrcweir #include "app.hrc"
59*cdf0e10cSrcweir #include "strings.hrc"
60*cdf0e10cSrcweir #include "glob.hrc"
61*cdf0e10cSrcweir #include "ViewShellBase.hxx"
62*cdf0e10cSrcweir #include "FactoryIds.hxx"
63*cdf0e10cSrcweir 
64*cdf0e10cSrcweir // #110496#
65*cdf0e10cSrcweir #include "slideshow.hxx"
66*cdf0e10cSrcweir #include "fupoor.hxx"
67*cdf0e10cSrcweir #include "Window.hxx"
68*cdf0e10cSrcweir 
69*cdf0e10cSrcweir #define PresentationViewShell
70*cdf0e10cSrcweir using namespace sd;
71*cdf0e10cSrcweir #include "sdslots.hxx"
72*cdf0e10cSrcweir 
73*cdf0e10cSrcweir using ::rtl::OUString;
74*cdf0e10cSrcweir using namespace ::com::sun::star::uno;
75*cdf0e10cSrcweir using namespace ::com::sun::star::lang;
76*cdf0e10cSrcweir using namespace ::com::sun::star::beans;
77*cdf0e10cSrcweir using namespace ::com::sun::star::presentation;
78*cdf0e10cSrcweir 
79*cdf0e10cSrcweir namespace sd {
80*cdf0e10cSrcweir 
81*cdf0e10cSrcweir // -------------------
82*cdf0e10cSrcweir // - PresentationViewShell -
83*cdf0e10cSrcweir // -------------------
84*cdf0e10cSrcweir 
85*cdf0e10cSrcweir SFX_IMPL_INTERFACE( PresentationViewShell, DrawViewShell, SdResId( STR_PRESVIEWSHELL ) )
86*cdf0e10cSrcweir {
87*cdf0e10cSrcweir 	SFX_OBJECTBAR_REGISTRATION( SFX_OBJECTBAR_TOOLS | SFX_VISIBILITY_STANDARD |
88*cdf0e10cSrcweir 								SFX_VISIBILITY_FULLSCREEN | SFX_VISIBILITY_SERVER,
89*cdf0e10cSrcweir 								SdResId(RID_DRAW_TOOLBOX));
90*cdf0e10cSrcweir     SFX_OBJECTBAR_REGISTRATION( SFX_OBJECTBAR_APPLICATION | SFX_VISIBILITY_DESKTOP | SFX_VISIBILITY_STANDARD | SFX_VISIBILITY_CLIENT | SFX_VISIBILITY_VIEWER | SFX_VISIBILITY_READONLYDOC,
91*cdf0e10cSrcweir             					SdResId(RID_DRAW_VIEWER_TOOLBOX) );
92*cdf0e10cSrcweir 	SFX_OBJECTBAR_REGISTRATION( SFX_OBJECTBAR_OPTIONS | SFX_VISIBILITY_STANDARD |
93*cdf0e10cSrcweir 								SFX_VISIBILITY_SERVER,
94*cdf0e10cSrcweir 								SdResId(RID_DRAW_OPTIONS_TOOLBOX));
95*cdf0e10cSrcweir 	SFX_OBJECTBAR_REGISTRATION( SFX_OBJECTBAR_COMMONTASK | SFX_VISIBILITY_STANDARD |
96*cdf0e10cSrcweir 								SFX_VISIBILITY_SERVER,
97*cdf0e10cSrcweir 								SdResId(RID_DRAW_COMMONTASK_TOOLBOX));
98*cdf0e10cSrcweir }
99*cdf0e10cSrcweir 
100*cdf0e10cSrcweir 
101*cdf0e10cSrcweir TYPEINIT1( PresentationViewShell, DrawViewShell );
102*cdf0e10cSrcweir 
103*cdf0e10cSrcweir PresentationViewShell::PresentationViewShell( SfxViewFrame* pFrame, ViewShellBase& rViewShellBase, ::Window* pParentWindow, FrameView* pFrameView)
104*cdf0e10cSrcweir : DrawViewShell( pFrame, rViewShellBase, pParentWindow, PK_STANDARD, pFrameView)
105*cdf0e10cSrcweir {
106*cdf0e10cSrcweir 	if( GetDocSh() && GetDocSh()->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED )
107*cdf0e10cSrcweir         maOldVisArea = GetDocSh()->GetVisArea( ASPECT_CONTENT );
108*cdf0e10cSrcweir     meShellType = ST_PRESENTATION;
109*cdf0e10cSrcweir }
110*cdf0e10cSrcweir 
111*cdf0e10cSrcweir PresentationViewShell::~PresentationViewShell (void)
112*cdf0e10cSrcweir {
113*cdf0e10cSrcweir 	if( GetDocSh() && GetDocSh()->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED && !maOldVisArea.IsEmpty() )
114*cdf0e10cSrcweir 		GetDocSh()->SetVisArea( maOldVisArea );
115*cdf0e10cSrcweir }
116*cdf0e10cSrcweir 
117*cdf0e10cSrcweir void PresentationViewShell::FinishInitialization( FrameView* pFrameView )
118*cdf0e10cSrcweir {
119*cdf0e10cSrcweir     DrawViewShell::Init(true);
120*cdf0e10cSrcweir 
121*cdf0e10cSrcweir     // Use the frame view that comes form the view shell that initiated our
122*cdf0e10cSrcweir     // creation.
123*cdf0e10cSrcweir     if (pFrameView != NULL)
124*cdf0e10cSrcweir     {
125*cdf0e10cSrcweir         GetFrameView()->Disconnect();
126*cdf0e10cSrcweir         SetFrameView (pFrameView);
127*cdf0e10cSrcweir         pFrameView->Connect();
128*cdf0e10cSrcweir     }
129*cdf0e10cSrcweir 	SetRuler(false);
130*cdf0e10cSrcweir //    SwitchPage (nPageNumber);
131*cdf0e10cSrcweir     WriteFrameViewData();
132*cdf0e10cSrcweir 
133*cdf0e10cSrcweir     GetActiveWindow()->GrabFocus();
134*cdf0e10cSrcweir }
135*cdf0e10cSrcweir 
136*cdf0e10cSrcweir 
137*cdf0e10cSrcweir SvxRuler* PresentationViewShell::CreateHRuler(::sd::Window*, sal_Bool)
138*cdf0e10cSrcweir {
139*cdf0e10cSrcweir     return NULL;
140*cdf0e10cSrcweir }
141*cdf0e10cSrcweir 
142*cdf0e10cSrcweir SvxRuler* PresentationViewShell::CreateVRuler(::sd::Window*)
143*cdf0e10cSrcweir {
144*cdf0e10cSrcweir     return NULL;
145*cdf0e10cSrcweir }
146*cdf0e10cSrcweir 
147*cdf0e10cSrcweir 
148*cdf0e10cSrcweir void PresentationViewShell::Activate( sal_Bool bIsMDIActivate )
149*cdf0e10cSrcweir {
150*cdf0e10cSrcweir 	DrawViewShell::Activate( bIsMDIActivate );
151*cdf0e10cSrcweir 
152*cdf0e10cSrcweir 	if( bIsMDIActivate )
153*cdf0e10cSrcweir 	{
154*cdf0e10cSrcweir 		//HMH::sd::View*     pView = GetView();
155*cdf0e10cSrcweir 		SfxBoolItem aItem( SID_NAVIGATOR_INIT, sal_True );
156*cdf0e10cSrcweir 
157*cdf0e10cSrcweir         GetViewFrame()->GetDispatcher()->Execute( SID_NAVIGATOR_INIT, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD, &aItem, 0L );
158*cdf0e10cSrcweir 
159*cdf0e10cSrcweir 		rtl::Reference< SlideShow > xSlideShow( SlideShow::GetSlideShow( GetViewShellBase() ) );
160*cdf0e10cSrcweir 		if( xSlideShow.is() )
161*cdf0e10cSrcweir 			xSlideShow->activate(GetViewShellBase());
162*cdf0e10cSrcweir 
163*cdf0e10cSrcweir 		if( HasCurrentFunction() )
164*cdf0e10cSrcweir 			GetCurrentFunction()->Activate();
165*cdf0e10cSrcweir 	}
166*cdf0e10cSrcweir 
167*cdf0e10cSrcweir 	if( bIsMDIActivate )
168*cdf0e10cSrcweir 		ReadFrameViewData( mpFrameView );
169*cdf0e10cSrcweir 	GetDocSh()->Connect( this );
170*cdf0e10cSrcweir }
171*cdf0e10cSrcweir 
172*cdf0e10cSrcweir void PresentationViewShell::Paint( const Rectangle& rRect, ::sd::Window* )
173*cdf0e10cSrcweir {
174*cdf0e10cSrcweir 	rtl::Reference< SlideShow > xSlideShow( SlideShow::GetSlideShow( GetViewShellBase() ) );
175*cdf0e10cSrcweir 	if( xSlideShow.is() )
176*cdf0e10cSrcweir 		xSlideShow->paint(rRect);
177*cdf0e10cSrcweir }
178*cdf0e10cSrcweir 
179*cdf0e10cSrcweir void PresentationViewShell::Resize (void)
180*cdf0e10cSrcweir {
181*cdf0e10cSrcweir     ViewShell::Resize(); // do not call DrawViewShell here!
182*cdf0e10cSrcweir 
183*cdf0e10cSrcweir 	rtl::Reference< sd::SlideShow > xSlideshow( SlideShow::GetSlideShow( GetViewShellBase() ) );
184*cdf0e10cSrcweir     if( xSlideshow.is() )
185*cdf0e10cSrcweir         xSlideshow->resize(maViewSize);
186*cdf0e10cSrcweir }
187*cdf0e10cSrcweir 
188*cdf0e10cSrcweir } // end of namespace sd
189