1c45d927aSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3c45d927aSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4c45d927aSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5c45d927aSAndrew Rist  * distributed with this work for additional information
6c45d927aSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7c45d927aSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8c45d927aSAndrew Rist  * "License"); you may not use this file except in compliance
9c45d927aSAndrew Rist  * with the License.  You may obtain a copy of the License at
10c45d927aSAndrew Rist  *
11c45d927aSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12c45d927aSAndrew Rist  *
13c45d927aSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14c45d927aSAndrew Rist  * software distributed under the License is distributed on an
15c45d927aSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16c45d927aSAndrew Rist  * KIND, either express or implied.  See the License for the
17c45d927aSAndrew Rist  * specific language governing permissions and limitations
18c45d927aSAndrew Rist  * under the License.
19c45d927aSAndrew Rist  *
20c45d927aSAndrew Rist  *************************************************************/
21c45d927aSAndrew Rist 
22c45d927aSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #ifndef SD_SHOW_WINDOW_HXX
25cdf0e10cSrcweir #define SD_SHOW_WINDOW_HXX
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include <rtl/ref.hxx>
28cdf0e10cSrcweir #include <sal/types.h>
29cdf0e10cSrcweir #include <vcl/timer.hxx>
30cdf0e10cSrcweir #include <vcl/graph.hxx>
31cdf0e10cSrcweir 
32cdf0e10cSrcweir #ifndef SD_WINDOW_HXX
33cdf0e10cSrcweir #include "Window.hxx"
34cdf0e10cSrcweir #endif
35cdf0e10cSrcweir 
36cdf0e10cSrcweir #include "slideshowimpl.hxx"
37cdf0e10cSrcweir 
38cdf0e10cSrcweir // ----------------
39cdf0e10cSrcweir // - SdShowWindow -
40cdf0e10cSrcweir // ----------------
41cdf0e10cSrcweir 
42cdf0e10cSrcweir 
43cdf0e10cSrcweir namespace sd {
44cdf0e10cSrcweir 
45cdf0e10cSrcweir class SlideshowImpl;
46cdf0e10cSrcweir class PreviewWindow;
47cdf0e10cSrcweir class ViewShell;
48cdf0e10cSrcweir 
49cdf0e10cSrcweir // -----------
50cdf0e10cSrcweir // - Defines -
51cdf0e10cSrcweir // -----------
52cdf0e10cSrcweir 
53cdf0e10cSrcweir #define SLIDE_NO_TIMEOUT SAL_MAX_INT32
54cdf0e10cSrcweir 
55cdf0e10cSrcweir // ---------
56cdf0e10cSrcweir // - Enums -
57cdf0e10cSrcweir // ---------
58cdf0e10cSrcweir 
59cdf0e10cSrcweir enum ShowWindowMode
60cdf0e10cSrcweir {
61cdf0e10cSrcweir     SHOWWINDOWMODE_NORMAL = 0,
62cdf0e10cSrcweir     SHOWWINDOWMODE_PAUSE = 1,
63cdf0e10cSrcweir     SHOWWINDOWMODE_END = 2,
64cdf0e10cSrcweir     SHOWWINDOWMODE_BLANK = 3,
65cdf0e10cSrcweir 	SHOWWINDOWMODE_PREVIEW = 4
66cdf0e10cSrcweir };
67cdf0e10cSrcweir 
68cdf0e10cSrcweir //class ShowWindowImpl;
69cdf0e10cSrcweir 
70cdf0e10cSrcweir class ShowWindow
71cdf0e10cSrcweir     : public ::sd::Window
72cdf0e10cSrcweir {
73cdf0e10cSrcweir //	friend class ShowWindowImpl;
74cdf0e10cSrcweir public:
75cdf0e10cSrcweir 	ShowWindow ( const ::rtl::Reference< ::sd::SlideshowImpl >& xController, ::Window* pParent );
76cdf0e10cSrcweir     virtual ~ShowWindow (void);
77cdf0e10cSrcweir 
78cdf0e10cSrcweir    	sal_Bool			SetEndMode();
79cdf0e10cSrcweir 	sal_Bool			SetPauseMode( sal_Int32 nPageIndexToRestart, sal_Int32 nTimeoutSec = SLIDE_NO_TIMEOUT, Graphic* pLogo = NULL );
80cdf0e10cSrcweir 	sal_Bool			SetBlankMode( sal_Int32 nPageIndexToRestart, const Color& rBlankColor );
81cdf0e10cSrcweir 
GetBlankColor() const82cdf0e10cSrcweir 	const Color&		GetBlankColor() const { return maShowBackground.GetColor(); }
83cdf0e10cSrcweir 
84cdf0e10cSrcweir 	void			SetPreviewMode();
85cdf0e10cSrcweir 	void			SetPresentationArea( const Rectangle& rPresArea );
86cdf0e10cSrcweir 
SetMouseAutoHide(bool bMouseAutoHide)87cdf0e10cSrcweir 	void			SetMouseAutoHide( bool bMouseAutoHide ) { mbMouseAutoHide = bMouseAutoHide; }
88cdf0e10cSrcweir 
GetShowWindowMode() const89cdf0e10cSrcweir 	ShowWindowMode  GetShowWindowMode() const { return meShowWindowMode; }
90cdf0e10cSrcweir 
91cdf0e10cSrcweir 	void			RestartShow( sal_Int32 nPageIndexToRestart );
92cdf0e10cSrcweir 
93cdf0e10cSrcweir     virtual void	Move();
94cdf0e10cSrcweir     virtual void	Resize();
95cdf0e10cSrcweir     virtual void	GetFocus();
96cdf0e10cSrcweir     virtual void	LoseFocus();
97cdf0e10cSrcweir //	virtual void	GrabFocus();
98cdf0e10cSrcweir 
99cdf0e10cSrcweir 	virtual void	KeyInput(const KeyEvent& rKEvt);
100cdf0e10cSrcweir 	virtual void	MouseMove(const MouseEvent& rMEvt);
101cdf0e10cSrcweir 	virtual void	MouseButtonUp(const MouseEvent& rMEvt);
102cdf0e10cSrcweir 	virtual void	MouseButtonDown(const MouseEvent& rMEvt);
103cdf0e10cSrcweir 	virtual void	Paint(const Rectangle& rRect);
104cdf0e10cSrcweir 	virtual long	Notify(NotifyEvent& rNEvt);
105*0deba7fbSSteve Yin 	//Overload the sd::Window's CreateAccessible to create a different accessible object
106*0deba7fbSSteve Yin     virtual ::com::sun::star::uno::Reference<
107*0deba7fbSSteve Yin         ::com::sun::star::accessibility::XAccessible>
108*0deba7fbSSteve Yin         CreateAccessible (void);
109cdf0e10cSrcweir 
110cdf0e10cSrcweir 	void			TerminateShow();
111cdf0e10cSrcweir 	void			RestartShow();
112cdf0e10cSrcweir 
113cdf0e10cSrcweir private:
114cdf0e10cSrcweir 	void			DrawPauseScene( sal_Bool bTimeoutOnly );
115cdf0e10cSrcweir 	void			DrawEndScene();
116cdf0e10cSrcweir 	void			DrawBlankScene();
117cdf0e10cSrcweir 
118cdf0e10cSrcweir 	void			DeleteWindowFromPaintView();
119cdf0e10cSrcweir 	void			AddWindowToPaintView();
120cdf0e10cSrcweir 
121cdf0e10cSrcweir private:
122cdf0e10cSrcweir 	Timer			maPauseTimer;
123cdf0e10cSrcweir 	Timer			maMouseTimer;
124cdf0e10cSrcweir 	Wallpaper		maShowBackground;
125cdf0e10cSrcweir 	Graphic			maLogo;
126cdf0e10cSrcweir 	sal_uLong			mnPauseTimeout;
127cdf0e10cSrcweir 	sal_Int32		mnRestartPageIndex;
128cdf0e10cSrcweir     ShowWindowMode  meShowWindowMode;
129cdf0e10cSrcweir 	sal_Bool			mbShowNavigatorAfterSpecialMode;
130cdf0e10cSrcweir 	Rectangle		maPresArea;
131cdf0e10cSrcweir 	bool			mbMouseAutoHide;
132cdf0e10cSrcweir 	bool			mbMouseCursorHidden;
133cdf0e10cSrcweir 	sal_uLong			mnFirstMouseMove;
134cdf0e10cSrcweir 
135cdf0e10cSrcweir 					DECL_LINK( PauseTimeoutHdl, Timer* pTimer );
136cdf0e10cSrcweir 					DECL_LINK( MouseTimeoutHdl, Timer* pTimer );
137cdf0e10cSrcweir 					DECL_LINK( EventHdl, VclWindowEvent* pEvent );
138cdf0e10cSrcweir 
139cdf0e10cSrcweir 	::rtl::Reference< SlideshowImpl > mxController;
140cdf0e10cSrcweir };
141cdf0e10cSrcweir 
142cdf0e10cSrcweir } // end of namespace sd
143cdf0e10cSrcweir 
144cdf0e10cSrcweir #endif
145