LCOV - code coverage report
Current view: top level - sd/source/ui/slideshow - showwin.cxx (source / functions) Hit Total Coverage
Test: commit 10e77ab3ff6f4314137acd6e2702a6e5c1ce1fae Lines: 1 316 0.3 %
Date: 2014-11-03 Functions: 2 34 5.9 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #include <com/sun/star/awt/Key.hpp>
      21             : 
      22             : #include "showwindow.hxx"
      23             : 
      24             : #include <unotools/syslocale.hxx>
      25             : #include <sfx2/viewfrm.hxx>
      26             : 
      27             : #include "res_bmp.hrc"
      28             : #include "slideshow.hxx"
      29             : #include "ViewShellBase.hxx"
      30             : #include "sdresid.hxx"
      31             : #include "helpids.h"
      32             : #include "strings.hrc"
      33             : 
      34             : #include <vcl/settings.hxx>
      35             : #include <vcl/virdev.hxx>
      36             : 
      37             : using namespace ::com::sun::star;
      38             : 
      39             : namespace sd {
      40             : 
      41             : static const sal_uLong HIDE_MOUSE_TIMEOUT = 10000;
      42             : static const sal_uLong SHOW_MOUSE_TIMEOUT = 1000;
      43             : 
      44           0 : ShowWindow::ShowWindow( const ::rtl::Reference< SlideshowImpl >& xController, vcl::Window* pParent )
      45             : : ::sd::Window( pParent )
      46             : , mnPauseTimeout( SLIDE_NO_TIMEOUT )
      47             : , mnRestartPageIndex( PAGE_NO_END )
      48             : , meShowWindowMode(SHOWWINDOWMODE_NORMAL)
      49             : , mbShowNavigatorAfterSpecialMode( false )
      50             : , mbMouseAutoHide(true)
      51             : , mbMouseCursorHidden(false)
      52             : , mnFirstMouseMove(0)
      53           0 : , mxController( xController )
      54             : {
      55           0 :     SetOutDevViewType( OUTDEV_VIEWTYPE_SLIDESHOW );
      56             : 
      57             :     // Do never mirror the preview window.  This explicitly includes right
      58             :     // to left writing environments.
      59           0 :     EnableRTL (false);
      60             : 
      61           0 :     MapMode aMap(GetMapMode());
      62           0 :     aMap.SetMapUnit(MAP_100TH_MM);
      63           0 :     SetMapMode(aMap);
      64             : 
      65             :     // set HelpId
      66           0 :     SetHelpId( HID_SD_WIN_PRESENTATION );
      67           0 :     SetUniqueId( HID_SD_WIN_PRESENTATION );
      68             : 
      69           0 :     maPauseTimer.SetTimeoutHdl( LINK( this, ShowWindow, PauseTimeoutHdl ) );
      70           0 :     maPauseTimer.SetTimeout( 1000 );
      71           0 :     maMouseTimer.SetTimeoutHdl( LINK( this, ShowWindow, MouseTimeoutHdl ) );
      72           0 :     maMouseTimer.SetTimeout( HIDE_MOUSE_TIMEOUT );
      73             : 
      74           0 :     maShowBackground = Wallpaper( Color( COL_BLACK ) );
      75           0 :     SetBackground(); // avoids that VCL paints any background!
      76           0 :     GetParent()->Show();
      77           0 :     AddEventListener( LINK( this, ShowWindow, EventHdl ) );
      78           0 : }
      79             : 
      80           0 : ShowWindow::~ShowWindow(void)
      81             : {
      82           0 :     maPauseTimer.Stop();
      83           0 :     maMouseTimer.Stop();
      84           0 : }
      85             : 
      86           0 : void ShowWindow::KeyInput(const KeyEvent& rKEvt)
      87             : {
      88           0 :     bool bReturn = false;
      89             : 
      90           0 :     if( SHOWWINDOWMODE_PREVIEW == meShowWindowMode )
      91             :     {
      92           0 :         TerminateShow();
      93           0 :         bReturn = true;
      94             :     }
      95           0 :     else if( SHOWWINDOWMODE_END == meShowWindowMode )
      96             :     {
      97           0 :         const int nKeyCode = rKEvt.GetKeyCode().GetCode();
      98           0 :         switch( nKeyCode )
      99             :         {
     100             :         case KEY_PAGEUP:
     101             :         case KEY_LEFT:
     102             :         case KEY_UP:
     103             :         case KEY_P:
     104             :         case KEY_HOME:
     105             :         case KEY_END:
     106             :         case awt::Key::CONTEXTMENU:
     107             :             // these keys will be handled by the slide show even
     108             :             // while in end mode
     109           0 :             break;
     110             :         default:
     111           0 :             TerminateShow();
     112           0 :             bReturn = true;
     113             :         }
     114             :     }
     115           0 :     else if( SHOWWINDOWMODE_BLANK == meShowWindowMode )
     116             :     {
     117           0 :         RestartShow();
     118           0 :         bReturn = true;
     119             :     }
     120           0 :     else if( SHOWWINDOWMODE_PAUSE == meShowWindowMode )
     121             :     {
     122           0 :         const int nKeyCode = rKEvt.GetKeyCode().GetCode();
     123           0 :         switch( nKeyCode )
     124             :         {
     125             :         case KEY_ESCAPE:
     126           0 :             TerminateShow();
     127           0 :             bReturn = true;
     128           0 :             break;
     129             :         case KEY_PAGEUP:
     130             :         case KEY_RIGHT:
     131             :         case KEY_UP:
     132             :         case KEY_P:
     133             :         case KEY_HOME:
     134             :         case KEY_END:
     135             :         case awt::Key::CONTEXTMENU:
     136             :             // these keys will be handled by the slide show even
     137             :             // while in end mode
     138           0 :             break;
     139             :         default:
     140           0 :             RestartShow();
     141           0 :             bReturn = true;
     142           0 :             break;
     143             :         }
     144             :     }
     145             : 
     146           0 :     if( !bReturn )
     147             :     {
     148           0 :         if( mxController.is() )
     149           0 :             bReturn = mxController->keyInput(rKEvt);
     150             : 
     151           0 :         if( !bReturn )
     152             :         {
     153           0 :             if( mpViewShell )
     154             :             {
     155           0 :                 mpViewShell->KeyInput(rKEvt,this);
     156             :             }
     157             :             else
     158             :             {
     159           0 :                 Window::KeyInput(rKEvt);
     160             :             }
     161             :         }
     162             :     }
     163             : 
     164           0 :     if( mpViewShell )
     165           0 :         mpViewShell->SetActiveWindow( this );
     166           0 : }
     167             : 
     168           0 : void ShowWindow::MouseButtonDown(const MouseEvent& /*rMEvt*/)
     169             : {
     170           0 :     if( SHOWWINDOWMODE_PREVIEW == meShowWindowMode )
     171             :     {
     172           0 :         TerminateShow();
     173             :     }
     174           0 :     else if( mpViewShell )
     175             :     {
     176           0 :         mpViewShell->SetActiveWindow( this );
     177             :     }
     178           0 : }
     179             : 
     180           0 : void ShowWindow::MouseMove(const MouseEvent& /*rMEvt*/)
     181             : {
     182           0 :     if( mbMouseAutoHide )
     183             :     {
     184           0 :         if( mbMouseCursorHidden )
     185             :         {
     186           0 :             if( mnFirstMouseMove )
     187             :             {
     188             :                 // if this is not the first mouse move while hidden, see if
     189             :                 // enough time has pasted to show mouse pointer again
     190           0 :                 sal_uLong nTime = ::tools::Time::GetSystemTicks();
     191           0 :                 if( (nTime - mnFirstMouseMove) >= SHOW_MOUSE_TIMEOUT )
     192             :                 {
     193           0 :                     ShowPointer( true );
     194           0 :                     mnFirstMouseMove = 0;
     195           0 :                     mbMouseCursorHidden = false;
     196           0 :                     maMouseTimer.SetTimeout( HIDE_MOUSE_TIMEOUT );
     197           0 :                     maMouseTimer.Start();
     198             :                 }
     199             :             }
     200             :             else
     201             :             {
     202             :                 // if this is the first mouse move, note current
     203             :                 // time and start idle timer to cancel show mouse pointer
     204             :                 // again if not enough mouse movement is measured
     205           0 :                 mnFirstMouseMove = ::tools::Time::GetSystemTicks();
     206           0 :                 maMouseTimer.SetTimeout( 2*SHOW_MOUSE_TIMEOUT );
     207           0 :                 maMouseTimer.Start();
     208             :             }
     209             :         }
     210             :         else
     211             :         {
     212             :             // current mousemove restarts the idle timer to hide the mouse
     213           0 :             maMouseTimer.Start();
     214             :         }
     215             :     }
     216             : 
     217           0 :     if( mpViewShell )
     218           0 :         mpViewShell->SetActiveWindow( this );
     219           0 : }
     220             : 
     221           0 : void ShowWindow::MouseButtonUp(const MouseEvent& rMEvt)
     222             : {
     223           0 :     if( SHOWWINDOWMODE_PREVIEW == meShowWindowMode )
     224             :     {
     225           0 :         TerminateShow();
     226             :     }
     227           0 :     else if( (SHOWWINDOWMODE_END == meShowWindowMode) && !rMEvt.IsRight() )
     228             :     {
     229           0 :         TerminateShow();
     230             :     }
     231           0 :     else if( (( SHOWWINDOWMODE_BLANK == meShowWindowMode ) || ( SHOWWINDOWMODE_PAUSE == meShowWindowMode ))
     232           0 :              && !rMEvt.IsRight() )
     233             :     {
     234           0 :         RestartShow();
     235             :     }
     236             :     else
     237             :     {
     238           0 :         if( mxController.is() )
     239           0 :             mxController->mouseButtonUp( rMEvt );
     240             :     }
     241           0 : }
     242             : 
     243             : /**
     244             :  * if FuSlideShow is still available, forward it
     245             :  */
     246           0 : void ShowWindow::Paint(const Rectangle& rRect)
     247             : {
     248           0 :     if( (meShowWindowMode == SHOWWINDOWMODE_NORMAL) || (meShowWindowMode == SHOWWINDOWMODE_PREVIEW) )
     249             :     {
     250           0 :         if( mxController.is() )
     251             :         {
     252           0 :             mxController->paint(rRect);
     253             :         }
     254           0 :         else if(mpViewShell )
     255             :         {
     256           0 :             mpViewShell->Paint(rRect, this);
     257             :         }
     258             :     }
     259             :     else
     260             :     {
     261           0 :         DrawWallpaper( rRect, maShowBackground );
     262             : 
     263           0 :         if( SHOWWINDOWMODE_END == meShowWindowMode )
     264             :         {
     265           0 :             DrawEndScene();
     266             :         }
     267           0 :         else if( SHOWWINDOWMODE_PAUSE == meShowWindowMode )
     268             :         {
     269           0 :             DrawPauseScene( false );
     270             :         }
     271           0 :         else if( SHOWWINDOWMODE_BLANK == meShowWindowMode )
     272             :         {
     273           0 :             DrawBlankScene();
     274             :         }
     275             :     }
     276           0 : }
     277             : 
     278           0 : void ShowWindow::GetFocus()
     279             : {
     280             :     // base class
     281           0 :     Window::GetFocus();
     282           0 : }
     283             : 
     284           0 : void ShowWindow::LoseFocus()
     285             : {
     286           0 :     Window::LoseFocus();
     287             : 
     288           0 :     if( SHOWWINDOWMODE_PREVIEW == meShowWindowMode)
     289           0 :         TerminateShow();
     290           0 : }
     291             : 
     292           0 : void ShowWindow::Resize()
     293             : {
     294           0 :     ::sd::Window::Resize();
     295           0 : }
     296             : 
     297           0 : void ShowWindow::Move()
     298             : {
     299           0 :     ::sd::Window::Move();
     300           0 : }
     301             : 
     302           0 : bool ShowWindow::SetEndMode()
     303             : {
     304           0 :     if( ( SHOWWINDOWMODE_NORMAL == meShowWindowMode ) && mpViewShell && mpViewShell->GetView() )
     305             :     {
     306           0 :         DeleteWindowFromPaintView();
     307           0 :         meShowWindowMode = SHOWWINDOWMODE_END;
     308           0 :         maShowBackground = Wallpaper( Color( COL_BLACK ) );
     309             : 
     310             :         // hide navigator if it is visible
     311           0 :         if( mpViewShell->GetViewFrame()->GetChildWindow( SID_NAVIGATOR ) )
     312             :         {
     313           0 :             mpViewShell->GetViewFrame()->ShowChildWindow( SID_NAVIGATOR, false );
     314           0 :             mbShowNavigatorAfterSpecialMode = true;
     315             :         }
     316             : 
     317           0 :         Invalidate();
     318             :     }
     319             : 
     320           0 :     return( SHOWWINDOWMODE_END == meShowWindowMode );
     321             : }
     322             : 
     323           0 : bool ShowWindow::SetPauseMode( sal_Int32 nPageIndexToRestart, sal_Int32 nTimeout, Graphic* pLogo )
     324             : {
     325           0 :     rtl::Reference< SlideShow > xSlideShow;
     326             : 
     327           0 :     if( mpViewShell )
     328           0 :         xSlideShow = SlideShow::GetSlideShow( mpViewShell->GetViewShellBase() );
     329             : 
     330           0 :     if( xSlideShow.is() && !nTimeout )
     331             :     {
     332           0 :         xSlideShow->jumpToPageIndex( nPageIndexToRestart );
     333             :     }
     334           0 :     else if( ( SHOWWINDOWMODE_NORMAL == meShowWindowMode ) && mpViewShell && mpViewShell->GetView() )
     335             :     {
     336           0 :         DeleteWindowFromPaintView();
     337           0 :         mnPauseTimeout = nTimeout;
     338           0 :         mnRestartPageIndex = nPageIndexToRestart;
     339           0 :         meShowWindowMode = SHOWWINDOWMODE_PAUSE;
     340           0 :         maShowBackground = Wallpaper( Color( COL_BLACK ) );
     341             : 
     342             :         // hide navigator if it is visible
     343           0 :         if( mpViewShell->GetViewFrame()->GetChildWindow( SID_NAVIGATOR ) )
     344             :         {
     345           0 :             mpViewShell->GetViewFrame()->ShowChildWindow( SID_NAVIGATOR, false );
     346           0 :             mbShowNavigatorAfterSpecialMode = true;
     347             :         }
     348             : 
     349           0 :         if( pLogo )
     350           0 :             maLogo = *pLogo;
     351             : 
     352           0 :         Invalidate();
     353             : 
     354           0 :         if( SLIDE_NO_TIMEOUT != mnPauseTimeout )
     355           0 :             maPauseTimer.Start();
     356             :     }
     357             : 
     358           0 :     return( SHOWWINDOWMODE_PAUSE == meShowWindowMode );
     359             : }
     360             : 
     361           0 : bool ShowWindow::SetBlankMode( sal_Int32 nPageIndexToRestart, const Color& rBlankColor )
     362             : {
     363           0 :     if( ( SHOWWINDOWMODE_NORMAL == meShowWindowMode ) && mpViewShell && mpViewShell->GetView() )
     364             :     {
     365           0 :         DeleteWindowFromPaintView();
     366           0 :         mnRestartPageIndex = nPageIndexToRestart;
     367           0 :         meShowWindowMode = SHOWWINDOWMODE_BLANK;
     368           0 :         maShowBackground = Wallpaper( rBlankColor );
     369             : 
     370             :         // hide navigator if it is visible
     371           0 :         if( mpViewShell->GetViewFrame()->GetChildWindow( SID_NAVIGATOR ) )
     372             :         {
     373           0 :             mpViewShell->GetViewFrame()->ShowChildWindow( SID_NAVIGATOR, false );
     374           0 :             mbShowNavigatorAfterSpecialMode = true;
     375             :         }
     376             : 
     377           0 :         Invalidate();
     378             :     }
     379             : 
     380           0 :     return( SHOWWINDOWMODE_BLANK == meShowWindowMode );
     381             : }
     382             : 
     383           0 : void ShowWindow::SetPreviewMode()
     384             : {
     385           0 :     meShowWindowMode = SHOWWINDOWMODE_PREVIEW;
     386           0 : }
     387             : 
     388           0 : void ShowWindow::TerminateShow()
     389             : {
     390           0 :     maLogo.Clear();
     391           0 :     maPauseTimer.Stop();
     392           0 :     maMouseTimer.Stop();
     393           0 :     Erase();
     394           0 :     maShowBackground = Wallpaper( Color( COL_BLACK ) );
     395           0 :     meShowWindowMode = SHOWWINDOWMODE_NORMAL;
     396           0 :     mnPauseTimeout = SLIDE_NO_TIMEOUT;
     397             : 
     398           0 :     if( mpViewShell )
     399             :     {
     400             :         // show navigator?
     401           0 :         if( mbShowNavigatorAfterSpecialMode )
     402             :         {
     403           0 :             mpViewShell->GetViewFrame()->ShowChildWindow( SID_NAVIGATOR, true );
     404           0 :             mbShowNavigatorAfterSpecialMode = false;
     405             :         }
     406             :     }
     407             : 
     408           0 :     if( mxController.is() )
     409           0 :         mxController->endPresentation();
     410             : 
     411           0 :     mnRestartPageIndex = PAGE_NO_END;
     412           0 : }
     413             : 
     414           0 : void ShowWindow::RestartShow()
     415             : {
     416           0 :     RestartShow( mnRestartPageIndex );
     417           0 : }
     418             : 
     419           0 : void ShowWindow::RestartShow( sal_Int32 nPageIndexToRestart )
     420             : 
     421             : {
     422           0 :     ShowWindowMode eOldShowWindowMode = meShowWindowMode;
     423             : 
     424           0 :     maLogo.Clear();
     425           0 :     maPauseTimer.Stop();
     426           0 :     Erase();
     427           0 :     maShowBackground = Wallpaper( Color( COL_BLACK ) );
     428           0 :     meShowWindowMode = SHOWWINDOWMODE_NORMAL;
     429           0 :     mnPauseTimeout = SLIDE_NO_TIMEOUT;
     430             : 
     431           0 :     if( mpViewShell )
     432             :     {
     433           0 :         rtl::Reference< SlideShow > xSlideShow( SlideShow::GetSlideShow( mpViewShell->GetViewShellBase() ) );
     434             : 
     435           0 :          if( xSlideShow.is() )
     436             :         {
     437           0 :             AddWindowToPaintView();
     438             : 
     439           0 :             if( SHOWWINDOWMODE_BLANK == eOldShowWindowMode )
     440             :             {
     441           0 :                 xSlideShow->pause(false);
     442           0 :                 Invalidate();
     443             :             }
     444             :             else
     445             :             {
     446           0 :                 xSlideShow->jumpToPageIndex( nPageIndexToRestart );
     447             :             }
     448           0 :         }
     449             :     }
     450             : 
     451           0 :     mnRestartPageIndex = PAGE_NO_END;
     452             : 
     453             :     // show navigator?
     454           0 :     if( mbShowNavigatorAfterSpecialMode )
     455             :     {
     456           0 :         if (mpViewShell)
     457           0 :             mpViewShell->GetViewFrame()->ShowChildWindow( SID_NAVIGATOR, true );
     458           0 :         mbShowNavigatorAfterSpecialMode = false;
     459             :     }
     460           0 : }
     461             : 
     462           0 : void ShowWindow::DrawPauseScene( bool bTimeoutOnly )
     463             : {
     464           0 :     const MapMode&  rMap = GetMapMode();
     465           0 :     const Point     aOutOrg( PixelToLogic( Point() ) );
     466           0 :     const Size      aOutSize( GetOutputSize() );
     467           0 :     const Size      aTextSize( LogicToLogic( Size( 0, 14 ), MAP_POINT, rMap ) );
     468           0 :     const Size      aOffset( LogicToLogic( Size( 1000, 1000 ), MAP_100TH_MM, rMap ) );
     469           0 :     OUString        aText( SdResId( STR_PRES_PAUSE ) );
     470           0 :     bool            bDrawn = false;
     471             : 
     472           0 :     vcl::Font       aFont( GetSettings().GetStyleSettings().GetMenuFont() );
     473           0 :     const vcl::Font aOldFont( GetFont() );
     474             : 
     475           0 :     aFont.SetSize( aTextSize );
     476           0 :     aFont.SetColor( COL_WHITE );
     477           0 :     aFont.SetCharSet( aOldFont.GetCharSet() );
     478           0 :     aFont.SetLanguage( aOldFont.GetLanguage() );
     479             : 
     480           0 :     if( !bTimeoutOnly && ( maLogo.GetType() != GRAPHIC_NONE ) )
     481             :     {
     482           0 :         Size aGrfSize;
     483             : 
     484           0 :         if( maLogo.GetPrefMapMode() == MAP_PIXEL )
     485           0 :             aGrfSize = PixelToLogic( maLogo.GetPrefSize() );
     486             :         else
     487           0 :             aGrfSize = LogicToLogic( maLogo.GetPrefSize(), maLogo.GetPrefMapMode(), rMap );
     488             : 
     489           0 :         const Point aGrfPos( std::max( aOutOrg.X() + aOutSize.Width() - aGrfSize.Width() - aOffset.Width(), aOutOrg.X() ),
     490           0 :                              std::max( aOutOrg.Y() + aOutSize.Height() - aGrfSize.Height() - aOffset.Height(), aOutOrg.Y() ) );
     491             : 
     492           0 :         if( maLogo.IsAnimated() )
     493           0 :             maLogo.StartAnimation( this, aGrfPos, aGrfSize, (sal_IntPtr) this );
     494             :         else
     495           0 :             maLogo.Draw( this, aGrfPos, aGrfSize );
     496             :     }
     497             : 
     498           0 :     if( SLIDE_NO_TIMEOUT != mnPauseTimeout )
     499             :     {
     500           0 :         MapMode         aVMap( rMap );
     501           0 :         VirtualDevice   aVDev( *this );
     502             : 
     503           0 :         aVMap.SetOrigin( Point() );
     504           0 :         aVDev.SetMapMode( aVMap );
     505           0 :         aVDev.SetBackground( Wallpaper( Color( COL_BLACK ) ) );
     506             : 
     507             :         // set font first, to determine real output height
     508           0 :         aVDev.SetFont( aFont );
     509             : 
     510           0 :         const Size aVDevSize( aOutSize.Width(), aVDev.GetTextHeight() );
     511             : 
     512           0 :         if( aVDev.SetOutputSize( aVDevSize ) )
     513             :         {
     514             :             // Note: if performance gets an issue here, we can use NumberFormatter directly
     515           0 :             SvtSysLocale                aSysLocale;
     516           0 :             const LocaleDataWrapper&    aLocaleData = aSysLocale.GetLocaleData();
     517             : 
     518           0 :             aText += " ( ";
     519           0 :             aText += aLocaleData.getDuration( ::tools::Time( 0, 0, mnPauseTimeout ) );
     520           0 :             aText += " )";
     521           0 :             aVDev.DrawText( Point( aOffset.Width(), 0 ), aText );
     522           0 :             DrawOutDev( Point( aOutOrg.X(), aOffset.Height() ), aVDevSize, Point(), aVDevSize, aVDev );
     523           0 :             bDrawn = true;
     524           0 :         }
     525             :     }
     526             : 
     527           0 :     if( !bDrawn )
     528             :     {
     529           0 :         SetFont( aFont );
     530           0 :         DrawText( Point( aOutOrg.X() + aOffset.Width(), aOutOrg.Y() + aOffset.Height() ), aText );
     531           0 :         SetFont( aOldFont );
     532           0 :     }
     533           0 : }
     534             : 
     535           0 : void ShowWindow::DrawEndScene()
     536             : {
     537           0 :     const vcl::Font aOldFont( GetFont() );
     538           0 :     vcl::Font       aFont( GetSettings().GetStyleSettings().GetMenuFont() );
     539             : 
     540           0 :     const Point     aOutOrg( PixelToLogic( Point() ) );
     541           0 :     const Size      aTextSize( LogicToLogic( Size( 0, 14 ), MAP_POINT, GetMapMode() ) );
     542           0 :     const OUString  aText( SdResId( STR_PRES_SOFTEND ) );
     543             : 
     544           0 :     aFont.SetSize( aTextSize );
     545           0 :     aFont.SetColor( COL_WHITE );
     546           0 :     aFont.SetCharSet( aOldFont.GetCharSet() );
     547           0 :     aFont.SetLanguage( aOldFont.GetLanguage() );
     548           0 :     SetFont( aFont );
     549           0 :     DrawText( Point( aOutOrg.X() + aTextSize.Height(), aOutOrg.Y() + aTextSize.Height() ), aText );
     550           0 :     SetFont( aOldFont );
     551           0 : }
     552             : 
     553           0 : void ShowWindow::DrawBlankScene()
     554             : {
     555             :     // just blank through background color => nothing to be done here
     556           0 : }
     557             : 
     558           0 : IMPL_LINK( ShowWindow, PauseTimeoutHdl, Timer*, pTimer )
     559             : {
     560           0 :     if( !( --mnPauseTimeout ) )
     561           0 :         RestartShow();
     562             :     else
     563             :     {
     564           0 :         DrawPauseScene( true );
     565           0 :         pTimer->Start();
     566             :     }
     567             : 
     568           0 :     return 0L;
     569             : }
     570             : 
     571           0 : IMPL_LINK_NOARG(ShowWindow, MouseTimeoutHdl)
     572             : {
     573           0 :     if( mbMouseCursorHidden )
     574             :     {
     575             :         // not enough mouse movements since first recording so
     576             :         // cancel show mouse pointer for now
     577           0 :         mnFirstMouseMove = 0;
     578             :     }
     579             :     else
     580             :     {
     581             :         // mouse has been idle to long, hide pointer
     582           0 :         ShowPointer( false );
     583           0 :         mbMouseCursorHidden = true;
     584             :     }
     585           0 :     return 0L;
     586             : }
     587             : 
     588           0 : IMPL_LINK( ShowWindow, EventHdl, VclWindowEvent*, pEvent )
     589             : {
     590           0 :     if( mbMouseAutoHide )
     591             :     {
     592           0 :         if (pEvent->GetId() == VCLEVENT_WINDOW_SHOW)
     593             :         {
     594           0 :             maMouseTimer.SetTimeout( HIDE_MOUSE_TIMEOUT );
     595           0 :             maMouseTimer.Start();
     596             :         }
     597             :     }
     598           0 :     return 0L;
     599             : }
     600             : 
     601           0 : void ShowWindow::SetPresentationArea( const Rectangle& rPresArea )
     602             : {
     603           0 :     maPresArea = rPresArea;
     604           0 : }
     605             : 
     606           0 : void ShowWindow::DeleteWindowFromPaintView()
     607             : {
     608           0 :     if( mpViewShell->GetView() )
     609           0 :         mpViewShell->GetView()->DeleteWindowFromPaintView( this );
     610             : 
     611           0 :     sal_uInt16 nChild = GetChildCount();
     612           0 :     while( nChild-- )
     613           0 :         GetChild( nChild )->Show( false );
     614           0 : }
     615             : 
     616           0 : void ShowWindow::AddWindowToPaintView()
     617             : {
     618           0 :     if( mpViewShell->GetView() )
     619           0 :         mpViewShell->GetView()->AddWindowToPaintView( this );
     620             : 
     621           0 :     sal_uInt16 nChild = GetChildCount();
     622           0 :     while( nChild-- )
     623           0 :         GetChild( nChild )->Show( true );
     624           0 : }
     625             : 
     626             : // Overload the sd::Window's CreateAccessible to create a different accessible object
     627             : ::com::sun::star::uno::Reference<
     628             :     ::com::sun::star::accessibility::XAccessible>
     629           0 :     ShowWindow::CreateAccessible (void)
     630             : {
     631           0 :     ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > xAcc = GetAccessible(false);
     632           0 :     if (xAcc.get())
     633             :     {
     634           0 :         return xAcc;
     635             :     }
     636           0 :     if (mpViewShell != NULL)
     637             :     {
     638           0 :         xAcc = mpViewShell->CreateAccessibleDocumentView (this);
     639           0 :         SetAccessible(xAcc);
     640           0 :         return xAcc;
     641             :     }
     642             :     else
     643             :     {
     644             :         OSL_TRACE ("::sd::Window::CreateAccessible: no view shell");
     645           0 :         return vcl::Window::CreateAccessible ();
     646           0 :     }
     647             : }
     648         114 : } // end of namespace sd
     649             : 
     650             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10