LCOV - code coverage report
Current view: top level - sd/source/ui/animations - DialogListBox.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 0 161 0.0 %
Date: 2012-08-25 Functions: 0 15 0.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 0 176 0.0 %

           Branch data     Line data    Source code
       1                 :            : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2                 :            : /*************************************************************************
       3                 :            :  *
       4                 :            :  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       5                 :            :  *
       6                 :            :  * Copyright 2000, 2010 Oracle and/or its affiliates.
       7                 :            :  *
       8                 :            :  * OpenOffice.org - a multi-platform office productivity suite
       9                 :            :  *
      10                 :            :  * This file is part of OpenOffice.org.
      11                 :            :  *
      12                 :            :  * OpenOffice.org is free software: you can redistribute it and/or modify
      13                 :            :  * it under the terms of the GNU Lesser General Public License version 3
      14                 :            :  * only, as published by the Free Software Foundation.
      15                 :            :  *
      16                 :            :  * OpenOffice.org is distributed in the hope that it will be useful,
      17                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      18                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      19                 :            :  * GNU Lesser General Public License version 3 for more details
      20                 :            :  * (a copy is included in the LICENSE file that accompanied this code).
      21                 :            :  *
      22                 :            :  * You should have received a copy of the GNU Lesser General Public License
      23                 :            :  * version 3 along with OpenOffice.org.  If not, see
      24                 :            :  * <http://www.openoffice.org/license.html>
      25                 :            :  * for a copy of the LGPLv3 License.
      26                 :            :  *
      27                 :            :  ************************************************************************/
      28                 :            : 
      29                 :            : #include "DialogListBox.hxx"
      30                 :            : 
      31                 :            : namespace sd
      32                 :            : {
      33                 :            : 
      34                 :          0 : DialogListBox::DialogListBox( Window* pParent, WinBits nWinStyle ) :
      35                 :            :     Control( pParent, nWinStyle ),
      36                 :          0 :     mpChild( 0 )
      37                 :            : {
      38 [ #  # ][ #  # ]:          0 :     mpVScrollBar    = new ScrollBar( this, WB_VSCROLL | WB_DRAG );
      39 [ #  # ][ #  # ]:          0 :     mpHScrollBar    = new ScrollBar( this, WB_HSCROLL | WB_DRAG );
      40 [ #  # ][ #  # ]:          0 :     mpScrollBarBox  = new ScrollBarBox( this );
      41                 :            : 
      42         [ #  # ]:          0 :     Link aLink( LINK( this, DialogListBox, ScrollBarHdl ) );
      43                 :          0 :     mpVScrollBar->SetScrollHdl( aLink );
      44                 :          0 :     mpHScrollBar->SetScrollHdl( aLink );
      45                 :            : 
      46                 :          0 :     mbVScroll       = false;
      47                 :          0 :     mbHScroll       = false;
      48                 :          0 :     mbAutoHScroll   = ( nWinStyle & WB_AUTOHSCROLL ) ? true : false;
      49                 :          0 : }
      50                 :            : 
      51                 :            : // -----------------------------------------------------------------------
      52                 :            : 
      53                 :          0 : DialogListBox::~DialogListBox()
      54                 :            : {
      55 [ #  # ][ #  # ]:          0 :     delete mpHScrollBar;
      56 [ #  # ][ #  # ]:          0 :     delete mpVScrollBar;
      57 [ #  # ][ #  # ]:          0 :     delete mpScrollBarBox;
      58 [ #  # ][ #  # ]:          0 :     delete mpChild;
      59         [ #  # ]:          0 : }
      60                 :            : 
      61                 :            : // -----------------------------------------------------------------------
      62                 :            : 
      63                 :          0 : void DialogListBox::SetChildWindow( Window* pChild, const Size& rMinSize )
      64                 :            : {
      65         [ #  # ]:          0 :     if( mpChild )
      66         [ #  # ]:          0 :         delete mpChild;
      67                 :            : 
      68                 :          0 :     mpChild = pChild;
      69                 :          0 :     maMinSize = rMinSize;
      70                 :          0 :     ImplResizeControls();
      71                 :          0 :     ImplCheckScrollBars();
      72                 :          0 : }
      73                 :            : 
      74                 :            : // -----------------------------------------------------------------------
      75                 :            : 
      76                 :          0 : void DialogListBox::GetFocus()
      77                 :            : {
      78         [ #  # ]:          0 :     if( mpChild )
      79                 :          0 :         mpChild->GrabFocus();
      80                 :          0 : }
      81                 :            : 
      82                 :            : // -----------------------------------------------------------------------
      83                 :            : 
      84                 :          0 : ::Window* DialogListBox::GetPreferredKeyInputWindow()
      85                 :            : {
      86         [ #  # ]:          0 :     if( mpChild )
      87                 :          0 :         return mpChild;
      88                 :            :     else
      89                 :          0 :         return this;
      90                 :            : }
      91                 :            : 
      92                 :            : // -----------------------------------------------------------------------
      93                 :            : 
      94                 :          0 : void DialogListBox::Resize()
      95                 :            : {
      96                 :          0 :     Control::Resize();
      97                 :          0 :     ImplResizeControls();
      98                 :          0 :     ImplCheckScrollBars();
      99                 :          0 : }
     100                 :            : 
     101                 :            : // -----------------------------------------------------------------------
     102                 :            : 
     103                 :          0 : IMPL_LINK_NOARG(DialogListBox, ScrollBarHdl)
     104                 :            : {
     105                 :          0 :     ImplResizeChild();
     106                 :          0 :     return 1;
     107                 :            : }
     108                 :            : 
     109                 :            : // -----------------------------------------------------------------------
     110                 :            : 
     111                 :          0 : void DialogListBox::ImplCheckScrollBars()
     112                 :            : {
     113                 :          0 :     bool bArrange = false;
     114                 :            : 
     115                 :          0 :     Size aOutSz = GetOutputSizePixel();
     116                 :            : 
     117                 :            :     // vert. ScrollBar
     118         [ #  # ]:          0 :     if( aOutSz.Height() < maMinSize.Height() )
     119                 :            :     {
     120         [ #  # ]:          0 :         if( !mbVScroll )
     121                 :          0 :             bArrange = true;
     122                 :          0 :         mbVScroll = true;
     123                 :            :     }
     124                 :            :     else
     125                 :            :     {
     126         [ #  # ]:          0 :         if( mbVScroll )
     127                 :          0 :             bArrange = true;
     128                 :          0 :         mbVScroll = false;
     129                 :            :     }
     130                 :            : 
     131                 :            :     // horz. ScrollBar
     132         [ #  # ]:          0 :     if( mbAutoHScroll )
     133                 :            :     {
     134                 :          0 :         long nWidth = aOutSz.Width();
     135         [ #  # ]:          0 :         if ( mbVScroll )
     136         [ #  # ]:          0 :             nWidth -= mpVScrollBar->GetSizePixel().Width();
     137         [ #  # ]:          0 :         if( nWidth < maMinSize.Width() )
     138                 :            :         {
     139         [ #  # ]:          0 :             if( !mbHScroll )
     140                 :          0 :                 bArrange = true;
     141                 :          0 :             mbHScroll = true;
     142                 :            : 
     143         [ #  # ]:          0 :             if ( !mbVScroll )
     144                 :            :             {
     145         [ #  # ]:          0 :                 int nHeight = aOutSz.Height() - mpHScrollBar->GetSizePixel().Height();
     146         [ #  # ]:          0 :                 if( nHeight < maMinSize.Height() )
     147                 :            :                 {
     148         [ #  # ]:          0 :                     if( !mbVScroll )
     149                 :          0 :                         bArrange = true;
     150                 :          0 :                     mbVScroll = true;
     151                 :            :                 }
     152                 :            :             }
     153                 :            :         }
     154                 :            :         else
     155                 :            :         {
     156         [ #  # ]:          0 :             if( mbHScroll )
     157                 :          0 :                 bArrange = true;
     158                 :          0 :             mbHScroll = false;
     159                 :            :         }
     160                 :            :     }
     161                 :            : 
     162         [ #  # ]:          0 :     if( bArrange )
     163         [ #  # ]:          0 :         ImplResizeControls();
     164                 :            : 
     165         [ #  # ]:          0 :     ImplInitScrollBars();
     166                 :          0 : }
     167                 :            : 
     168                 :            : // -----------------------------------------------------------------------
     169                 :            : 
     170                 :          0 : void DialogListBox::ImplInitScrollBars()
     171                 :            : {
     172         [ #  # ]:          0 :     if( mpChild )
     173                 :            :     {
     174                 :          0 :         Size aOutSize( GetOutputSizePixel() );
     175 [ #  # ][ #  # ]:          0 :         if( mbHScroll ) aOutSize.Height() -= mpHScrollBar->GetSizePixel().Height();
     176 [ #  # ][ #  # ]:          0 :         if( mbVScroll ) aOutSize.Width() -= mpVScrollBar->GetSizePixel().Width();
     177                 :            : 
     178         [ #  # ]:          0 :         if ( mbVScroll )
     179                 :            :         {
     180         [ #  # ]:          0 :             mpVScrollBar->SetRangeMax( maMinSize.Height() );
     181         [ #  # ]:          0 :             mpVScrollBar->SetVisibleSize( aOutSize.Height() );
     182                 :          0 :             mpVScrollBar->SetPageSize( 16 );
     183                 :            :         }
     184                 :            : 
     185         [ #  # ]:          0 :         if ( mbHScroll )
     186                 :            :         {
     187         [ #  # ]:          0 :             mpHScrollBar->SetRangeMax( maMinSize.Width() );
     188         [ #  # ]:          0 :             mpHScrollBar->SetVisibleSize( aOutSize.Width() );
     189                 :          0 :             mpHScrollBar->SetPageSize( 16 );
     190                 :            :         }
     191                 :            :     }
     192                 :          0 : }
     193                 :            : 
     194                 :            : // -----------------------------------------------------------------------
     195                 :            : 
     196                 :          0 : void DialogListBox::ImplResizeControls()
     197                 :            : {
     198                 :          0 :     Size aOutSz( GetOutputSizePixel() );
     199                 :          0 :     long nSBWidth = GetSettings().GetStyleSettings().GetScrollBarSize();
     200         [ #  # ]:          0 :     nSBWidth = CalcZoom( nSBWidth );
     201                 :            : 
     202                 :          0 :     maInnerSize = aOutSz;
     203         [ #  # ]:          0 :     if ( mbVScroll )
     204                 :          0 :         maInnerSize.Width() -= nSBWidth;
     205         [ #  # ]:          0 :     if ( mbHScroll )
     206                 :          0 :         maInnerSize.Height() -= nSBWidth;
     207                 :            : 
     208                 :            :     // ScrollBarBox
     209 [ #  # ][ #  # ]:          0 :     if( mbVScroll && mbHScroll )
     210                 :            :     {
     211                 :          0 :         Point aBoxPos( maInnerSize.Width(), maInnerSize.Height() );
     212         [ #  # ]:          0 :         mpScrollBarBox->SetPosSizePixel( aBoxPos, Size( nSBWidth, nSBWidth ) );
     213         [ #  # ]:          0 :         mpScrollBarBox->Show();
     214                 :            :     }
     215                 :            :     else
     216                 :            :     {
     217         [ #  # ]:          0 :         mpScrollBarBox->Hide();
     218                 :            :     }
     219                 :            : 
     220                 :            :     // vert. ScrollBar
     221         [ #  # ]:          0 :     if( mbVScroll )
     222                 :            :     {
     223                 :            :         // Scrollbar on left or right side?
     224                 :          0 :         Point aVPos( aOutSz.Width() - nSBWidth, 0 );
     225         [ #  # ]:          0 :         mpVScrollBar->SetPosSizePixel( aVPos, Size( nSBWidth, maInnerSize.Height() ) );
     226         [ #  # ]:          0 :         mpVScrollBar->Show();
     227                 :            :     }
     228                 :            :     else
     229                 :            :     {
     230         [ #  # ]:          0 :         mpVScrollBar->Hide();
     231                 :            :     }
     232                 :            : 
     233                 :            :     // horz. ScrollBar
     234         [ #  # ]:          0 :     if( mbHScroll )
     235                 :            :     {
     236                 :          0 :         Point aHPos( 0, aOutSz.Height() - nSBWidth );
     237         [ #  # ]:          0 :         mpHScrollBar->SetPosSizePixel( aHPos, Size( maInnerSize.Width(), nSBWidth ) );
     238         [ #  # ]:          0 :         mpHScrollBar->Show();
     239                 :            :     }
     240                 :            :     else
     241                 :            :     {
     242         [ #  # ]:          0 :         mpHScrollBar->Hide();
     243                 :            :     }
     244                 :            : 
     245         [ #  # ]:          0 :     ImplResizeChild();
     246                 :          0 : }
     247                 :            : 
     248                 :          0 : void DialogListBox::ImplResizeChild()
     249                 :            : {
     250                 :          0 :     Point aWinPos;
     251                 :          0 :     Size aSize( maInnerSize );
     252                 :            : 
     253                 :            :     int nOffset;
     254         [ #  # ]:          0 :     if( mbHScroll )
     255                 :            :     {
     256                 :          0 :         nOffset = mpHScrollBar->GetThumbPos();
     257                 :          0 :         aWinPos.X() = -nOffset;
     258                 :          0 :         aSize.Width() += nOffset;
     259                 :            :     }
     260                 :            : 
     261         [ #  # ]:          0 :     if( mbVScroll )
     262                 :            :     {
     263                 :          0 :         nOffset = mpVScrollBar->GetThumbPos();
     264                 :          0 :         aWinPos.Y() = -nOffset;
     265                 :          0 :         aSize.Height() += nOffset;
     266                 :            :     }
     267                 :            : 
     268         [ #  # ]:          0 :     mpChild->SetPosSizePixel( aWinPos, aSize );
     269                 :          0 : }
     270                 :            : 
     271                 :            : // -----------------------------------------------------------------------
     272                 :            : 
     273                 :          0 : void DialogListBox::StateChanged( StateChangedType nType )
     274                 :            : {
     275         [ #  # ]:          0 :     if ( nType == STATE_CHANGE_INITSHOW )
     276                 :            :     {
     277                 :          0 :         ImplCheckScrollBars();
     278                 :            :     }
     279 [ #  # ][ #  # ]:          0 :     else if ( ( nType == STATE_CHANGE_UPDATEMODE ) || ( nType == STATE_CHANGE_DATA ) )
     280                 :            :     {
     281                 :          0 :         sal_Bool bUpdate = IsUpdateMode();
     282                 :          0 :         mpChild->SetUpdateMode( bUpdate );
     283 [ #  # ][ #  # ]:          0 :         if ( bUpdate && IsReallyVisible() )
                 [ #  # ]
     284                 :          0 :             ImplCheckScrollBars();
     285                 :            :     }
     286         [ #  # ]:          0 :     else if( nType == STATE_CHANGE_ENABLE )
     287                 :            :     {
     288                 :          0 :         mpHScrollBar->Enable( IsEnabled() );
     289                 :          0 :         mpVScrollBar->Enable( IsEnabled() );
     290                 :          0 :         mpScrollBarBox->Enable( IsEnabled() );
     291                 :          0 :         Invalidate();
     292                 :            :     }
     293         [ #  # ]:          0 :     else if ( nType == STATE_CHANGE_ZOOM )
     294                 :            :     {
     295                 :          0 :         mpChild->SetZoom( GetZoom() );
     296                 :          0 :         Resize();
     297                 :            :     }
     298         [ #  # ]:          0 :     else if ( nType == STATE_CHANGE_CONTROLFONT )
     299                 :            :     {
     300         [ #  # ]:          0 :         mpChild->SetControlFont( GetControlFont() );
     301                 :            :     }
     302         [ #  # ]:          0 :     else if ( nType == STATE_CHANGE_CONTROLFOREGROUND )
     303                 :            :     {
     304         [ #  # ]:          0 :         mpChild->SetControlForeground( GetControlForeground() );
     305                 :            :     }
     306         [ #  # ]:          0 :     else if ( nType == STATE_CHANGE_CONTROLBACKGROUND )
     307                 :            :     {
     308         [ #  # ]:          0 :         mpChild->SetControlBackground( GetControlBackground() );
     309                 :            :     }
     310         [ #  # ]:          0 :     else if( nType == STATE_CHANGE_VISIBLE )
     311                 :            :     {
     312                 :          0 :         mpChild->Show( IsVisible() );
     313                 :            :     }
     314                 :            : 
     315                 :          0 :     Control::StateChanged( nType );
     316                 :          0 : }
     317                 :            : 
     318                 :            : // -----------------------------------------------------------------------
     319                 :            : 
     320                 :          0 : long DialogListBox::Notify( NotifyEvent& rNEvt )
     321                 :            : {
     322                 :          0 :     long nDone = 0;
     323         [ #  # ]:          0 :     if ( rNEvt.GetType() == EVENT_COMMAND )
     324                 :            :     {
     325                 :          0 :         const CommandEvent& rCEvt = *rNEvt.GetCommandEvent();
     326         [ #  # ]:          0 :         if ( rCEvt.GetCommand() == COMMAND_WHEEL )
     327                 :            :         {
     328                 :          0 :             const CommandWheelData* pData = rCEvt.GetWheelData();
     329 [ #  # ][ #  # ]:          0 :             if( !pData->GetModifier() && ( pData->GetMode() == COMMAND_WHEEL_SCROLL ) )
                 [ #  # ]
     330                 :            :             {
     331                 :          0 :                 nDone = HandleScrollCommand( rCEvt, mpHScrollBar, mpVScrollBar );
     332                 :            :             }
     333                 :            :         }
     334                 :            :     }
     335                 :            : 
     336         [ #  # ]:          0 :     return nDone ? nDone : Window::Notify( rNEvt );
     337                 :            : }
     338                 :            : 
     339                 :            : } //  namespace sd
     340                 :            : 
     341                 :            : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10