1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 #ifndef SD_SHOW_WINDOW_HXX 29 #define SD_SHOW_WINDOW_HXX 30 31 #include <rtl/ref.hxx> 32 #include <sal/types.h> 33 #include <vcl/timer.hxx> 34 #include <vcl/graph.hxx> 35 36 #ifndef SD_WINDOW_HXX 37 #include "Window.hxx" 38 #endif 39 40 #include "slideshowimpl.hxx" 41 42 // ---------------- 43 // - SdShowWindow - 44 // ---------------- 45 46 47 namespace sd { 48 49 class SlideshowImpl; 50 class PreviewWindow; 51 class ViewShell; 52 53 // ----------- 54 // - Defines - 55 // ----------- 56 57 #define SLIDE_NO_TIMEOUT SAL_MAX_INT32 58 59 // --------- 60 // - Enums - 61 // --------- 62 63 enum ShowWindowMode 64 { 65 SHOWWINDOWMODE_NORMAL = 0, 66 SHOWWINDOWMODE_PAUSE = 1, 67 SHOWWINDOWMODE_END = 2, 68 SHOWWINDOWMODE_BLANK = 3, 69 SHOWWINDOWMODE_PREVIEW = 4 70 }; 71 72 //class ShowWindowImpl; 73 74 class ShowWindow 75 : public ::sd::Window 76 { 77 // friend class ShowWindowImpl; 78 public: 79 ShowWindow ( const ::rtl::Reference< ::sd::SlideshowImpl >& xController, ::Window* pParent ); 80 virtual ~ShowWindow (void); 81 82 sal_Bool SetEndMode(); 83 sal_Bool SetPauseMode( sal_Int32 nPageIndexToRestart, sal_Int32 nTimeoutSec = SLIDE_NO_TIMEOUT, Graphic* pLogo = NULL ); 84 sal_Bool SetBlankMode( sal_Int32 nPageIndexToRestart, const Color& rBlankColor ); 85 86 const Color& GetBlankColor() const { return maShowBackground.GetColor(); } 87 88 void SetPreviewMode(); 89 void SetPresentationArea( const Rectangle& rPresArea ); 90 91 void SetMouseAutoHide( bool bMouseAutoHide ) { mbMouseAutoHide = bMouseAutoHide; } 92 93 ShowWindowMode GetShowWindowMode() const { return meShowWindowMode; } 94 95 void RestartShow( sal_Int32 nPageIndexToRestart ); 96 97 virtual void Move(); 98 virtual void Resize(); 99 virtual void GetFocus(); 100 virtual void LoseFocus(); 101 // virtual void GrabFocus(); 102 103 virtual void KeyInput(const KeyEvent& rKEvt); 104 virtual void MouseMove(const MouseEvent& rMEvt); 105 virtual void MouseButtonUp(const MouseEvent& rMEvt); 106 virtual void MouseButtonDown(const MouseEvent& rMEvt); 107 virtual void Paint(const Rectangle& rRect); 108 virtual long Notify(NotifyEvent& rNEvt); 109 110 void TerminateShow(); 111 void RestartShow(); 112 113 private: 114 void DrawPauseScene( sal_Bool bTimeoutOnly ); 115 void DrawEndScene(); 116 void DrawBlankScene(); 117 118 void DeleteWindowFromPaintView(); 119 void AddWindowToPaintView(); 120 121 private: 122 Timer maPauseTimer; 123 Timer maMouseTimer; 124 Wallpaper maShowBackground; 125 Graphic maLogo; 126 sal_uLong mnPauseTimeout; 127 sal_Int32 mnRestartPageIndex; 128 ShowWindowMode meShowWindowMode; 129 sal_Bool mbShowNavigatorAfterSpecialMode; 130 Rectangle maPresArea; 131 bool mbMouseAutoHide; 132 bool mbMouseCursorHidden; 133 sal_uLong mnFirstMouseMove; 134 135 DECL_LINK( PauseTimeoutHdl, Timer* pTimer ); 136 DECL_LINK( MouseTimeoutHdl, Timer* pTimer ); 137 DECL_LINK( EventHdl, VclWindowEvent* pEvent ); 138 139 ::rtl::Reference< SlideshowImpl > mxController; 140 }; 141 142 } // end of namespace sd 143 144 #endif 145