LCOV - code coverage report
Current view: top level - sc/source/ui/formdlg - dwfunctr.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 1 434 0.2 %
Date: 2012-08-25 Functions: 2 38 5.3 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 1 637 0.2 %

           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                 :            : 
      30                 :            : #include <comphelper/string.hxx>
      31                 :            : #include <editeng/editview.hxx>
      32                 :            : #include <sfx2/bindings.hxx>
      33                 :            : #include <sfx2/dispatch.hxx>
      34                 :            : #include <sfx2/objsh.hxx>
      35                 :            : #include <sfx2/viewsh.hxx>
      36                 :            : 
      37                 :            : #include "sc.hrc"
      38                 :            : #include "global.hxx"       // ScAddress
      39                 :            : #include "scresid.hxx"
      40                 :            : #include "reffact.hxx"
      41                 :            : #include "document.hxx"
      42                 :            : #include "cell.hxx"
      43                 :            : #include "scmod.hxx"
      44                 :            : #include "inputhdl.hxx"
      45                 :            : #include "tabvwsh.hxx"
      46                 :            : #include "appoptio.hxx"
      47                 :            : #include "compiler.hxx"
      48                 :            : 
      49                 :            : #include "dwfunctr.hrc"
      50                 :            : #include "dwfunctr.hxx"
      51                 :            : 
      52                 :            : // -----------------------------------------------------------------------
      53                 :            : 
      54 [ #  # ][ +  - ]:        102 : SFX_IMPL_DOCKINGWINDOW_WITHID( ScFunctionChildWindow, FID_FUNCTION_BOX )
                 [ #  # ]
      55                 :            : 
      56                 :            : /*************************************************************************
      57                 :            : #*  Member:     ScFunctionChildWindow
      58                 :            : #*------------------------------------------------------------------------
      59                 :            : #*
      60                 :            : #*  Klasse:     ScFunctionChildWindow
      61                 :            : #*
      62                 :            : #*  Funktion:   Konstruktor der Klasse ScFunctionChildWindow
      63                 :            : #*              Ableitung vom SfxChildWindow als "Behaelter" fuer
      64                 :            : #*              Funktions- Fenster in Clac
      65                 :            : #*
      66                 :            : #*  Input:      ---
      67                 :            : #*
      68                 :            : #*  Output:     ---
      69                 :            : #*
      70                 :            : #************************************************************************/
      71                 :            : 
      72                 :          0 : ScFunctionChildWindow::ScFunctionChildWindow( Window* pParentP,
      73                 :            :                                     sal_uInt16 nId,
      74                 :            :                                     SfxBindings* pBindings,
      75                 :            :                                     SfxChildWinInfo* pInfo ) :
      76                 :          0 :     SfxChildWindow( pParentP, nId )
      77                 :            : {
      78                 :            :     ScFunctionDockWin* pWin = new ScFunctionDockWin( pBindings, this,
      79 [ #  # ][ #  # ]:          0 :                                         pParentP, ScResId( FID_FUNCTION_BOX ) );
                 [ #  # ]
      80                 :          0 :     pWindow = pWin;
      81                 :            : 
      82                 :          0 :     eChildAlignment = SFX_ALIGN_RIGHT;
      83                 :            : 
      84         [ #  # ]:          0 :     pWin->Initialize( pInfo );
      85                 :          0 : }
      86                 :            : 
      87                 :            : /*************************************************************************
      88                 :            : #*  Member:     ScFunctionDockWin
      89                 :            : #*------------------------------------------------------------------------
      90                 :            : #*
      91                 :            : #*  Klasse:     ScFunctionDockWin
      92                 :            : #*
      93                 :            : #*  Funktion:   Konstruktor der Klasse ScFunctionDockWin
      94                 :            : #*
      95                 :            : #*  Input:      Sfx- Verknuepfungen, Fenster, Resource
      96                 :            : #*
      97                 :            : #*  Output:     ---
      98                 :            : #*
      99                 :            : #************************************************************************/
     100                 :            : 
     101                 :          0 : ScFunctionDockWin::ScFunctionDockWin( SfxBindings* pBindingsP,
     102                 :            :                 SfxChildWindow *pCW, Window* pParent, const ResId& rResId ) :
     103                 :            : 
     104                 :            :     SfxDockingWindow( pBindingsP, pCW, pParent, rResId ),
     105                 :          0 :     aPrivatSplit    ( this, ResId( FT_SPLIT, *rResId.GetResMgr()  ),SC_SPLIT_VERT),
     106                 :          0 :     aCatBox         ( this, ResId( CB_CAT, *rResId.GetResMgr()  ) ),
     107                 :          0 :     aFuncList       ( this, ResId( LB_FUNC, *rResId.GetResMgr()  ) ),
     108                 :          0 :     aDDFuncList     ( this, ResId( DDLB_FUNC, *rResId.GetResMgr()  ) ),
     109                 :          0 :     aInsertButton   ( this, ResId( IMB_INSERT, *rResId.GetResMgr()  ) ),
     110                 :          0 :     aFiFuncDesc     ( this, ResId( FI_FUNCDESC, *rResId.GetResMgr()  ) ),
     111 [ #  # ][ #  #  :          0 :     aOldSize        (0,0)
          #  #  #  #  #  
          #  #  #  #  #  
           #  # ][ #  # ]
     112                 :            : {
     113         [ #  # ]:          0 :     FreeResource();
     114         [ #  # ]:          0 :     InitLRUList();
     115 [ #  # ][ #  # ]:          0 :     SetStyle(GetStyle()|WB_CLIPCHILDREN);
     116                 :            : 
     117         [ #  # ]:          0 :     aTimer.SetTimeout(200);
     118         [ #  # ]:          0 :     aTimer.SetTimeoutHdl(LINK( this, ScFunctionDockWin, TimerHdl));
     119                 :            : 
     120                 :          0 :     eSfxNewAlignment=GetAlignment();
     121                 :          0 :     eSfxOldAlignment=eSfxNewAlignment;
     122         [ #  # ]:          0 :     aFiFuncDesc.SetUpdateMode(sal_True);
     123                 :          0 :     pAllFuncList=&aFuncList;
     124         [ #  # ]:          0 :     aDDFuncList.Disable();
     125         [ #  # ]:          0 :     aDDFuncList.Hide();
     126                 :          0 :     nArgs=0;
     127                 :          0 :     nDockMode=0;
     128                 :          0 :     bSizeFlag=false;
     129         [ #  # ]:          0 :     aCatBox.SetDropDownLineCount(9);
     130         [ #  # ]:          0 :     Font aFont=aFiFuncDesc.GetFont();
     131         [ #  # ]:          0 :     aFont.SetColor(Color(COL_BLACK));
     132         [ #  # ]:          0 :     aFiFuncDesc.SetFont(aFont);
     133         [ #  # ]:          0 :     aFiFuncDesc.SetBackground( GetBackground() );       //! never transparent?
     134                 :            : 
     135         [ #  # ]:          0 :     Link aLink=LINK( this, ScFunctionDockWin, SelHdl);
     136                 :          0 :     aCatBox.SetSelectHdl(aLink);
     137                 :          0 :     aFuncList.SetSelectHdl(aLink);
     138                 :          0 :     aDDFuncList.SetSelectHdl(aLink);
     139                 :            : 
     140         [ #  # ]:          0 :     Link a2Link=LINK( this, ScFunctionDockWin, SetSelectionHdl);
     141                 :          0 :     aFuncList.SetDoubleClickHdl(a2Link);
     142                 :          0 :     aDDFuncList.SetSelectHdl(aLink);
     143                 :          0 :     aInsertButton.SetClickHdl(a2Link);
     144                 :            : 
     145         [ #  # ]:          0 :     Link a3Link=LINK( this, ScFunctionDockWin, SetSplitHdl);
     146                 :          0 :     aPrivatSplit.SetCtrModifiedHdl(a3Link);
     147         [ #  # ]:          0 :     StartListening( *pBindingsP, sal_True );
     148                 :            : 
     149         [ #  # ]:          0 :     Point aTopLeft=aCatBox.GetPosPixel();
     150                 :          0 :     rtl::OUString aString("ww");
     151 [ #  # ][ #  # ]:          0 :     Size aTxtSize( aFiFuncDesc.GetTextWidth(aString), aFiFuncDesc.GetTextHeight() );
         [ #  # ][ #  # ]
     152                 :          0 :     nMinWidth=aTxtSize.Width()+aTopLeft.X()
     153         [ #  # ]:          0 :             +2*aFuncList.GetPosPixel().X();
     154                 :          0 :     nMinHeight=19*aTxtSize.Height();
     155         [ #  # ]:          0 :     aCatBox.SelectEntryPos(0);
     156                 :            : 
     157         [ #  # ]:          0 :     Range aYRange(3*aTxtSize.Height()+aFuncList.GetPosPixel().Y(),
     158         [ #  # ]:          0 :                 GetOutputSizePixel().Height()-2*aTxtSize.Height());
     159         [ #  # ]:          0 :     aPrivatSplit.SetYRange(aYRange);
     160         [ #  # ]:          0 :     SelHdl(&aCatBox);
     161         [ #  # ]:          0 :     bInit=sal_True;
     162                 :          0 : }
     163                 :            : 
     164                 :            : /*************************************************************************
     165                 :            : #*  Member:     ScFunctionDockWin
     166                 :            : #*------------------------------------------------------------------------
     167                 :            : #*
     168                 :            : #*  Klasse:     ScFunctionDockWin
     169                 :            : #*
     170                 :            : #*  Funktion:   Destruktor der Klasse ScFunctionDockWin
     171                 :            : #*
     172                 :            : #*  Input:      ---
     173                 :            : #*
     174                 :            : #*  Output:     ---
     175                 :            : #*
     176                 :            : #************************************************************************/
     177                 :            : 
     178 [ #  # ][ #  # ]:          0 : ScFunctionDockWin::~ScFunctionDockWin()
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
     179                 :            : {
     180         [ #  # ]:          0 :     EndListening( GetBindings() );
     181         [ #  # ]:          0 : }
     182                 :            : 
     183                 :            : /*************************************************************************
     184                 :            : #*  Member:     UpdateFunctionList
     185                 :            : #*------------------------------------------------------------------------
     186                 :            : #*
     187                 :            : #*  Klasse:     ScFunctionDockWin
     188                 :            : #*
     189                 :            : #*  Funktion:   Aktualisiert die Liste der Funktionen ab-
     190                 :            : #*              haengig von der eingestellten Kategorie.
     191                 :            : #*
     192                 :            : #*  Input:      ---
     193                 :            : #*
     194                 :            : #*  Output:     ---
     195                 :            : #*
     196                 :            : #************************************************************************/
     197                 :            : 
     198                 :          0 : void ScFunctionDockWin::InitLRUList()
     199                 :            : {
     200                 :          0 :     ScFunctionMgr* pFuncMgr = ScGlobal::GetStarCalcFunctionMgr();
     201                 :          0 :     pFuncMgr->fillLastRecentlyUsedFunctions(aLRUList);
     202                 :            : 
     203                 :            : 
     204                 :          0 :     sal_uInt16  nSelPos   = aCatBox.GetSelectEntryPos();
     205                 :            : 
     206         [ #  # ]:          0 :     if(nSelPos == 0)
     207                 :          0 :         UpdateFunctionList();
     208                 :          0 : }
     209                 :            : 
     210                 :            : /*************************************************************************
     211                 :            : #*  Member:     UpdateFunctionList
     212                 :            : #*------------------------------------------------------------------------
     213                 :            : #*
     214                 :            : #*  Klasse:     ScFunctionDockWin
     215                 :            : #*
     216                 :            : #*  Funktion:   Aktualisiert die Liste der zuletzt verwendeten Funktionen.
     217                 :            : #*
     218                 :            : #*  Input:      ---
     219                 :            : #*
     220                 :            : #*  Output:     ---
     221                 :            : #*
     222                 :            : #************************************************************************/
     223                 :            : 
     224                 :          0 : void ScFunctionDockWin::UpdateLRUList()
     225                 :            : {
     226 [ #  # ][ #  # ]:          0 :     if (pFuncDesc && pFuncDesc->nFIndex!=0)
     227                 :            :     {
     228                 :          0 :         ScModule* pScMod = SC_MOD();
     229                 :          0 :         pScMod->InsertEntryToLRUList(pFuncDesc->nFIndex);
     230                 :            :     }
     231                 :          0 : }
     232                 :            : 
     233                 :            : 
     234                 :            : /*************************************************************************
     235                 :            : #*  Member:     SetSize
     236                 :            : #*------------------------------------------------------------------------
     237                 :            : #*
     238                 :            : #*  Klasse:     ScFunctionDockWin
     239                 :            : #*
     240                 :            : #*  Funktion:   Groesse fuer die einzelnen Controls einzustellen.
     241                 :            : #*
     242                 :            : #*  Input:      ---
     243                 :            : #*
     244                 :            : #*  Output:     ---
     245                 :            : #*
     246                 :            : #************************************************************************/
     247                 :            : 
     248                 :          0 : void ScFunctionDockWin::SetSize()
     249                 :            : {
     250                 :          0 :     sal_uInt16 nSelEntry=0;
     251                 :          0 :     SfxChildAlignment  aChildAlign=eSfxOldAlignment;//GetAlignment();
     252                 :            :     short nNewDockMode;
     253         [ #  # ]:          0 :     switch(aChildAlign)
     254                 :            :     {
     255                 :            :         case SFX_ALIGN_HIGHESTTOP:
     256                 :            :         case SFX_ALIGN_TOP:
     257                 :            :         case SFX_ALIGN_LOWESTTOP:
     258                 :            :         case SFX_ALIGN_LOWESTBOTTOM:
     259                 :            :         case SFX_ALIGN_BOTTOM:
     260                 :            :         case SFX_ALIGN_TOOLBOXTOP:
     261                 :            :         case SFX_ALIGN_TOOLBOXBOTTOM:
     262                 :            : 
     263                 :            : 
     264                 :          0 :                         nNewDockMode=1;
     265         [ #  # ]:          0 :                         if(nDockMode!=nNewDockMode)
     266                 :            :                         {
     267                 :          0 :                             nDockMode=nNewDockMode;
     268                 :          0 :                             nSelEntry=aFuncList.GetSelectEntryPos();
     269                 :          0 :                             aFuncList.Clear();
     270         [ #  # ]:          0 :                             aFiFuncDesc.SetPosPixel(aFuncList.GetPosPixel());
     271                 :          0 :                             aDDFuncList.Enable();
     272                 :          0 :                             aDDFuncList.Show();
     273                 :          0 :                             aPrivatSplit.Disable();
     274                 :          0 :                             aPrivatSplit.Hide();
     275                 :          0 :                             aFuncList.Disable();
     276                 :          0 :                             aFuncList.Hide();
     277                 :          0 :                             pAllFuncList=&aDDFuncList;
     278                 :          0 :                             SelHdl(&aCatBox);
     279                 :          0 :                             aDDFuncList.SelectEntryPos(nSelEntry);
     280                 :            :                         }
     281                 :          0 :                         break;
     282                 :            : 
     283                 :          0 :         default:        nNewDockMode=0;
     284         [ #  # ]:          0 :                         if(nDockMode!=nNewDockMode)
     285                 :            :                         {
     286                 :          0 :                             nDockMode=nNewDockMode;
     287                 :          0 :                             nSelEntry=aDDFuncList.GetSelectEntryPos();
     288                 :          0 :                             aDDFuncList.Clear();
     289                 :          0 :                             aDDFuncList.Disable();
     290                 :          0 :                             aDDFuncList.Hide();
     291                 :          0 :                             aPrivatSplit.Enable();
     292                 :          0 :                             aPrivatSplit.Show();
     293                 :          0 :                             aFuncList.Enable();
     294                 :          0 :                             aFuncList.Show();
     295                 :          0 :                             pAllFuncList=&aFuncList;
     296                 :          0 :                             SelHdl(&aCatBox);
     297                 :          0 :                             aFuncList.SelectEntryPos(nSelEntry);
     298                 :            :                         }
     299                 :          0 :                         break;
     300                 :            :     }
     301                 :            : 
     302         [ #  # ]:          0 :     if(nDockMode==0)
     303                 :            :     {
     304                 :          0 :         SetLeftRightSize();
     305                 :            :     }
     306                 :            :     else
     307                 :            :     {
     308                 :          0 :         SetTopBottonSize();
     309                 :            :     }
     310                 :          0 : }
     311                 :            : /*************************************************************************
     312                 :            : #*  Member:     SetLeftRightSize
     313                 :            : #*------------------------------------------------------------------------
     314                 :            : #*
     315                 :            : #*  Klasse:     ScFunctionDockWin
     316                 :            : #*
     317                 :            : #*  Funktion:   Groesse fuer die einzelnen Controls einstellen,
     318                 :            : #*              wenn Links oder Rechts angedockt wird.
     319                 :            : #*
     320                 :            : #*  Input:      ---
     321                 :            : #*
     322                 :            : #*  Output:     ---
     323                 :            : #*
     324                 :            : #************************************************************************/
     325                 :            : 
     326                 :          0 : void ScFunctionDockWin::SetLeftRightSize()
     327                 :            : {
     328         [ #  # ]:          0 :     if(bSizeFlag==false)
     329                 :            :     {
     330                 :          0 :         bSizeFlag=sal_True;
     331                 :            : 
     332         [ #  # ]:          0 :         Size aDiffSize=GetSizePixel();
     333         [ #  # ]:          0 :         Size aNewSize=GetOutputSizePixel();
     334                 :          0 :         aDiffSize.Width()-=aNewSize.Width();
     335                 :          0 :         aDiffSize.Height()-=aNewSize.Height();
     336                 :            : 
     337                 :          0 :         rtl::OUString aString("ww");
     338 [ #  # ][ #  # ]:          0 :         Size aTxtSize( aFuncList.GetTextWidth(aString), aFuncList.GetTextHeight() );
         [ #  # ][ #  # ]
     339                 :            : 
     340         [ #  # ]:          0 :         Range aYRange(3*aTxtSize.Height()+aFuncList.GetPosPixel().Y(),
     341         [ #  # ]:          0 :                     GetOutputSizePixel().Height()-2*aTxtSize.Height());
     342         [ #  # ]:          0 :         aPrivatSplit.SetYRange(aYRange);
     343                 :            : 
     344                 :            : 
     345         [ #  # ]:          0 :         if(aOldSize.Width()!=aNewSize.Width())
     346         [ #  # ]:          0 :             SetMyWidthLeRi(aNewSize);
     347                 :            : 
     348         [ #  # ]:          0 :         if(aOldSize.Height()!=aNewSize.Height())
     349         [ #  # ]:          0 :             SetMyHeightLeRi(aNewSize);
     350                 :            : 
     351                 :          0 :         aOldSize=aNewSize;
     352                 :          0 :         aNewSize.Width()+=aDiffSize.Width();
     353                 :          0 :         aNewSize.Height()+=aDiffSize.Height();
     354                 :          0 :         bSizeFlag=false;
     355                 :            :     }
     356                 :            : 
     357                 :          0 : }
     358                 :            : /*************************************************************************
     359                 :            : #*  Member:     SetTopBottonSize
     360                 :            : #*------------------------------------------------------------------------
     361                 :            : #*
     362                 :            : #*  Klasse:     ScFunctionDockWin
     363                 :            : #*
     364                 :            : #*  Funktion:   Groesse fuer die einzelnen Controls einzustellen.
     365                 :            : #*              wenn oben oder unten angedockt wird.
     366                 :            : #*
     367                 :            : #*  Input:      ---
     368                 :            : #*
     369                 :            : #*  Output:     ---
     370                 :            : #*
     371                 :            : #************************************************************************/
     372                 :            : 
     373                 :          0 : void ScFunctionDockWin::SetTopBottonSize()
     374                 :            : {
     375         [ #  # ]:          0 :     if(bSizeFlag==false)
     376                 :            :     {
     377                 :          0 :         bSizeFlag=sal_True;
     378         [ #  # ]:          0 :         Size aDiffSize=GetSizePixel();
     379         [ #  # ]:          0 :         Size aNewSize=GetOutputSizePixel();
     380                 :          0 :         aDiffSize.Width()-=aNewSize.Width();
     381                 :          0 :         aDiffSize.Height()-=aNewSize.Height();
     382                 :            : 
     383         [ #  # ]:          0 :         SetMyWidthToBo(aNewSize);
     384         [ #  # ]:          0 :         SetMyHeightToBo(aNewSize);
     385                 :            : 
     386                 :          0 :         aNewSize.Width()+=aDiffSize.Width();
     387                 :          0 :         aNewSize.Height()+=aDiffSize.Height();
     388                 :          0 :         bSizeFlag=false;
     389                 :            :     }
     390                 :          0 : }
     391                 :            : 
     392                 :            : /*************************************************************************
     393                 :            : #*  Member:     SetMyWidthLeRi
     394                 :            : #*------------------------------------------------------------------------
     395                 :            : #*
     396                 :            : #*  Klasse:     ScFunctionDockWin
     397                 :            : #*
     398                 :            : #*  Funktion:   Breite fuer die einzelnen Controls und
     399                 :            : #*              das Fenster einstellen,wenn Li oder Re
     400                 :            : #*
     401                 :            : #*  Input:      neue Fenstergroesse
     402                 :            : #*
     403                 :            : #*  Output:     ---
     404                 :            : #*
     405                 :            : #************************************************************************/
     406                 :            : 
     407                 :          0 : void ScFunctionDockWin::SetMyWidthLeRi(Size &aNewSize)
     408                 :            : {
     409         [ #  # ]:          0 :     if((sal_uLong)aNewSize.Width()<nMinWidth)   aNewSize.Width()=nMinWidth;
     410                 :            : 
     411         [ #  # ]:          0 :     Size aCDSize=aCatBox.GetSizePixel();
     412         [ #  # ]:          0 :     Size aFLSize=aFuncList.GetSizePixel();
     413         [ #  # ]:          0 :     Size aSplitterSize=aPrivatSplit.GetSizePixel();
     414         [ #  # ]:          0 :     Size aFDSize=aFiFuncDesc.GetSizePixel();
     415                 :            : 
     416         [ #  # ]:          0 :     Point aCDTopLeft=aCatBox.GetPosPixel();
     417         [ #  # ]:          0 :     Point aFLTopLeft=aFuncList.GetPosPixel();
     418                 :            : 
     419                 :          0 :     aCDSize.Width()=aNewSize.Width()-aCDTopLeft.X()-aFLTopLeft.X();
     420                 :          0 :     aFLSize.Width()=aNewSize.Width()-2*aFLTopLeft.X();
     421                 :          0 :     aFDSize.Width()=aFLSize.Width();
     422                 :          0 :     aSplitterSize.Width()=aFLSize.Width();
     423                 :            : 
     424         [ #  # ]:          0 :     aCatBox.SetSizePixel(aCDSize);
     425         [ #  # ]:          0 :     aFuncList.SetSizePixel(aFLSize);
     426         [ #  # ]:          0 :     aPrivatSplit.SetSizePixel(aSplitterSize);
     427         [ #  # ]:          0 :     aFiFuncDesc.SetSizePixel(aFDSize);
     428                 :          0 : }
     429                 :            : 
     430                 :            : /*************************************************************************
     431                 :            : #*  Member:     SetHeight
     432                 :            : #*------------------------------------------------------------------------
     433                 :            : #*
     434                 :            : #*  Klasse:     ScFunctionDockWin
     435                 :            : #*
     436                 :            : #*  Funktion:   Hoehe fuer die einzelnen Controls und
     437                 :            : #*              das Fenster einstellen bei Li oder Re
     438                 :            : #*
     439                 :            : #*  Input:      neue Fenstergroesse
     440                 :            : #*
     441                 :            : #*  Output:     ---
     442                 :            : #*
     443                 :            : #************************************************************************/
     444                 :            : 
     445                 :          0 : void ScFunctionDockWin::SetMyHeightLeRi(Size &aNewSize)
     446                 :            : {
     447         [ #  # ]:          0 :     if((sal_uLong)aNewSize.Height()<nMinHeight) aNewSize.Height()=nMinHeight;
     448                 :            : 
     449         [ #  # ]:          0 :     Size aFLSize=aFuncList.GetSizePixel();
     450         [ #  # ]:          0 :     Size aSplitterSize=aPrivatSplit.GetSizePixel();
     451         [ #  # ]:          0 :     Size aFDSize=aFiFuncDesc.GetSizePixel();
     452                 :            : 
     453         [ #  # ]:          0 :     Point aFLTopLeft=aFuncList.GetPosPixel();
     454         [ #  # ]:          0 :     Point aSplitterTopLeft=aPrivatSplit.GetPosPixel();
     455         [ #  # ]:          0 :     Point aFDTopLeft=aFiFuncDesc.GetPosPixel();
     456                 :            : 
     457         [ #  # ]:          0 :     long nTxtHeight = aFuncList.GetTextHeight();
     458                 :            : 
     459                 :            :     short nY=(short)(3*nTxtHeight+
     460         [ #  # ]:          0 :         aFuncList.GetPosPixel().Y()+aSplitterSize.Height());
     461                 :            : 
     462                 :          0 :     aFDTopLeft.Y()=aNewSize.Height()-aFDSize.Height()-4;
     463         [ #  # ]:          0 :     if(nY>aFDTopLeft.Y())
     464                 :            :     {
     465                 :          0 :         aFDSize.Height()-=nY-aFDTopLeft.Y();
     466                 :          0 :         aFDTopLeft.Y()=nY;
     467                 :            :     }
     468                 :          0 :     aSplitterTopLeft.Y()=aFDTopLeft.Y()-aSplitterSize.Height()-1;
     469                 :          0 :     aFLSize.Height()=aSplitterTopLeft.Y()-aFLTopLeft.Y()-1;
     470                 :            : 
     471         [ #  # ]:          0 :     aFuncList.SetSizePixel(aFLSize);
     472         [ #  # ]:          0 :     aPrivatSplit.SetPosPixel(aSplitterTopLeft);
     473         [ #  # ]:          0 :     aFiFuncDesc.SetPosPixel(aFDTopLeft);
     474         [ #  # ]:          0 :     aFiFuncDesc.SetSizePixel(aFDSize);
     475                 :            : 
     476                 :          0 : }
     477                 :            : 
     478                 :            : /*************************************************************************
     479                 :            : #*  Member:     SetMyWidthToBo
     480                 :            : #*------------------------------------------------------------------------
     481                 :            : #*
     482                 :            : #*  Klasse:     ScFunctionDockWin
     483                 :            : #*
     484                 :            : #*  Funktion:   Breite fuer die einzelnen Controls und
     485                 :            : #*              das Fenster einstellen, wenn oben oder
     486                 :            : #*              unten angedockt werden soll.
     487                 :            : #*
     488                 :            : #*  Input:      neue Fenstergroesse
     489                 :            : #*
     490                 :            : #*  Output:     ---
     491                 :            : #*
     492                 :            : #************************************************************************/
     493                 :            : 
     494                 :          0 : void ScFunctionDockWin::SetMyWidthToBo(Size &aNewSize)
     495                 :            : {
     496         [ #  # ]:          0 :     if((sal_uLong)aNewSize.Width()<nMinWidth)   aNewSize.Width()=nMinWidth;
     497                 :            : 
     498         [ #  # ]:          0 :     Size aCDSize=aCatBox.GetSizePixel();
     499         [ #  # ]:          0 :     Size aDdFLSize=aDDFuncList.GetSizePixel();
     500         [ #  # ]:          0 :     Size aFDSize=aFiFuncDesc.GetSizePixel();
     501                 :            : 
     502         [ #  # ]:          0 :     Point aCDTopLeft=aCatBox.GetPosPixel();
     503         [ #  # ]:          0 :     Point aDdFLTopLeft=aDDFuncList.GetPosPixel();
     504         [ #  # ]:          0 :     Point aFDTopLeft=aFiFuncDesc.GetPosPixel();
     505                 :            : 
     506                 :          0 :     aCDSize.Width()=aDdFLTopLeft.X()-aFDTopLeft.X()-aCDTopLeft.X();
     507                 :          0 :     aDdFLTopLeft.X()=aCDSize.Width()+aCDTopLeft.X()+aFDTopLeft.X();
     508                 :            : 
     509                 :          0 :     aDdFLSize.Width()=aNewSize.Width()-aDdFLTopLeft.X()-aFDTopLeft.X();
     510                 :            : 
     511                 :          0 :     aFDSize.Width()=aNewSize.Width()-2*aFDTopLeft.X();
     512                 :            : 
     513         [ #  # ]:          0 :     aDDFuncList.SetPosPixel(aDdFLTopLeft);
     514         [ #  # ]:          0 :     aDDFuncList.SetSizePixel(aDdFLSize);
     515         [ #  # ]:          0 :     aCatBox.SetSizePixel(aCDSize);
     516         [ #  # ]:          0 :     aFiFuncDesc.SetSizePixel(aFDSize);
     517                 :          0 : }
     518                 :            : 
     519                 :            : /*************************************************************************
     520                 :            : #*  Member:     SetHeight
     521                 :            : #*------------------------------------------------------------------------
     522                 :            : #*
     523                 :            : #*  Klasse:     ScFunctionDockWin
     524                 :            : #*
     525                 :            : #*  Funktion:   Hoehe fuer die einzelnen Controls und
     526                 :            : #*              das Fenster einstellen, wenn oben oder
     527                 :            : #*              unten angedockt werden soll.
     528                 :            : #*
     529                 :            : #*  Input:      neue Fenstergroesse
     530                 :            : #*
     531                 :            : #*  Output:     ---
     532                 :            : #*
     533                 :            : #************************************************************************/
     534                 :            : 
     535                 :          0 : void ScFunctionDockWin::SetMyHeightToBo(Size &aNewSize)
     536                 :            : {
     537         [ #  # ]:          0 :     if((sal_uLong)aNewSize.Height()<nMinHeight) aNewSize.Height()=nMinHeight;
     538                 :            : 
     539         [ #  # ]:          0 :     Size aFDSize=aFiFuncDesc.GetSizePixel();
     540                 :            : 
     541         [ #  # ]:          0 :     Point aFDTopLeft=aFiFuncDesc.GetPosPixel();
     542         [ #  # ]:          0 :     Point aCBTopLeft=aCatBox.GetPosPixel();
     543                 :          0 :     aFDSize.Height()=aNewSize.Height()-aFDTopLeft.Y()-aCBTopLeft.Y();
     544         [ #  # ]:          0 :     aFiFuncDesc.SetSizePixel(aFDSize);
     545                 :            : 
     546                 :          0 : }
     547                 :            : 
     548                 :            : /*************************************************************************
     549                 :            : #*  Member:     SetDescription
     550                 :            : #*------------------------------------------------------------------------
     551                 :            : #*
     552                 :            : #*  Klasse:     ScFunctionDockWin
     553                 :            : #*
     554                 :            : #*  Funktion:   Erklaerungstext fuer die Funktion einstellen.
     555                 :            : #*
     556                 :            : #*  Input:      ---
     557                 :            : #*
     558                 :            : #*  Output:     ---
     559                 :            : #*
     560                 :            : #************************************************************************/
     561                 :            : 
     562                 :          0 : void ScFunctionDockWin::SetDescription()
     563                 :            : {
     564                 :          0 :     aFiFuncDesc.SetText( EMPTY_STRING );
     565                 :            :     const ScFuncDesc* pDesc =
     566                 :            :              (const ScFuncDesc*)pAllFuncList->GetEntryData(
     567                 :          0 :                     pAllFuncList->GetSelectEntryPos() );
     568         [ #  # ]:          0 :     if (pDesc)
     569                 :            :     {
     570         [ #  # ]:          0 :         pDesc->initArgumentInfo();      // full argument info is needed
     571                 :            : 
     572 [ #  # ][ #  # ]:          0 :         ::rtl::OUStringBuffer aBuf(pAllFuncList->GetSelectEntry());
         [ #  # ][ #  # ]
     573         [ #  # ]:          0 :         if(nDockMode==0)
     574                 :            :         {
     575         [ #  # ]:          0 :             aBuf.appendAscii(":\n\n");
     576                 :            :         }
     577                 :            :         else
     578                 :            :         {
     579         [ #  # ]:          0 :             aBuf.appendAscii(":   ");
     580                 :            :         }
     581                 :            : 
     582 [ #  # ][ #  # ]:          0 :         aBuf.append(pDesc->GetParamList());
     583                 :            : 
     584         [ #  # ]:          0 :         if(nDockMode==0)
     585                 :            :         {
     586         [ #  # ]:          0 :             aBuf.appendAscii("\n\n");
     587                 :            :         }
     588                 :            :         else
     589                 :            :         {
     590         [ #  # ]:          0 :             aBuf.appendAscii("\n");
     591                 :            :         }
     592                 :            : 
     593         [ #  # ]:          0 :         aBuf.append(*pDesc->pFuncDesc);
     594                 :            : 
     595 [ #  # ][ #  # ]:          0 :         aFiFuncDesc.SetText(aBuf.makeStringAndClear());
         [ #  # ][ #  # ]
     596         [ #  # ]:          0 :         aFiFuncDesc.StateChanged(STATE_CHANGE_TEXT);
     597         [ #  # ]:          0 :         aFiFuncDesc.Invalidate();
     598         [ #  # ]:          0 :         aFiFuncDesc.Update();
     599                 :            : 
     600                 :            :     }
     601                 :          0 :  }
     602                 :            : 
     603                 :            : /*************************************************************************
     604                 :            : #*  Member:     Resizing
     605                 :            : #*------------------------------------------------------------------------
     606                 :            : #*
     607                 :            : #*  Klasse:     ScFunctionDockWin
     608                 :            : #*
     609                 :            : #*  Funktion:   Ueberladene Funktion um die Groesse der
     610                 :            : #*              einzelnen Controls einzustellen.
     611                 :            : #*
     612                 :            : #*  Input:      neue Groesse
     613                 :            : #*
     614                 :            : #*  Output:     ---
     615                 :            : #*
     616                 :            : #************************************************************************/
     617                 :            : 
     618                 :          0 : void ScFunctionDockWin::Resizing( Size& rNewSize )
     619                 :            : {
     620         [ #  # ]:          0 :     if((sal_uLong)rNewSize.Width()<nMinWidth) rNewSize.Width()=nMinWidth;
     621         [ #  # ]:          0 :     if((sal_uLong)rNewSize.Height()<nMinHeight) rNewSize.Height()=nMinHeight;
     622                 :            : 
     623                 :          0 : }
     624                 :            : 
     625                 :            : /*************************************************************************
     626                 :            : #*  Member:     Close
     627                 :            : #*------------------------------------------------------------------------
     628                 :            : #*
     629                 :            : #*  Klasse:     ScFunctionDockWin
     630                 :            : #*
     631                 :            : #*  Funktion:   Schliessen des Fensters
     632                 :            : #*
     633                 :            : #*  Input:      ---
     634                 :            : #*
     635                 :            : #*  Output:     TRUE
     636                 :            : #*
     637                 :            : #************************************************************************/
     638                 :            : 
     639                 :          0 : sal_Bool ScFunctionDockWin::Close()
     640                 :            : {
     641         [ #  # ]:          0 :     SfxBoolItem aItem( FID_FUNCTION_BOX, false );
     642                 :            : 
     643                 :          0 :     GetBindings().GetDispatcher()->Execute( FID_FUNCTION_BOX,
     644                 :            :                                 SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD,
     645         [ #  # ]:          0 :                                 &aItem, 0L );
     646                 :            : 
     647         [ #  # ]:          0 :     SfxDockingWindow::Close();
     648                 :            : 
     649         [ #  # ]:          0 :     return( sal_True );
     650                 :            : }
     651                 :            : 
     652                 :            : 
     653                 :            : /*************************************************************************
     654                 :            : #*  Member:     CheckAlignment
     655                 :            : #*------------------------------------------------------------------------
     656                 :            : #*
     657                 :            : #*  Klasse:     ScFunctionDockWin
     658                 :            : #*
     659                 :            : #*  Funktion:   Ueberprueft den Andockmodus und stellt die
     660                 :            : #*              Groessen dementsprechend ein.
     661                 :            : #*
     662                 :            : #*  Input:      Das neue Alignment
     663                 :            : #*
     664                 :            : #*  Output:     Das uebergebene Alignment
     665                 :            : #*
     666                 :            : #************************************************************************/
     667                 :          0 : SfxChildAlignment ScFunctionDockWin::CheckAlignment(SfxChildAlignment /* abla */,
     668                 :            :                                 SfxChildAlignment aChildAlign)
     669                 :            : {
     670         [ #  # ]:          0 :     String aString = rtl::OUString("ww");
     671 [ #  # ][ #  # ]:          0 :     Size aTxtSize( aFiFuncDesc.GetTextWidth(aString), aFiFuncDesc.GetTextHeight() );
     672         [ #  # ]:          0 :     if(!bInit)
     673                 :            :     {
     674                 :          0 :         eSfxOldAlignment=eSfxNewAlignment;
     675                 :          0 :         eSfxNewAlignment=aChildAlign;
     676                 :            :     }
     677                 :            :     else
     678                 :            :     {
     679                 :          0 :         bInit=false;
     680                 :          0 :         eSfxOldAlignment=aChildAlign;
     681                 :          0 :         eSfxNewAlignment=aChildAlign;
     682                 :            :     }
     683                 :            : 
     684      [ #  #  # ]:          0 :     switch(eSfxOldAlignment)
     685                 :            :     {
     686                 :            :         case SFX_ALIGN_HIGHESTTOP:
     687                 :            :         case SFX_ALIGN_TOP:
     688                 :            :         case SFX_ALIGN_LOWESTTOP:
     689                 :            :         case SFX_ALIGN_LOWESTBOTTOM:
     690                 :            :         case SFX_ALIGN_BOTTOM:
     691                 :            :         case SFX_ALIGN_TOOLBOXTOP:
     692                 :            :         case SFX_ALIGN_TOOLBOXBOTTOM:
     693                 :            : 
     694                 :          0 :                         nMinWidth= 0;
     695                 :          0 :                         nMinHeight=0;
     696                 :            : 
     697                 :            :                         break;
     698                 :            : 
     699                 :            :         case SFX_ALIGN_NOALIGNMENT:
     700                 :            : 
     701 [ #  # ][ #  # ]:          0 :                         aString = aCatBox.GetEntry(0);
                 [ #  # ]
     702         [ #  # ]:          0 :                         aString.AppendAscii(RTL_CONSTASCII_STRINGPARAM("www"));
     703                 :            :                         aTxtSize = Size( aFiFuncDesc.GetTextWidth(aString),
     704 [ #  # ][ #  # ]:          0 :                                             aFiFuncDesc.GetTextHeight() );
     705                 :            : 
     706         [ #  # ]:          0 :         default:        Point aTopLeft=aCatBox.GetPosPixel();
     707                 :          0 :                         nMinWidth=aTxtSize.Width()+aTopLeft.X()
     708         [ #  # ]:          0 :                                 +2*aFuncList.GetPosPixel().X();
     709                 :          0 :                         nMinHeight=19*aTxtSize.Height();
     710                 :            : 
     711                 :            :                         break;
     712                 :            :     }
     713                 :            : 
     714         [ #  # ]:          0 :     return aChildAlign;
     715                 :            : }
     716                 :            : /*************************************************************************
     717                 :            : #*  Member:     Close
     718                 :            : #*------------------------------------------------------------------------
     719                 :            : #*
     720                 :            : #*  Klasse:     ScFunctionDockWin
     721                 :            : #*
     722                 :            : #*  Funktion:   Aenderungen erkennen
     723                 :            : #*
     724                 :            : #*  Input:      ---
     725                 :            : #*
     726                 :            : #*  Output:     TRUE
     727                 :            : #*
     728                 :            : #************************************************************************/
     729                 :          0 : void ScFunctionDockWin::Notify( SfxBroadcaster&, const SfxHint& /* rHint */ )
     730                 :            : {
     731                 :          0 : }
     732                 :            : 
     733                 :            : 
     734                 :            : /*************************************************************************
     735                 :            : #*  Member:     Resize
     736                 :            : #*------------------------------------------------------------------------
     737                 :            : #*
     738                 :            : #*  Klasse:     ScFunctionDockWin
     739                 :            : #*
     740                 :            : #*  Funktion:   Ueberladene Funktion um die Groesse der
     741                 :            : #*              einzelnen Controls einzustellen.
     742                 :            : #*
     743                 :            : #*  Input:      neue Groesse
     744                 :            : #*
     745                 :            : #*  Output:     ---
     746                 :            : #*
     747                 :            : #************************************************************************/
     748                 :            : 
     749                 :          0 : void ScFunctionDockWin::Resize()
     750                 :            : {
     751   [ #  #  #  # ]:          0 :     if ( !IsFloatingMode() ||
                 [ #  # ]
     752                 :          0 :          !GetFloatingWindow()->IsRollUp() )
     753                 :            :     {
     754         [ #  # ]:          0 :         Size aQSize=GetOutputSizePixel();
     755         [ #  # ]:          0 :         Resizing( aQSize);
     756         [ #  # ]:          0 :         SetSize();
     757                 :            :     }
     758                 :          0 :     SfxDockingWindow::Resize();
     759                 :          0 : }
     760                 :            : 
     761                 :            : /*************************************************************************
     762                 :            : #*  Member:     UpdateFunctionList
     763                 :            : #*------------------------------------------------------------------------
     764                 :            : #*
     765                 :            : #*  Klasse:     ScFunctionDockWin
     766                 :            : #*
     767                 :            : #*  Funktion:   Aktualisiert die Liste der Funktionen ab-
     768                 :            : #*              haengig von der eingestellten Kategorie.
     769                 :            : #*
     770                 :            : #*  Input:      ---
     771                 :            : #*
     772                 :            : #*  Output:     ---
     773                 :            : #*
     774                 :            : #************************************************************************/
     775                 :            : 
     776                 :          0 : void ScFunctionDockWin::UpdateFunctionList()
     777                 :            : {
     778                 :          0 :     sal_uInt16  nSelPos   = aCatBox.GetSelectEntryPos();
     779                 :            :     sal_uInt16  nCategory = ( LISTBOX_ENTRY_NOTFOUND != nSelPos )
     780         [ #  # ]:          0 :                             ? (nSelPos-1) : 0;
     781                 :            : 
     782                 :          0 :     pAllFuncList->Clear();
     783                 :          0 :     pAllFuncList->SetUpdateMode( false );
     784                 :            : 
     785         [ #  # ]:          0 :     if ( nSelPos > 0 )
     786                 :            :     {
     787                 :          0 :         ScFunctionMgr* pFuncMgr = ScGlobal::GetStarCalcFunctionMgr();
     788                 :            : 
     789                 :          0 :         const ScFuncDesc* pDesc = pFuncMgr->First( nCategory );
     790         [ #  # ]:          0 :         while ( pDesc )
     791                 :            :         {
     792                 :            :             pAllFuncList->SetEntryData(
     793         [ #  # ]:          0 :                 pAllFuncList->InsertEntry( *(pDesc->pFuncName) ),
     794         [ #  # ]:          0 :                 (void*)pDesc );
     795                 :          0 :             pDesc = pFuncMgr->Next();
     796                 :            :         }
     797                 :            :     }
     798                 :            :     else // LRU-Liste
     799                 :            :     {
     800 [ #  # ][ #  # ]:          0 :         for(::std::vector<const formula::IFunctionDescription*>::iterator iter=aLRUList.begin();iter!=aLRUList.end();++iter)
     801                 :            :         {
     802                 :          0 :             const formula::IFunctionDescription* pDesc = *iter;
     803                 :            :             pAllFuncList->SetEntryData(
     804 [ #  # ][ #  # ]:          0 :                     pAllFuncList->InsertEntry(pDesc->getFunctionName()),
         [ #  # ][ #  # ]
     805         [ #  # ]:          0 :                     (void*)pDesc );
     806                 :            :         }
     807                 :            :     }
     808                 :            : 
     809                 :            : 
     810                 :            :     //------------------------------------------------------
     811                 :          0 :     pAllFuncList->SetUpdateMode( sal_True );
     812                 :            : 
     813         [ #  # ]:          0 :     if ( pAllFuncList->GetEntryCount() > 0 )
     814                 :            :     {
     815                 :          0 :         pAllFuncList->Enable();
     816                 :          0 :         pAllFuncList->SelectEntryPos( 0 );
     817                 :            :     }
     818                 :            :     else
     819                 :            :     {
     820                 :          0 :         pAllFuncList->Disable();
     821                 :            :     }
     822                 :          0 : }
     823                 :            : 
     824                 :            : /*************************************************************************
     825                 :            : #*  Member:     DoEnter
     826                 :            : #*------------------------------------------------------------------------
     827                 :            : #*
     828                 :            : #*  Klasse:     ScFunctionDockWin
     829                 :            : #*
     830                 :            : #*  Funktion:   Eingabe ins Dokument uebernehmen. Wird aufgerufen
     831                 :            : #*              nach betaetigen der Uebernehmen- Schaltflaeche
     832                 :            : #*              oder einem Doppelklick in die Funktionsliste.
     833                 :            : #*
     834                 :            : #*  Input:      ---
     835                 :            : #*
     836                 :            : #*  Output:     ---
     837                 :            : #*
     838                 :            : #************************************************************************/
     839                 :            : 
     840                 :          0 : void ScFunctionDockWin::DoEnter(sal_Bool /* bOk */) //@@ ???
     841                 :            : {
     842         [ #  # ]:          0 :     String aFirstArgStr;
     843         [ #  # ]:          0 :     String aParaStr;
     844         [ #  # ]:          0 :     String aArgStr;
     845         [ #  # ]:          0 :     String aString=pAllFuncList->GetSelectEntry();
     846         [ #  # ]:          0 :     SfxViewShell* pCurSh = SfxViewShell::Current();
     847                 :          0 :     nArgs=0;
     848                 :            : 
     849         [ #  # ]:          0 :     if(aString.Len()>0)
     850                 :            :     {
     851                 :            : 
     852         [ #  # ]:          0 :         ScModule* pScMod = SC_MOD();
     853 [ #  # ][ #  # ]:          0 :         ScTabViewShell* pViewSh = PTR_CAST( ScTabViewShell, pCurSh);
         [ #  # ][ #  # ]
     854         [ #  # ]:          0 :         ScInputHandler* pHdl = pScMod->GetInputHdl( pViewSh );
     855 [ #  # ][ #  # ]:          0 :         if(!pScMod->IsEditMode())
     856                 :            :         {
     857         [ #  # ]:          0 :             pScMod->SetInputMode(SC_INPUT_TABLE);
     858         [ #  # ]:          0 :             aString = '=';
     859 [ #  # ][ #  # ]:          0 :             aString += pAllFuncList->GetSelectEntry();
                 [ #  # ]
     860         [ #  # ]:          0 :             if (pHdl)
     861         [ #  # ]:          0 :                 pHdl->ClearText();
     862                 :            :         }
     863                 :            :         const ScFuncDesc* pDesc =
     864                 :            :              (const ScFuncDesc*)pAllFuncList->GetEntryData(
     865 [ #  # ][ #  # ]:          0 :                     pAllFuncList->GetSelectEntryPos() );
     866         [ #  # ]:          0 :         if (pDesc)
     867                 :            :         {
     868                 :          0 :             pFuncDesc=pDesc;
     869         [ #  # ]:          0 :             UpdateLRUList();
     870                 :          0 :             nArgs = pDesc->nArgCount;
     871         [ #  # ]:          0 :             if(nArgs>0)
     872                 :            :             {
     873                 :            :                 // NOTE: Theoretically the first parameter could have the
     874                 :            :                 // suppress flag as well, but practically it doesn't.
     875         [ #  # ]:          0 :                 aFirstArgStr = *(pDesc->ppDefArgNames[0]);
     876 [ #  # ][ #  # ]:          0 :                 aFirstArgStr = comphelper::string::strip(aFirstArgStr, ' ');
                 [ #  # ]
     877         [ #  # ]:          0 :                 aFirstArgStr.SearchAndReplaceAll(' ', '_');
     878         [ #  # ]:          0 :                 aArgStr = aFirstArgStr;
     879         [ #  # ]:          0 :                 if ( nArgs != VAR_ARGS )
     880                 :            :                 {   // no VarArgs or Fix plus VarArgs, but not VarArgs only
     881                 :          0 :                     rtl::OUString aArgSep("; ");
     882         [ #  # ]:          0 :                     sal_uInt16 nFix = ( nArgs < VAR_ARGS ? nArgs : nArgs - VAR_ARGS + 1 );
     883 [ #  # ][ #  # ]:          0 :                     for ( sal_uInt16 nArg = 1;
                 [ #  # ]
     884                 :          0 :                             nArg < nFix && !pDesc->pDefArgFlags[nArg].bOptional; nArg++ )
     885                 :            :                     {
     886         [ #  # ]:          0 :                         if (!pDesc->pDefArgFlags[nArg].bSuppress)
     887                 :            :                         {
     888         [ #  # ]:          0 :                             aArgStr += aArgSep;
     889         [ #  # ]:          0 :                             String sTmp(*(pDesc->ppDefArgNames[nArg]));
     890 [ #  # ][ #  # ]:          0 :                             sTmp = comphelper::string::strip(sTmp, ' ');
                 [ #  # ]
     891         [ #  # ]:          0 :                             sTmp.SearchAndReplaceAll(' ', '_');
     892 [ #  # ][ #  # ]:          0 :                             aArgStr += sTmp;
     893                 :            :                         }
     894                 :          0 :                     }
     895                 :            :                 }
     896                 :            :             }
     897                 :            :         }
     898         [ #  # ]:          0 :         if (pHdl)
     899                 :            :         {
     900 [ #  # ][ #  # ]:          0 :             if (pHdl->GetEditString().isEmpty())
     901                 :            :             {
     902         [ #  # ]:          0 :                 aString = '=';
     903 [ #  # ][ #  # ]:          0 :                 aString += pAllFuncList->GetSelectEntry();
                 [ #  # ]
     904                 :            :             }
     905         [ #  # ]:          0 :             EditView *pEdView=pHdl->GetActiveView();
     906         [ #  # ]:          0 :             if(pEdView!=NULL) // @ Wegen Absturz bei Namen festlegen
     907                 :            :             {
     908         [ #  # ]:          0 :                 if(nArgs>0)
     909                 :            :                 {
     910         [ #  # ]:          0 :                     pHdl->InsertFunction(aString);
     911         [ #  # ]:          0 :                     pEdView->InsertText(aArgStr,sal_True);
     912         [ #  # ]:          0 :                     ESelection  aESel=pEdView->GetSelection();
     913                 :          0 :                     aESel.nEndPos=aESel.nStartPos+aFirstArgStr.Len();
     914         [ #  # ]:          0 :                     pEdView->SetSelection(aESel);
     915         [ #  # ]:          0 :                     pHdl->DataChanged();
     916                 :            :                 }
     917                 :            :                 else
     918                 :            :                 {
     919         [ #  # ]:          0 :                     aString.AppendAscii(RTL_CONSTASCII_STRINGPARAM( "()" ));
     920         [ #  # ]:          0 :                     pEdView->InsertText(aString,false);
     921         [ #  # ]:          0 :                     pHdl->DataChanged();
     922                 :            :                 }
     923                 :            :             }
     924                 :            :         }
     925         [ #  # ]:          0 :         InitLRUList();
     926                 :            :     }
     927         [ #  # ]:          0 :     if ( pCurSh )
     928                 :            :     {
     929                 :          0 :         Window* pShellWnd = pCurSh->GetWindow();
     930                 :            : 
     931         [ #  # ]:          0 :         if ( pShellWnd )
     932         [ #  # ]:          0 :             pShellWnd->GrabFocus();
     933 [ #  # ][ #  # ]:          0 :     }
         [ #  # ][ #  # ]
     934                 :            : 
     935                 :            : 
     936                 :          0 : }
     937                 :            : 
     938                 :            : 
     939                 :            : 
     940                 :            : /*************************************************************************
     941                 :            : #*  Handle:     SelHdl
     942                 :            : #*------------------------------------------------------------------------
     943                 :            : #*
     944                 :            : #*  Klasse:     ScFunctionDockWin
     945                 :            : #*
     946                 :            : #*  Funktion:   Bei einer Aenderung der Kategorie wird die
     947                 :            : #*              die Liste der Funktionen aktualisiert.
     948                 :            : #*
     949                 :            : #*  Input:      ---
     950                 :            : #*
     951                 :            : #*  Output:     ---
     952                 :            : #*
     953                 :            : #************************************************************************/
     954                 :            : 
     955                 :          0 : IMPL_LINK( ScFunctionDockWin, SelHdl, ListBox*, pLb )
     956                 :            : {
     957         [ #  # ]:          0 :     if ( pLb == &aCatBox)
     958                 :            :     {
     959                 :          0 :         UpdateFunctionList();
     960                 :          0 :         SetDescription();
     961                 :            :     }
     962                 :            : 
     963 [ #  # ][ #  # ]:          0 :     if ( pLb == &aFuncList||pLb == &aDDFuncList)
     964                 :            :     {
     965                 :          0 :         SetDescription();
     966                 :            :     }
     967                 :            : 
     968                 :            : 
     969                 :            :     //SetSize();
     970                 :          0 :     return 0;
     971                 :            : }
     972                 :            : 
     973                 :            : /*************************************************************************
     974                 :            : #*  Handle:     SelHdl
     975                 :            : #*------------------------------------------------------------------------
     976                 :            : #*
     977                 :            : #*  Klasse:     ScFunctionDockWin
     978                 :            : #*
     979                 :            : #*  Funktion:   Bei einer Aenderung der Kategorie wird die
     980                 :            : #*              die Liste der Funktionen aktualisiert.
     981                 :            : #*
     982                 :            : #*  Input:      ---
     983                 :            : #*
     984                 :            : #*  Output:     ---
     985                 :            : #*
     986                 :            : #************************************************************************/
     987                 :            : 
     988                 :          0 : IMPL_LINK( ScFunctionDockWin, SetSelectionHdl, void*, pCtrl )
     989                 :            : {
     990 [ #  # ][ #  # ]:          0 :     if ((ImageButton *)pCtrl == &aInsertButton ||
     991                 :            :         (ListBox *)pCtrl == &aFuncList)
     992                 :            :     {
     993                 :          0 :         DoEnter(sal_True);          // Uebernimmt die Eingabe
     994                 :            :     }
     995                 :            :     //...
     996                 :            : 
     997                 :          0 :     return 0;
     998                 :            : }
     999                 :            : 
    1000                 :            : /*************************************************************************
    1001                 :            : #*  Handle:     SetSplitHdl
    1002                 :            : #*------------------------------------------------------------------------
    1003                 :            : #*
    1004                 :            : #*  Klasse:     ScFunctionDockWin
    1005                 :            : #*
    1006                 :            : #*  Funktion:   Bei einer Aenderung des Split- Controls werden die
    1007                 :            : #*              einzelnen Controls an die neue Groesse angepasst.
    1008                 :            : #*
    1009                 :            : #*  Input:      Zeiger auf Control
    1010                 :            : #*
    1011                 :            : #*  Output:     ---
    1012                 :            : #*
    1013                 :            : #************************************************************************/
    1014                 :            : 
    1015                 :          0 : IMPL_LINK( ScFunctionDockWin, SetSplitHdl, ScPrivatSplit*, pCtrl )
    1016                 :            : {
    1017         [ #  # ]:          0 :     if (pCtrl == &aPrivatSplit)
    1018                 :            :     {
    1019         [ #  # ]:          0 :         short nDeltaY=aPrivatSplit.GetDeltaY();
    1020         [ #  # ]:          0 :         Size aFLSize=aFuncList.GetSizePixel();
    1021         [ #  # ]:          0 :         Size aFDSize=aFiFuncDesc.GetSizePixel();
    1022         [ #  # ]:          0 :         Point aFDTopLeft=aFiFuncDesc.GetPosPixel();
    1023                 :            : 
    1024                 :          0 :         aFLSize.Height()+=nDeltaY;
    1025                 :          0 :         aFDSize.Height()-=nDeltaY;
    1026                 :          0 :         aFDTopLeft.Y()+=nDeltaY;
    1027         [ #  # ]:          0 :         aFuncList.SetSizePixel(aFLSize);
    1028         [ #  # ]:          0 :         aFiFuncDesc.SetPosPixel(aFDTopLeft);
    1029         [ #  # ]:          0 :         aFiFuncDesc.SetSizePixel(aFDSize);
    1030                 :            :     }
    1031                 :            :     //...
    1032                 :            : 
    1033                 :          0 :     return 0;
    1034                 :            : }
    1035                 :            : 
    1036                 :          0 : void ScFunctionDockWin::ToggleFloatingMode()
    1037                 :            : {
    1038                 :          0 :     aSplitterInitPos = Point();
    1039                 :          0 :     SfxDockingWindow::ToggleFloatingMode();
    1040                 :            : 
    1041                 :          0 :     eSfxNewAlignment=GetAlignment();
    1042                 :          0 :     eSfxOldAlignment=eSfxNewAlignment;
    1043                 :            : 
    1044                 :          0 :     aOldSize.Height()=0;
    1045                 :          0 :     aOldSize.Width()=0;
    1046                 :          0 :     aTimer.Start();
    1047                 :          0 : }
    1048                 :            : 
    1049                 :          0 : IMPL_LINK_NOARG(ScFunctionDockWin, TimerHdl)
    1050                 :            : {
    1051                 :          0 :     CheckAlignment(eSfxOldAlignment,eSfxNewAlignment);
    1052                 :          0 :     SetSize();
    1053                 :          0 :     return 0;
    1054                 :            : }
    1055                 :            : 
    1056                 :          0 : void ScFunctionDockWin::Initialize(SfxChildWinInfo *pInfo)
    1057                 :            : {
    1058         [ #  # ]:          0 :     String aStr;
    1059         [ #  # ]:          0 :     if(pInfo!=NULL)
    1060                 :            :     {
    1061         [ #  # ]:          0 :         if ( pInfo->aExtraString.Len() )
    1062                 :            :         {
    1063                 :            :             xub_StrLen nPos = pInfo->aExtraString.Search(
    1064 [ #  # ][ #  # ]:          0 :                 rtl::OUString("ScFuncList:"));
                 [ #  # ]
    1065                 :            : 
    1066                 :            :             // Versuche, den Alignment-String "ALIGN:(...)" einzulesen; wenn
    1067                 :            :             // er nicht vorhanden ist, liegt eine "altere Version vor
    1068         [ #  # ]:          0 :             if ( nPos != STRING_NOTFOUND )
    1069                 :            :             {
    1070         [ #  # ]:          0 :                 xub_StrLen n1 = pInfo->aExtraString.Search('(', nPos);
    1071         [ #  # ]:          0 :                 if ( n1 != STRING_NOTFOUND )
    1072                 :            :                 {
    1073         [ #  # ]:          0 :                     xub_StrLen n2 = pInfo->aExtraString.Search(')', n1);
    1074         [ #  # ]:          0 :                     if ( n2 != STRING_NOTFOUND )
    1075                 :            :                     {
    1076                 :            :                         // Alignment-String herausschneiden
    1077 [ #  # ][ #  # ]:          0 :                         aStr = pInfo->aExtraString.Copy(nPos, n2 - nPos + 1);
                 [ #  # ]
    1078         [ #  # ]:          0 :                         pInfo->aExtraString.Erase(nPos, n2 - nPos + 1);
    1079         [ #  # ]:          0 :                         aStr.Erase(0, n1-nPos+1);
    1080                 :            :                     }
    1081                 :            :                 }
    1082                 :            :             }
    1083                 :            :         }
    1084                 :            :     }
    1085         [ #  # ]:          0 :     SfxDockingWindow::Initialize(pInfo);
    1086                 :            : 
    1087         [ #  # ]:          0 :     if ( aStr.Len())
    1088                 :            :     {
    1089         [ #  # ]:          0 :         aSplitterInitPos=aPrivatSplit.GetPosPixel();
    1090         [ #  # ]:          0 :         aSplitterInitPos.Y()=(sal_uInt16) aStr.ToInt32();
    1091         [ #  # ]:          0 :         xub_StrLen n1 = aStr.Search(';');
    1092         [ #  # ]:          0 :         aStr.Erase(0, n1+1);
    1093         [ #  # ]:          0 :         sal_uInt16 nSelPos=sal::static_int_cast<sal_uInt16>( aStr.ToInt32() );
    1094         [ #  # ]:          0 :         aCatBox.SelectEntryPos(nSelPos);
    1095         [ #  # ]:          0 :         SelHdl(&aCatBox);
    1096                 :            : 
    1097                 :            :         //  if the window has already been shown (from SfxDockingWindow::Initialize if docked),
    1098                 :            :         //  set the splitter position now, otherwise it is set in StateChanged with type INITSHOW
    1099                 :            : 
    1100         [ #  # ]:          0 :         UseSplitterInitPos();
    1101         [ #  # ]:          0 :     }
    1102                 :          0 : }
    1103                 :            : 
    1104                 :            : //-------------------------------------------------------------------------
    1105                 :            : 
    1106                 :          0 : void ScFunctionDockWin::FillInfo(SfxChildWinInfo& rInfo) const
    1107                 :            : {
    1108         [ #  # ]:          0 :     SfxDockingWindow::FillInfo(rInfo);
    1109         [ #  # ]:          0 :     Point aPoint=aPrivatSplit.GetPosPixel();
    1110         [ #  # ]:          0 :     rInfo.aExtraString.AppendAscii(RTL_CONSTASCII_STRINGPARAM( "ScFuncList:(" ));
    1111 [ #  # ][ #  # ]:          0 :     rInfo.aExtraString += String::CreateFromInt32(aPoint.Y());
                 [ #  # ]
    1112         [ #  # ]:          0 :     rInfo.aExtraString += ';';
    1113 [ #  # ][ #  # ]:          0 :     rInfo.aExtraString += String::CreateFromInt32(aCatBox.GetSelectEntryPos());
         [ #  # ][ #  # ]
    1114         [ #  # ]:          0 :     rInfo.aExtraString += ')';
    1115                 :          0 : }
    1116                 :            : 
    1117                 :          0 : void ScFunctionDockWin::UseSplitterInitPos()
    1118                 :            : {
    1119 [ #  # ][ #  # ]:          0 :     if ( IsVisible() && aPrivatSplit.IsEnabled() && aSplitterInitPos != Point() )
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  # ]
    1120                 :            :     {
    1121                 :          0 :         aPrivatSplit.MoveSplitTo(aSplitterInitPos);
    1122                 :          0 :         aSplitterInitPos = Point();     // use only once
    1123                 :            :     }
    1124                 :          0 : }
    1125                 :            : 
    1126                 :          0 : void ScFunctionDockWin::StateChanged( StateChangedType nStateChange )
    1127                 :            : {
    1128                 :          0 :     SfxDockingWindow::StateChanged( nStateChange );
    1129                 :            : 
    1130         [ #  # ]:          0 :     if (nStateChange == STATE_CHANGE_INITSHOW)
    1131                 :            :     {
    1132                 :          0 :         UseSplitterInitPos();           //  set initial splitter position if necessary
    1133                 :            :     }
    1134                 :          0 : }
    1135                 :            : 
    1136                 :            : 
    1137                 :            : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10