LCOV - code coverage report
Current view: top level - sc/source/ui/navipi - navipi.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 3 664 0.5 %
Date: 2012-08-25 Functions: 3 80 3.8 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 3 944 0.3 %

           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 <rangelst.hxx>
      30                 :            : #include <sfx2/app.hxx>
      31                 :            : #include <sfx2/bindings.hxx>
      32                 :            : #include <sfx2/dispatch.hxx>
      33                 :            : #include <sfx2/event.hxx>
      34                 :            : #include <sfx2/imgmgr.hxx>
      35                 :            : #include <sfx2/navigat.hxx>
      36                 :            : #include <svl/stritem.hxx>
      37                 :            : #include <svl/urlbmk.hxx>
      38                 :            : #include <unotools/charclass.hxx>
      39                 :            : #include <stdlib.h>
      40                 :            : 
      41                 :            : #include "viewdata.hxx"
      42                 :            : #include "tabvwsh.hxx"
      43                 :            : #include "docsh.hxx"
      44                 :            : #include "document.hxx"
      45                 :            : #include "dbdata.hxx"
      46                 :            : #include "rangenam.hxx"
      47                 :            : #include "rangeutl.hxx"
      48                 :            : #include "popmenu.hxx"
      49                 :            : #include "scresid.hxx"
      50                 :            : #include "scmod.hxx"
      51                 :            : #include "navicfg.hxx"
      52                 :            : #include "navcitem.hxx"
      53                 :            : #include "navipi.hrc"
      54                 :            : #include "navipi.hxx"
      55                 :            : #include "navsett.hxx"
      56                 :            : #include "markdata.hxx"
      57                 :            : 
      58                 :            : //  Timeout, um Notizen zu suchen
      59                 :            : #define SC_CONTENT_TIMEOUT  1000
      60                 :            : 
      61                 :            : //  Toleranz, wieviel ueber der eingeklappten Groesse noch klein ist
      62                 :            : #define SCNAV_MINTOL        5
      63                 :            : 
      64                 :            : //  maximum values for UI
      65                 :            : #define SCNAV_MAXCOL        (MAXCOLCOUNT)
      66                 :            : // macro is sufficient since only used in ctor
      67                 :            : #define SCNAV_COLDIGITS     (static_cast<xub_StrLen>( floor( log10( static_cast<double>(SCNAV_MAXCOL)))) + 1)   // 1...256...18278
      68                 :            : // precomputed constant because it is used in every change of spin button field
      69                 :         51 : static const xub_StrLen SCNAV_COLLETTERS = ::ScColToAlpha(SCNAV_MAXCOL).Len();    // A...IV...ZZZ
      70                 :            : 
      71                 :            : #define SCNAV_MAXROW        (MAXROWCOUNT)
      72                 :            : 
      73                 :            : //------------------------------------------------------------------------
      74                 :            : 
      75                 :          0 : void ScNavigatorDlg::ReleaseFocus()
      76                 :            : {
      77                 :          0 :     SfxViewShell* pCurSh = SfxViewShell::Current();
      78                 :            : 
      79         [ #  # ]:          0 :     if ( pCurSh )
      80                 :            :     {
      81                 :          0 :         Window* pShellWnd = pCurSh->GetWindow();
      82         [ #  # ]:          0 :         if ( pShellWnd )
      83                 :          0 :             pShellWnd->GrabFocus();
      84                 :            :     }
      85                 :          0 : }
      86                 :            : 
      87                 :            : //==================================================================
      88                 :            : //  class ColumnEdit
      89                 :            : //==================================================================
      90                 :            : 
      91                 :          0 : ColumnEdit::ColumnEdit( ScNavigatorDlg* pParent, const ResId& rResId )
      92                 :            :     :   SpinField   ( pParent, rResId ),
      93                 :            :         rDlg        ( *pParent ),
      94                 :            :         nCol        ( 0 ),
      95                 :          0 :         nKeyGroup   ( KEYGROUP_ALPHA )
      96                 :            : {
      97         [ #  # ]:          0 :     SetMaxTextLen( SCNAV_COLDIGITS );   // 1...256...18278 or A...IV...ZZZ
      98                 :          0 : }
      99                 :            : 
     100                 :            : //------------------------------------------------------------------------
     101                 :            : 
     102                 :          0 : ColumnEdit::~ColumnEdit()
     103                 :            : {
     104         [ #  # ]:          0 : }
     105                 :            : 
     106                 :            : //------------------------------------------------------------------------
     107                 :            : 
     108                 :          0 : long ColumnEdit::Notify( NotifyEvent& rNEvt )
     109                 :            : {
     110                 :          0 :     long nHandled = SpinField::Notify( rNEvt );
     111                 :            : 
     112                 :          0 :     sal_uInt16 nType = rNEvt.GetType();
     113         [ #  # ]:          0 :     if ( nType == EVENT_KEYINPUT )
     114                 :            :     {
     115         [ #  # ]:          0 :         const KeyEvent* pKEvt = rNEvt.GetKeyEvent();
     116                 :          0 :         KeyCode aCode = pKEvt->GetKeyCode();
     117                 :            : 
     118 [ #  # ][ #  # ]:          0 :         if ( !aCode.IsMod1() && !aCode.IsMod2() )
                 [ #  # ]
     119                 :            :         {
     120                 :            :             //! Eingabeueberpruefung (nur Zahlen oder nur Buchstaben, max 2 bzw 3 Stellen)
     121                 :            :             //! war vor VCL per nicht weitergeleitetem KeyInput
     122                 :            :             //! dafuer was neues ausdenken!!!
     123                 :            : 
     124         [ #  # ]:          0 :             if ( aCode.GetCode() == KEY_RETURN )
     125                 :            :             {
     126         [ #  # ]:          0 :                 ScNavigatorDlg::ReleaseFocus();
     127         [ #  # ]:          0 :                 ExecuteCol();
     128                 :          0 :                 nHandled = 1;
     129                 :            :             }
     130                 :            :         }
     131                 :            :     }
     132         [ #  # ]:          0 :     else if ( nType == EVENT_LOSEFOCUS )    // LoseFocus wird bei VCL nicht gerufen
     133                 :          0 :         EvalText();                         // nCol setzen
     134                 :            : 
     135                 :          0 :     return nHandled;
     136                 :            : }
     137                 :            : 
     138                 :            : //------------------------------------------------------------------------
     139                 :            : 
     140                 :          0 : void ColumnEdit::LoseFocus()
     141                 :            : {
     142                 :          0 :     EvalText();
     143                 :          0 : }
     144                 :            : 
     145                 :            : 
     146                 :            : //------------------------------------------------------------------------
     147                 :            : 
     148                 :          0 : void ColumnEdit::Up()
     149                 :            : {
     150                 :          0 :     nCol++;
     151                 :            : 
     152         [ #  # ]:          0 :     if ( nCol <= SCNAV_MAXCOL )
     153                 :          0 :         SetCol( nCol );
     154                 :            :     else
     155                 :          0 :         nCol--;
     156                 :          0 : }
     157                 :            : 
     158                 :            : //------------------------------------------------------------------------
     159                 :            : 
     160                 :          0 : void ColumnEdit::Down()
     161                 :            : {
     162         [ #  # ]:          0 :     if ( nCol>1 )
     163                 :          0 :         SetCol( nCol-1 );
     164                 :          0 : }
     165                 :            : 
     166                 :            : //------------------------------------------------------------------------
     167                 :            : 
     168                 :          0 : void ColumnEdit::First()
     169                 :            : {
     170                 :          0 :     nCol = 1;
     171 [ #  # ][ #  # ]:          0 :     SetText(rtl::OUString('A'));
                 [ #  # ]
     172                 :          0 : }
     173                 :            : 
     174                 :            : //------------------------------------------------------------------------
     175                 :            : 
     176                 :          0 : void ColumnEdit::Last()
     177                 :            : {
     178         [ #  # ]:          0 :     String aStr;
     179         [ #  # ]:          0 :     nCol = NumToAlpha( SCNAV_MAXCOL, aStr );
     180 [ #  # ][ #  # ]:          0 :     SetText( aStr );
     181                 :          0 : }
     182                 :            : 
     183                 :            : 
     184                 :            : //------------------------------------------------------------------------
     185                 :            : 
     186                 :          0 : void ColumnEdit::EvalText()
     187                 :            : {
     188         [ #  # ]:          0 :     String aStrCol = GetText();
     189                 :            : 
     190         [ #  # ]:          0 :     if ( aStrCol.Len() > 0 )
     191                 :            :     {
     192                 :            :         //  nKeyGroup wird bei VCL mangels KeyInput nicht mehr gesetzt
     193                 :            : 
     194 [ #  # ][ #  # ]:          0 :         if ( CharClass::isAsciiNumeric(aStrCol) )
     195         [ #  # ]:          0 :             nCol = NumStrToAlpha( aStrCol );
     196                 :            :         else
     197         [ #  # ]:          0 :             nCol = AlphaToNum( aStrCol );
     198                 :            :     }
     199                 :            :     else
     200                 :          0 :         nCol = 0;
     201                 :            : 
     202         [ #  # ]:          0 :     SetText( aStrCol );
     203         [ #  # ]:          0 :     nKeyGroup = KEYGROUP_ALPHA;
     204                 :          0 : }
     205                 :            : 
     206                 :            : //------------------------------------------------------------------------
     207                 :            : 
     208                 :          0 : void ColumnEdit::ExecuteCol()
     209                 :            : {
     210                 :          0 :     SCROW nRow = rDlg.aEdRow.GetRow();
     211                 :            : 
     212                 :          0 :     EvalText(); // setzt nCol
     213                 :            : 
     214 [ #  # ][ #  # ]:          0 :     if ( (nCol > 0) && (nRow > 0) )
     215                 :          0 :         rDlg.SetCurrentCell( nCol-1, nRow-1 );
     216                 :          0 : }
     217                 :            : 
     218                 :            : //------------------------------------------------------------------------
     219                 :            : 
     220                 :          0 : void ColumnEdit::SetCol( SCCOL nColNo )
     221                 :            : {
     222         [ #  # ]:          0 :     String aStr;
     223                 :            : 
     224         [ #  # ]:          0 :     if ( nColNo == 0 )
     225                 :            :     {
     226                 :          0 :         nCol = 0;
     227         [ #  # ]:          0 :         SetText( aStr );
     228                 :            :     }
     229                 :            :     else
     230                 :            :     {
     231         [ #  # ]:          0 :         nColNo = NumToAlpha( nColNo, aStr );
     232                 :          0 :         nCol = nColNo;
     233         [ #  # ]:          0 :         SetText( aStr );
     234         [ #  # ]:          0 :     }
     235                 :          0 : }
     236                 :            : 
     237                 :            : //------------------------------------------------------------------------
     238                 :            : 
     239                 :          0 : SCCOL ColumnEdit::AlphaToNum( String& rStr )
     240                 :            : {
     241                 :          0 :     SCCOL  nColumn = 0;
     242                 :            : 
     243 [ #  # ][ #  # ]:          0 :     if ( CharClass::isAsciiAlpha( rStr) )
     244                 :            :     {
     245         [ #  # ]:          0 :         rStr.ToUpperAscii();
     246                 :            : 
     247 [ #  # ][ #  # ]:          0 :         if (::AlphaToCol( nColumn, rStr))
     248                 :          0 :             ++nColumn;
     249                 :            : 
     250 [ #  # ][ #  # ]:          0 :         if ( (rStr.Len() > SCNAV_COLLETTERS) || (nColumn > SCNAV_MAXCOL) )
                 [ #  # ]
     251                 :            :         {
     252                 :          0 :             nColumn = SCNAV_MAXCOL;
     253         [ #  # ]:          0 :             NumToAlpha( nColumn, rStr );
     254                 :            :         }
     255                 :            :     }
     256                 :            :     else
     257         [ #  # ]:          0 :         rStr.Erase();
     258                 :            : 
     259                 :          0 :     return nColumn;
     260                 :            : }
     261                 :            : 
     262                 :            : //------------------------------------------------------------------------
     263                 :            : 
     264                 :          0 : SCCOL ColumnEdit::NumStrToAlpha( String& rStr )
     265                 :            : {
     266                 :          0 :     SCCOL  nColumn = 0;
     267                 :            : 
     268         [ #  # ]:          0 :     if ( CharClass::isAsciiNumeric(rStr) )
     269                 :          0 :         nColumn = NumToAlpha( (SCCOL)rStr.ToInt32(), rStr );
     270                 :            :     else
     271                 :          0 :         rStr.Erase();
     272                 :            : 
     273                 :          0 :     return nColumn;
     274                 :            : }
     275                 :            : 
     276                 :            : //------------------------------------------------------------------------
     277                 :            : 
     278                 :          0 : SCCOL ColumnEdit::NumToAlpha( SCCOL nColNo, String& rStr )
     279                 :            : {
     280         [ #  # ]:          0 :     if ( nColNo > SCNAV_MAXCOL )
     281                 :          0 :         nColNo = SCNAV_MAXCOL;
     282         [ #  # ]:          0 :     else if ( nColNo < 1 )
     283                 :          0 :         nColNo = 1;
     284                 :            : 
     285                 :          0 :     ::ScColToAlpha( rStr, nColNo - 1);
     286                 :            : 
     287                 :          0 :     return nColNo;
     288                 :            : }
     289                 :            : 
     290                 :            : //==================================================================
     291                 :            : //  class RowEdit
     292                 :            : //==================================================================
     293                 :            : 
     294                 :          0 : RowEdit::RowEdit( ScNavigatorDlg* pParent, const ResId& rResId )
     295                 :            :     :   NumericField( pParent, rResId ),
     296                 :          0 :         rDlg        ( *pParent )
     297                 :            : {
     298         [ #  # ]:          0 :     SetMax( SCNAV_MAXROW);
     299                 :          0 :     SetLast( SCNAV_MAXROW);
     300                 :          0 : }
     301                 :            : 
     302                 :            : //------------------------------------------------------------------------
     303                 :            : 
     304                 :          0 : RowEdit::~RowEdit()
     305                 :            : {
     306         [ #  # ]:          0 : }
     307                 :            : 
     308                 :            : //------------------------------------------------------------------------
     309                 :            : 
     310                 :          0 : long RowEdit::Notify( NotifyEvent& rNEvt )
     311                 :            : {
     312                 :          0 :     long nHandled = NumericField::Notify( rNEvt );
     313                 :            : 
     314         [ #  # ]:          0 :     if ( rNEvt.GetType() == EVENT_KEYINPUT )
     315                 :            :     {
     316         [ #  # ]:          0 :         const KeyEvent* pKEvt = rNEvt.GetKeyEvent();
     317                 :          0 :         KeyCode aCode = pKEvt->GetKeyCode();
     318 [ #  # ][ #  # ]:          0 :         if ( aCode.GetCode() == KEY_RETURN && !aCode.IsMod1() && !aCode.IsMod2() )
         [ #  # ][ #  # ]
     319                 :            :         {
     320         [ #  # ]:          0 :             ScNavigatorDlg::ReleaseFocus();
     321         [ #  # ]:          0 :             ExecuteRow();
     322                 :          0 :             nHandled = 1;
     323                 :            :         }
     324                 :            :     }
     325                 :            : 
     326                 :          0 :     return nHandled;
     327                 :            : }
     328                 :            : 
     329                 :            : //------------------------------------------------------------------------
     330                 :            : 
     331                 :          0 : void RowEdit::LoseFocus()
     332                 :            : {
     333                 :          0 : }
     334                 :            : 
     335                 :            : //------------------------------------------------------------------------
     336                 :            : 
     337                 :          0 : void RowEdit::ExecuteRow()
     338                 :            : {
     339                 :          0 :     SCCOL nCol = rDlg.aEdCol.GetCol();
     340                 :          0 :     SCROW nRow = (SCROW)GetValue();
     341                 :            : 
     342 [ #  # ][ #  # ]:          0 :     if ( (nCol > 0) && (nRow > 0) )
     343                 :          0 :         rDlg.SetCurrentCell( nCol-1, nRow-1 );
     344                 :          0 : }
     345                 :            : 
     346                 :            : //==================================================================
     347                 :            : //  class ScDocListBox
     348                 :            : //==================================================================
     349                 :            : 
     350                 :          0 : ScDocListBox::ScDocListBox( ScNavigatorDlg* pParent, const ResId& rResId )
     351                 :            :     :   ListBox ( pParent, rResId ),
     352                 :          0 :         rDlg    ( *pParent )
     353                 :            : {
     354                 :          0 : }
     355                 :            : 
     356                 :            : //------------------------------------------------------------------------
     357                 :            : 
     358                 :          0 : ScDocListBox::~ScDocListBox()
     359                 :            : {
     360         [ #  # ]:          0 : }
     361                 :            : 
     362                 :            : //------------------------------------------------------------------------
     363                 :            : 
     364                 :          0 : void ScDocListBox::Select()
     365                 :            : {
     366         [ #  # ]:          0 :     ScNavigatorDlg::ReleaseFocus();
     367                 :            : 
     368         [ #  # ]:          0 :     String aDocName = GetSelectEntry();
     369 [ #  # ][ #  # ]:          0 :     rDlg.aLbEntries.SelectDoc( aDocName );
     370                 :          0 : }
     371                 :            : 
     372                 :            : //==================================================================
     373                 :            : //  class CommandToolBox
     374                 :            : //==================================================================
     375                 :            : 
     376                 :          0 : CommandToolBox::CommandToolBox( ScNavigatorDlg* pParent, const ResId& rResId )
     377                 :            :     :   ToolBox ( pParent, rResId ),
     378                 :          0 :         rDlg    ( *pParent )
     379                 :            : {
     380         [ #  # ]:          0 :     InitImageList();    // ImageList members of ScNavigatorDlg must be initialized before!
     381                 :            : 
     382 [ #  # ][ #  # ]:          0 :     SetSizePixel( CalcWindowSizePixel() );
     383 [ #  # ][ #  # ]:          0 :     SetDropdownClickHdl( LINK(this, CommandToolBox, ToolBoxDropdownClickHdl) );
     384 [ #  # ][ #  # ]:          0 :     SetItemBits( IID_DROPMODE, GetItemBits( IID_DROPMODE ) | TIB_DROPDOWNONLY );
     385                 :          0 : }
     386                 :            : 
     387                 :            : //------------------------------------------------------------------------
     388                 :            : 
     389                 :          0 : CommandToolBox::~CommandToolBox()
     390                 :            : {
     391         [ #  # ]:          0 : }
     392                 :            : 
     393                 :            : //------------------------------------------------------------------------
     394                 :            : 
     395                 :          0 : void CommandToolBox::Select( sal_uInt16 nSelId )
     396                 :            : {
     397                 :            :     //  Modus umschalten ?
     398                 :            : 
     399 [ #  # ][ #  # ]:          0 :     if ( nSelId == IID_ZOOMOUT || nSelId == IID_SCENARIOS )
     400                 :            :     {
     401                 :          0 :         NavListMode eOldMode = rDlg.eListMode;
     402                 :          0 :         NavListMode eNewMode = eOldMode;
     403                 :            : 
     404         [ #  # ]:          0 :         if ( nSelId == IID_SCENARIOS )                  // auf Szenario
     405                 :            :         {
     406         [ #  # ]:          0 :             if ( eOldMode == NAV_LMODE_SCENARIOS )
     407                 :          0 :                 eNewMode = NAV_LMODE_AREAS;
     408                 :            :             else
     409                 :          0 :                 eNewMode = NAV_LMODE_SCENARIOS;
     410                 :            :         }
     411                 :            :         else                                            // ein/aus
     412                 :            :         {
     413         [ #  # ]:          0 :             if ( eOldMode == NAV_LMODE_NONE )
     414                 :          0 :                 eNewMode = NAV_LMODE_AREAS;
     415                 :            :             else
     416                 :          0 :                 eNewMode = NAV_LMODE_NONE;
     417                 :            :         }
     418                 :          0 :         rDlg.SetListMode( eNewMode );
     419                 :          0 :         UpdateButtons();
     420                 :            :     }
     421                 :            :     else
     422   [ #  #  #  #  :          0 :         switch ( nSelId )
                      # ]
     423                 :            :         {
     424                 :            :             case IID_DATA:
     425                 :          0 :                 rDlg.MarkDataArea();
     426                 :          0 :                 break;
     427                 :            :             case IID_UP:
     428                 :          0 :                 rDlg.StartOfDataArea();
     429                 :          0 :                 break;
     430                 :            :             case IID_DOWN:
     431                 :          0 :                 rDlg.EndOfDataArea();
     432                 :          0 :                 break;
     433                 :            :             case IID_CHANGEROOT:
     434                 :          0 :                 rDlg.aLbEntries.ToggleRoot();
     435                 :          0 :                 UpdateButtons();
     436                 :          0 :                 break;
     437                 :            :         }
     438                 :          0 : }
     439                 :            : 
     440                 :          0 : void CommandToolBox::Select()
     441                 :            : {
     442                 :          0 :     Select( GetCurItemId() );
     443                 :          0 : }
     444                 :            : 
     445                 :            : //------------------------------------------------------------------------
     446                 :            : 
     447                 :          0 : void CommandToolBox::Click()
     448                 :            : {
     449                 :          0 : }
     450                 :            : 
     451                 :            : //------------------------------------------------------------------------
     452                 :            : 
     453                 :          0 : IMPL_LINK_NOARG(CommandToolBox, ToolBoxDropdownClickHdl)
     454                 :            : {
     455                 :            :     //  Das Popupmenue fuer den Dropmodus muss im Click (Button Down)
     456                 :            :     //  statt im Select (Button Up) aufgerufen werden.
     457                 :            : 
     458         [ #  # ]:          0 :     if ( GetCurItemId() == IID_DROPMODE )
     459                 :            :     {
     460 [ #  # ][ #  # ]:          0 :         ScPopupMenu aPop( ScResId( RID_POPUP_DROPMODE ) );
     461         [ #  # ]:          0 :         aPop.CheckItem( RID_DROPMODE_URL + rDlg.GetDropMode() );
     462 [ #  # ][ #  # ]:          0 :         aPop.Execute( this, GetItemRect(IID_DROPMODE), POPUPMENU_EXECUTE_DOWN );
     463                 :          0 :         sal_uInt16 nId = aPop.GetSelected();
     464                 :            : 
     465         [ #  # ]:          0 :         EndSelection();     // vor SetDropMode (SetDropMode ruft SetItemImage)
     466                 :            : 
     467 [ #  # ][ #  # ]:          0 :         if ( nId >= RID_DROPMODE_URL && nId <= RID_DROPMODE_COPY )
     468         [ #  # ]:          0 :             rDlg.SetDropMode( nId - RID_DROPMODE_URL );
     469                 :            : 
     470                 :            :         //  den gehighlighteten Button aufheben
     471                 :          0 :         Point aPoint;
     472         [ #  # ]:          0 :         MouseEvent aLeave( aPoint, 0, MOUSE_LEAVEWINDOW | MOUSE_SYNTHETIC );
     473 [ #  # ][ #  # ]:          0 :         MouseMove( aLeave );
     474                 :            :     }
     475                 :            : 
     476                 :          0 :     return 1;
     477                 :            : }
     478                 :            : 
     479                 :            : //------------------------------------------------------------------------
     480                 :            : 
     481                 :          0 : void CommandToolBox::UpdateButtons()
     482                 :            : {
     483                 :          0 :     NavListMode eMode = rDlg.eListMode;
     484                 :          0 :     CheckItem( IID_SCENARIOS,   eMode == NAV_LMODE_SCENARIOS );
     485                 :          0 :     CheckItem( IID_ZOOMOUT,     eMode != NAV_LMODE_NONE );
     486                 :            : 
     487                 :            :     //  Umschalten-Button:
     488 [ #  # ][ #  # ]:          0 :     if ( eMode == NAV_LMODE_SCENARIOS || eMode == NAV_LMODE_NONE )
     489                 :            :     {
     490                 :          0 :         EnableItem( IID_CHANGEROOT, false );
     491                 :          0 :         CheckItem( IID_CHANGEROOT, false );
     492                 :            :     }
     493                 :            :     else
     494                 :            :     {
     495                 :          0 :         EnableItem( IID_CHANGEROOT, sal_True );
     496                 :          0 :         sal_Bool bRootSet = rDlg.aLbEntries.GetRootType() != SC_CONTENT_ROOT;
     497                 :          0 :         CheckItem( IID_CHANGEROOT, bRootSet );
     498                 :            :     }
     499                 :            : 
     500                 :          0 :     sal_uInt16 nImageId = 0;
     501   [ #  #  #  # ]:          0 :     switch ( rDlg.nDropMode )
     502                 :            :     {
     503                 :          0 :         case SC_DROPMODE_URL:   nImageId = RID_IMG_DROP_URL;  break;
     504                 :          0 :         case SC_DROPMODE_LINK:  nImageId = RID_IMG_DROP_LINK; break;
     505                 :          0 :         case SC_DROPMODE_COPY:  nImageId = RID_IMG_DROP_COPY; break;
     506                 :            :     }
     507 [ #  # ][ #  # ]:          0 :     SetItemImage( IID_DROPMODE, Image(ScResId(nImageId)) );
                 [ #  # ]
     508                 :          0 : }
     509                 :            : 
     510                 :          0 : void CommandToolBox::InitImageList()
     511                 :            : {
     512                 :          0 :     ImageList& rImgLst = rDlg.aCmdImageList;
     513                 :            : 
     514                 :          0 :     sal_uInt16 nCount = GetItemCount();
     515         [ #  # ]:          0 :     for (sal_uInt16 i = 0; i < nCount; i++)
     516                 :            :     {
     517                 :          0 :         sal_uInt16 nId = GetItemId(i);
     518         [ #  # ]:          0 :         SetItemImage( nId, rImgLst.GetImage( nId ) );
     519                 :            :     }
     520                 :          0 : }
     521                 :            : 
     522                 :          0 : void CommandToolBox::DataChanged( const DataChangedEvent& rDCEvt )
     523                 :            : {
     524 [ #  # ][ #  # ]:          0 :     if ( rDCEvt.GetType() == DATACHANGED_SETTINGS && (rDCEvt.GetFlags() & SETTINGS_STYLE) )
                 [ #  # ]
     525                 :            :     {
     526                 :            :         //  update item images
     527                 :            : 
     528                 :          0 :         InitImageList();
     529                 :          0 :         UpdateButtons();    // drop mode
     530                 :            :     }
     531                 :            : 
     532                 :          0 :     ToolBox::DataChanged( rDCEvt );
     533                 :          0 : }
     534                 :            : 
     535                 :            : //==================================================================
     536                 :            : //  class ScNavigatorSettings
     537                 :            : //==================================================================
     538                 :            : 
     539                 :          0 : ScNavigatorSettings::ScNavigatorSettings() :
     540                 :            :     maExpandedVec( SC_CONTENT_COUNT, false ),
     541                 :            :     mnRootSelected( SC_CONTENT_ROOT ),
     542         [ #  # ]:          0 :     mnChildSelected( SC_CONTENT_NOCHILD )
     543                 :            : {
     544                 :          0 : }
     545                 :            : 
     546                 :            : //==================================================================
     547                 :            : //  class ScNavigatorDlgWrapper
     548                 :            : //==================================================================
     549                 :            : 
     550 [ +  - ][ #  # ]:         51 : SFX_IMPL_CHILDWINDOWCONTEXT( ScNavigatorDialogWrapper, SID_NAVIGATOR )
     551                 :            : 
     552                 :          0 : ScNavigatorDialogWrapper::ScNavigatorDialogWrapper(
     553                 :            :                                     Window*          pParent,
     554                 :            :                                     sal_uInt16           nId,
     555                 :            :                                     SfxBindings*     pBind,
     556                 :            :                                     SfxChildWinInfo* /* pInfo */ ) :
     557                 :          0 :         SfxChildWindowContext( nId )
     558                 :            : {
     559 [ #  # ][ #  # ]:          0 :     pNavigator = new ScNavigatorDlg( pBind, this, pParent );
     560                 :          0 :     SetWindow( pNavigator );
     561                 :            : 
     562                 :            :     //  Einstellungen muessen anderswo gemerkt werden,
     563                 :            :     //  pInfo geht uns (ausser der Groesse) nichts mehr an
     564                 :            : 
     565                 :          0 :     Size aInfoSize = pParent->GetOutputSizePixel();     // von aussen vorgegebene Groesse
     566                 :          0 :     Size aNavSize = pNavigator->GetOutputSizePixel();   // Default-Groesse
     567                 :            : 
     568                 :          0 :     aNavSize.Width()  = Max( aInfoSize.Width(),  aNavSize.Width() );
     569                 :          0 :     aNavSize.Height() = Max( aInfoSize.Height(), aNavSize.Height() );
     570                 :          0 :     pNavigator->nListModeHeight = Max( aNavSize.Height(), pNavigator->nListModeHeight );
     571                 :            : 
     572                 :            :     //  Die Groesse kann in einem anderen Modul geaendert worden sein,
     573                 :            :     //  deshalb muessen in Abhaengigkeit von der momentanen Groesse die
     574                 :            :     //  Inhalte eingeblendet werden oder nicht
     575                 :            : 
     576                 :          0 :     sal_Bool bSmall = ( aInfoSize.Height() <= pNavigator->aInitSize.Height() + SCNAV_MINTOL );
     577                 :          0 :     NavListMode eNavMode = NAV_LMODE_NONE;
     578         [ #  # ]:          0 :     if (!bSmall)
     579                 :            :     {
     580                 :            :         //  wenn Szenario aktiv war, wieder einschalten
     581                 :            : 
     582 [ #  # ][ #  # ]:          0 :         ScNavipiCfg& rCfg = SC_MOD()->GetNavipiCfg();
     583                 :          0 :         NavListMode eLastMode = (NavListMode) rCfg.GetListMode();
     584         [ #  # ]:          0 :         if ( eLastMode == NAV_LMODE_SCENARIOS )
     585                 :          0 :             eNavMode = NAV_LMODE_SCENARIOS;
     586                 :            :         else
     587                 :          0 :             eNavMode = NAV_LMODE_AREAS;
     588                 :            :     }
     589                 :            : 
     590                 :            :     //  Die Groesse des Floats nicht neu setzen (sal_False bei SetListMode), damit der
     591                 :            :     //  Navigator nicht aufgeklappt wird, wenn er minimiert war (#38872#).
     592                 :            : 
     593         [ #  # ]:          0 :     pNavigator->SetListMode( eNavMode, false );     // FALSE: Groesse des Float nicht setzen
     594                 :            : 
     595                 :            :     sal_uInt16 nCmdId;
     596   [ #  #  #  #  :          0 :     switch (eNavMode)
                      # ]
     597                 :            :     {
     598                 :          0 :         case NAV_LMODE_DOCS:        nCmdId = IID_DOCS;      break;
     599                 :          0 :         case NAV_LMODE_AREAS:       nCmdId = IID_AREAS;     break;
     600                 :          0 :         case NAV_LMODE_DBAREAS:     nCmdId = IID_DBAREAS;   break;
     601                 :          0 :         case NAV_LMODE_SCENARIOS:   nCmdId = IID_SCENARIOS; break;
     602                 :          0 :         default:                    nCmdId = 0;
     603                 :            :     }
     604         [ #  # ]:          0 :     if (nCmdId)
     605                 :            :     {
     606         [ #  # ]:          0 :         pNavigator->aTbxCmd.CheckItem( nCmdId );
     607         [ #  # ]:          0 :         pNavigator->DoResize();
     608                 :            :     }
     609                 :            : 
     610                 :          0 :     pNavigator->bFirstBig = ( nCmdId == 0 );    // dann spaeter
     611                 :          0 : }
     612                 :            : 
     613                 :          0 : void ScNavigatorDialogWrapper::Resizing( Size& rSize )
     614                 :            : {
     615                 :          0 :     ((ScNavigatorDlg*)GetWindow())->Resizing(rSize);
     616                 :          0 : }
     617                 :            : 
     618                 :            : //========================================================================
     619                 :            : // class ScNavigatorPI
     620                 :            : //========================================================================
     621                 :            : 
     622                 :            : #define CTRL_ITEMS 4
     623                 :            : 
     624                 :            : #define REGISTER_SLOT(i,id) \
     625                 :            :     ppBoundItems[i]=new ScNavigatorControllerItem(id,*this,rBindings);
     626                 :            : 
     627                 :          0 : ScNavigatorDlg::ScNavigatorDlg( SfxBindings* pB, SfxChildWindowContext* pCW, Window* pParent ) :
     628                 :            :         Window( pParent, ScResId(RID_SCDLG_NAVIGATOR) ),
     629                 :            :         rBindings   ( *pB ),                                // is used in CommandToolBox ctor
     630                 :            :         aCmdImageList( ScResId( IL_CMD ) ),
     631                 :            :         aFtCol      ( this, ScResId( FT_COL ) ),
     632                 :            :         aEdCol      ( this, ScResId( ED_COL ) ),
     633                 :            :         aFtRow      ( this, ScResId( FT_ROW ) ),
     634                 :            :         aEdRow      ( this, ScResId( ED_ROW ) ),
     635                 :            :         aTbxCmd     ( this, ScResId( TBX_CMD ) ),
     636                 :            :         aLbEntries  ( this, ScResId( LB_ENTRIES ) ),
     637                 :            :         aWndScenarios( this,ScResId( STR_QHLP_SCEN_LISTBOX), ScResId(STR_QHLP_SCEN_COMMENT)),
     638                 :            :         aLbDocuments( this, ScResId( LB_DOCUMENTS ) ),
     639                 :            :         aStrDragMode ( ScResId( STR_DRAGMODE ) ),
     640                 :            :         aStrDisplay  ( ScResId( STR_DISPLAY ) ),
     641                 :            :         aStrActiveWin( ScResId( STR_ACTIVEWIN ) ),
     642                 :            :         pContextWin ( pCW ),
     643                 :            :         pMarkArea   ( NULL ),
     644                 :            :         pViewData   ( NULL ),
     645                 :            :         nListModeHeight( 0 ),
     646                 :            :         nInitListHeight( 0 ),
     647                 :            :         eListMode   ( NAV_LMODE_NONE ),
     648                 :            :         nDropMode   ( SC_DROPMODE_URL ),
     649                 :            :         nCurCol     ( 0 ),
     650                 :            :         nCurRow     ( 0 ),
     651                 :            :         nCurTab     ( 0 ),
     652 [ #  # ][ #  # ]:          0 :         bFirstBig   ( false )
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
     653                 :            : {
     654 [ #  # ][ #  # ]:          0 :     ScNavipiCfg& rCfg = SC_MOD()->GetNavipiCfg();
     655                 :          0 :     nDropMode = rCfg.GetDragMode();
     656                 :            :     //  eListMode wird von aussen gesetzt, Root weiter unten
     657                 :            : 
     658         [ #  # ]:          0 :     aLbDocuments.SetDropDownLineCount(9);
     659                 :          0 :     rtl::OUString aOpen(" (");
     660         [ #  # ]:          0 :     aStrActive = aOpen;
     661 [ #  # ][ #  # ]:          0 :     aStrActive += String( ScResId( STR_ACTIVE ) );
         [ #  # ][ #  # ]
     662         [ #  # ]:          0 :     aStrActive += ')';                                      // " (aktiv)"
     663         [ #  # ]:          0 :     aStrNotActive = aOpen;
     664 [ #  # ][ #  # ]:          0 :     aStrNotActive += String( ScResId( STR_NOTACTIVE ) );
         [ #  # ][ #  # ]
     665         [ #  # ]:          0 :     aStrNotActive += ')';                                   // " (inaktiv)"
     666         [ #  # ]:          0 :     aStrHidden = aOpen;
     667 [ #  # ][ #  # ]:          0 :     aStrHidden += String( ScResId( STR_HIDDEN ) );
         [ #  # ][ #  # ]
     668         [ #  # ]:          0 :     aStrHidden += ')';                                      // " (versteckt)"
     669                 :            : 
     670 [ #  # ][ #  # ]:          0 :     aTitleBase = GetText();
                 [ #  # ]
     671                 :            : 
     672                 :            :     long nListboxYPos =
     673 [ #  # ][ #  # ]:          0 :         Max( aTbxCmd.GetPosPixel().Y() + aTbxCmd.GetSizePixel().Height(),
     674 [ #  # ][ #  # ]:          0 :              aEdRow.GetPosPixel().Y() + aEdRow.GetSizePixel().Height() ) + 4;
     675         [ #  # ]:          0 :     aLbEntries.SetPosSizePixel( 0, nListboxYPos, 0, 0, WINDOW_POSSIZE_Y);
     676                 :            : 
     677         [ #  # ]:          0 :     nBorderOffset = aLbEntries.GetPosPixel().X();
     678                 :            : 
     679         [ #  # ]:          0 :     aInitSize.Width()  =  aTbxCmd.GetPosPixel().X()
     680         [ #  # ]:          0 :                         + aTbxCmd.GetSizePixel().Width()
     681                 :          0 :                         + nBorderOffset;
     682         [ #  # ]:          0 :     aInitSize.Height() = aLbEntries.GetPosPixel().Y();
     683                 :            : 
     684         [ #  # ]:          0 :     nInitListHeight = aLbEntries.GetSizePixel().Height();
     685                 :          0 :     nListModeHeight =  aInitSize.Height()
     686                 :          0 :                      + nInitListHeight;
     687                 :            : 
     688         [ #  # ]:          0 :     ppBoundItems = new ScNavigatorControllerItem* [CTRL_ITEMS];
     689                 :            : 
     690         [ #  # ]:          0 :     rBindings.ENTERREGISTRATIONS();
     691                 :            :     //-----------------------------
     692 [ #  # ][ #  # ]:          0 :     REGISTER_SLOT( 0, SID_CURRENTCELL       );
     693 [ #  # ][ #  # ]:          0 :     REGISTER_SLOT( 1, SID_CURRENTTAB        );
     694 [ #  # ][ #  # ]:          0 :     REGISTER_SLOT( 2, SID_CURRENTDOC        );
     695 [ #  # ][ #  # ]:          0 :     REGISTER_SLOT( 3, SID_SELECT_SCENARIO   );
     696                 :            :     //-----------------------------
     697         [ #  # ]:          0 :     rBindings.LEAVEREGISTRATIONS();
     698                 :            : 
     699 [ #  # ][ #  # ]:          0 :     StartListening( *(SFX_APP()) );
     700         [ #  # ]:          0 :     StartListening( rBindings );
     701                 :            : 
     702         [ #  # ]:          0 :     aLbDocuments.Hide();        // bei NAV_LMODE_NONE gibts die nicht
     703                 :            : 
     704         [ #  # ]:          0 :     aLbEntries.InitWindowBits(sal_True);
     705                 :            : 
     706         [ #  # ]:          0 :     aLbEntries.SetSpaceBetweenEntries(0);
     707         [ #  # ]:          0 :     aLbEntries.SetSelectionMode( SINGLE_SELECTION );
     708                 :            :     aLbEntries.SetDragDropMode(     SV_DRAGDROP_CTRL_MOVE |
     709                 :            :                                     SV_DRAGDROP_CTRL_COPY |
     710         [ #  # ]:          0 :                                     SV_DRAGDROP_ENABLE_TOP );
     711                 :            : 
     712                 :            :     //  war eine Kategorie als Root ausgewaehlt?
     713                 :          0 :     sal_uInt16 nLastRoot = rCfg.GetRootType();
     714         [ #  # ]:          0 :     if ( nLastRoot )
     715         [ #  # ]:          0 :         aLbEntries.SetRootType( nLastRoot );
     716                 :            : 
     717         [ #  # ]:          0 :     aLbEntries.Refresh();
     718         [ #  # ]:          0 :     GetDocNames();
     719                 :            : 
     720         [ #  # ]:          0 :     aTbxCmd.UpdateButtons();
     721                 :            : 
     722         [ #  # ]:          0 :     UpdateColumn();
     723         [ #  # ]:          0 :     UpdateRow();
     724         [ #  # ]:          0 :     UpdateTable();
     725         [ #  # ]:          0 :     aLbEntries.Hide();
     726         [ #  # ]:          0 :     aWndScenarios.Hide();
     727 [ #  # ][ #  # ]:          0 :     aWndScenarios.SetPosPixel( aLbEntries.GetPosPixel() );
     728                 :            : 
     729         [ #  # ]:          0 :     aContentTimer.SetTimeoutHdl( LINK( this, ScNavigatorDlg, TimeHdl ) );
     730         [ #  # ]:          0 :     aContentTimer.SetTimeout( SC_CONTENT_TIMEOUT );
     731                 :            : 
     732         [ #  # ]:          0 :     FreeResource();
     733                 :            : 
     734         [ #  # ]:          0 :     aLbEntries.SetAccessibleRelationLabeledBy(&aLbEntries);
     735         [ #  # ]:          0 :     aTbxCmd.SetAccessibleRelationLabeledBy(&aTbxCmd);
     736         [ #  # ]:          0 :     aLbDocuments.SetAccessibleName(aStrActiveWin);
     737                 :          0 : }
     738                 :            : 
     739                 :            : //------------------------------------------------------------------------
     740                 :            : 
     741 [ #  # ][ #  # ]:          0 : ScNavigatorDlg::~ScNavigatorDlg()
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
     742                 :            : {
     743         [ #  # ]:          0 :     aContentTimer.Stop();
     744                 :            : 
     745                 :            :     sal_uInt16 i;
     746         [ #  # ]:          0 :     for ( i=0; i<CTRL_ITEMS; i++ )
     747 [ #  # ][ #  # ]:          0 :         delete ppBoundItems[i];
     748                 :            : 
     749         [ #  # ]:          0 :     delete [] ppBoundItems;
     750                 :          0 :     delete pMarkArea;
     751                 :            : 
     752 [ #  # ][ #  # ]:          0 :     EndListening( *(SFX_APP()) );
     753         [ #  # ]:          0 :     EndListening( rBindings );
     754         [ #  # ]:          0 : }
     755                 :            : 
     756                 :            : //------------------------------------------------------------------------
     757                 :            : 
     758                 :          0 : void ScNavigatorDlg::Resizing( Size& rNewSize )  // Size = Outputsize?
     759                 :            : {
     760                 :          0 :     FloatingWindow* pFloat = pContextWin->GetFloatingWindow();
     761         [ #  # ]:          0 :     if ( pFloat )
     762                 :            :     {
     763                 :          0 :         Size aMinOut = pFloat->GetMinOutputSizePixel();
     764                 :            : 
     765         [ #  # ]:          0 :         if ( rNewSize.Width() < aMinOut.Width() )
     766                 :          0 :             rNewSize.Width() = aMinOut.Width();
     767                 :            : 
     768         [ #  # ]:          0 :         if ( eListMode == NAV_LMODE_NONE )
     769                 :          0 :             rNewSize.Height() = aInitSize.Height();
     770                 :            :         else
     771                 :            :         {
     772         [ #  # ]:          0 :             if ( rNewSize.Height() < aMinOut.Height() )
     773                 :          0 :                 rNewSize.Height() = aMinOut.Height();
     774                 :            :         }
     775                 :            :     }
     776                 :          0 : }
     777                 :            : 
     778                 :            : 
     779                 :            : 
     780                 :          0 : void ScNavigatorDlg::Paint( const Rectangle& rRec )
     781                 :            : {
     782         [ #  # ]:          0 :     const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
     783                 :          0 :     Color aBgColor = rStyleSettings.GetFaceColor();
     784         [ #  # ]:          0 :     Wallpaper aBack( aBgColor );
     785                 :            : 
     786         [ #  # ]:          0 :     SetBackground( aBack );
     787         [ #  # ]:          0 :     aFtCol.SetBackground( aBack );
     788         [ #  # ]:          0 :     aFtRow.SetBackground( aBack );
     789                 :            : 
     790 [ #  # ][ #  # ]:          0 :     Window::Paint( rRec );
     791                 :          0 : }
     792                 :            : 
     793                 :          0 : void ScNavigatorDlg::DataChanged( const DataChangedEvent& rDCEvt )
     794                 :            : {
     795 [ #  # ][ #  # ]:          0 :     if ( rDCEvt.GetType() == DATACHANGED_SETTINGS && (rDCEvt.GetFlags() & SETTINGS_STYLE) )
                 [ #  # ]
     796                 :            :     {
     797                 :            :         //  toolbox images are exchanged in CommandToolBox::DataChanged
     798                 :          0 :         Invalidate();
     799                 :            :     }
     800                 :            : 
     801                 :          0 :     Window::DataChanged( rDCEvt );
     802                 :          0 : }
     803                 :            : 
     804                 :            : //------------------------------------------------------------------------
     805                 :            : 
     806                 :          0 : void ScNavigatorDlg::Resize()
     807                 :            : {
     808                 :          0 :     DoResize();
     809                 :          0 : }
     810                 :            : 
     811                 :            : //------------------------------------------------------------------------
     812                 :            : 
     813                 :          0 : void ScNavigatorDlg::DoResize()
     814                 :            : {
     815                 :          0 :     Size aNewSize = GetOutputSizePixel();
     816                 :          0 :     long nTotalHeight = aNewSize.Height();
     817                 :            : 
     818                 :            :     //  bei angedocktem Navigator wird das Fenster evtl. erst klein erzeugt,
     819                 :            :     //  dann kommt ein Resize auf die wirkliche Groesse -> dann Inhalte einschalten
     820                 :            : 
     821                 :          0 :     sal_Bool bSmall = ( nTotalHeight <= aInitSize.Height() + SCNAV_MINTOL );
     822 [ #  # ][ #  # ]:          0 :     if ( !bSmall && bFirstBig )
     823                 :            :     {
     824                 :            :         //  Inhalte laut Config wieder einschalten
     825                 :            : 
     826                 :          0 :         bFirstBig = false;
     827                 :          0 :         NavListMode eNavMode = NAV_LMODE_AREAS;
     828 [ #  # ][ #  # ]:          0 :         ScNavipiCfg& rCfg = SC_MOD()->GetNavipiCfg();
     829                 :          0 :         NavListMode eLastMode = (NavListMode) rCfg.GetListMode();
     830         [ #  # ]:          0 :         if ( eLastMode == NAV_LMODE_SCENARIOS )
     831                 :          0 :             eNavMode = NAV_LMODE_SCENARIOS;
     832         [ #  # ]:          0 :         SetListMode( eNavMode, false );         // FALSE: Groesse des Float nicht setzen
     833                 :            :     }
     834                 :            : 
     835                 :            :     //  auch wenn die Inhalte nicht sichtbar sind, die Groessen anpassen,
     836                 :            :     //  damit die Breite stimmt
     837                 :            : 
     838         [ #  # ]:          0 :     Point aEntryPos = aLbEntries.GetPosPixel();
     839         [ #  # ]:          0 :     Point aListPos = aLbDocuments.GetPosPixel();
     840                 :          0 :     aNewSize.Width() -= 2*nBorderOffset;
     841         [ #  # ]:          0 :     Size aDocSize = aLbDocuments.GetSizePixel();
     842                 :          0 :     aDocSize.Width() = aNewSize.Width();
     843                 :            : 
     844         [ #  # ]:          0 :     if(!bSmall)
     845                 :            :     {
     846                 :            : 
     847         [ #  # ]:          0 :         long nListHeight = aLbDocuments.GetSizePixel().Height();
     848                 :          0 :         aNewSize.Height() -= ( aEntryPos.Y() + nListHeight + 2*nBorderOffset );
     849         [ #  # ]:          0 :         if(aNewSize.Height()<0) aNewSize.Height()=0;
     850                 :            : 
     851                 :          0 :         aListPos.Y() = aEntryPos.Y() + aNewSize.Height() + nBorderOffset;
     852                 :            : 
     853 [ #  # ][ #  # ]:          0 :         if(aListPos.Y() > aLbEntries.GetPosPixel().Y())
     854         [ #  # ]:          0 :                             aLbDocuments.SetPosPixel( aListPos );
     855                 :            : 
     856                 :            :     }
     857         [ #  # ]:          0 :     aLbEntries.SetSizePixel( aNewSize );
     858         [ #  # ]:          0 :     aWndScenarios.SetSizePixel( aNewSize );
     859         [ #  # ]:          0 :     aLbDocuments.SetSizePixel( aDocSize );
     860                 :            : 
     861                 :          0 :     sal_Bool bListMode = (eListMode != NAV_LMODE_NONE);
     862         [ #  # ]:          0 :     FloatingWindow* pFloat = pContextWin->GetFloatingWindow();
     863 [ #  # ][ #  # ]:          0 :     if ( pFloat && bListMode )
     864                 :          0 :         nListModeHeight = nTotalHeight;
     865                 :          0 : }
     866                 :            : 
     867                 :            : //------------------------------------------------------------------------
     868                 :            : 
     869                 :          0 : void ScNavigatorDlg::Notify( SfxBroadcaster&, const SfxHint& rHint )
     870                 :            : {
     871         [ #  # ]:          0 :     if ( rHint.ISA(SfxSimpleHint) )
     872                 :            :     {
     873                 :          0 :         sal_uLong nHintId = ((SfxSimpleHint&)rHint).GetId();
     874                 :            : 
     875         [ #  # ]:          0 :         if ( nHintId == SC_HINT_DOCNAME_CHANGED )
     876                 :            :         {
     877                 :          0 :             aLbEntries.ActiveDocChanged();
     878                 :            :         }
     879         [ #  # ]:          0 :         else if ( NAV_LMODE_NONE == eListMode )
     880                 :            :         {
     881                 :            :             //  Tabellen hier nicht mehr
     882                 :            :         }
     883                 :            :         else
     884                 :            :         {
     885   [ #  #  #  #  :          0 :             switch ( nHintId )
             #  #  #  # ]
     886                 :            :             {
     887                 :            :                 case SC_HINT_TABLES_CHANGED:
     888                 :          0 :                     aLbEntries.Refresh( SC_CONTENT_TABLE );
     889                 :          0 :                     break;
     890                 :            : 
     891                 :            :                 case SC_HINT_DBAREAS_CHANGED:
     892                 :          0 :                     aLbEntries.Refresh( SC_CONTENT_DBAREA );
     893                 :          0 :                     break;
     894                 :            : 
     895                 :            :                 case SC_HINT_AREAS_CHANGED:
     896                 :          0 :                     aLbEntries.Refresh( SC_CONTENT_RANGENAME );
     897                 :          0 :                     break;
     898                 :            : 
     899                 :            :                 case SC_HINT_DRAW_CHANGED:
     900                 :          0 :                     aLbEntries.Refresh( SC_CONTENT_GRAPHIC );
     901                 :          0 :                     aLbEntries.Refresh( SC_CONTENT_OLEOBJECT );
     902                 :          0 :                     aLbEntries.Refresh( SC_CONTENT_DRAWING );
     903                 :          0 :                     break;
     904                 :            : 
     905                 :            :                 case SC_HINT_AREALINKS_CHANGED:
     906                 :          0 :                     aLbEntries.Refresh( SC_CONTENT_AREALINK );
     907                 :          0 :                     break;
     908                 :            : 
     909                 :            :                 //  SFX_HINT_DOCCHANGED kommt nicht nur bei Dokument-Wechsel
     910                 :            : 
     911                 :            :                 case SC_HINT_NAVIGATOR_UPDATEALL:
     912                 :          0 :                     UpdateAll();
     913                 :          0 :                     break;
     914                 :            : 
     915                 :            :                 case FID_DATACHANGED:
     916                 :            :                 case FID_ANYDATACHANGED:
     917                 :          0 :                     aContentTimer.Start();      // Notizen nicht sofort suchen
     918                 :          0 :                     break;
     919                 :            : 
     920                 :            :                 default:
     921                 :          0 :                     break;
     922                 :            :             }
     923                 :            :         }
     924                 :            :     }
     925         [ #  # ]:          0 :     else if ( rHint.ISA(SfxEventHint) )
     926                 :            :     {
     927                 :          0 :         sal_uLong nEventId = ((SfxEventHint&)rHint).GetEventId();
     928         [ #  # ]:          0 :         if ( nEventId == SFX_EVENT_ACTIVATEDOC )
     929                 :            :         {
     930                 :          0 :             aLbEntries.ActiveDocChanged();
     931                 :          0 :             UpdateAll();
     932                 :            :         }
     933                 :            :     }
     934                 :          0 : }
     935                 :            : 
     936                 :            : //------------------------------------------------------------------------
     937                 :            : 
     938                 :          0 : IMPL_LINK( ScNavigatorDlg, TimeHdl, Timer*, pTimer )
     939                 :            : {
     940         [ #  # ]:          0 :     if ( pTimer != &aContentTimer )
     941                 :          0 :         return 0;
     942                 :            : 
     943                 :          0 :     aLbEntries.Refresh( SC_CONTENT_NOTE );
     944                 :          0 :     return 0;
     945                 :            : }
     946                 :            : 
     947                 :            : //------------------------------------------------------------------------
     948                 :            : 
     949                 :          0 : void ScNavigatorDlg::SetDropMode(sal_uInt16 nNew)
     950                 :            : {
     951                 :          0 :     nDropMode = nNew;
     952                 :          0 :     aTbxCmd.UpdateButtons();
     953                 :            : 
     954                 :          0 :     ScNavipiCfg& rCfg = SC_MOD()->GetNavipiCfg();
     955                 :          0 :     rCfg.SetDragMode(nDropMode);
     956                 :          0 : }
     957                 :            : 
     958                 :            : //------------------------------------------------------------------------
     959                 :            : 
     960                 :          0 : void ScNavigatorDlg::CursorPosChanged()
     961                 :            : {
     962                 :            :     //! Eintraege selektieren ???
     963                 :            : 
     964                 :            : //  if ( GetDBAtCursor( aStrDbName ) )
     965                 :            : //  if ( GetAreaAtCursor( aStrAreaName ) )
     966                 :          0 : }
     967                 :            : 
     968                 :            : //------------------------------------------------------------------------
     969                 :            : 
     970                 :          0 : void ScNavigatorDlg::SetCurrentCell( SCCOL nColNo, SCROW nRowNo )
     971                 :            : {
     972 [ #  # ][ #  # ]:          0 :     if ( (nColNo+1 != nCurCol) || (nRowNo+1 != nCurRow) )
     973                 :            :     {
     974                 :            :         // SID_CURRENTCELL == Item #0 Cache leeren, damit das Setzen der
     975                 :            :         // aktuellen Zelle auch in zusammengefassten Bereichen funktioniert.
     976         [ #  # ]:          0 :         ppBoundItems[0]->ClearCache();
     977                 :            : 
     978                 :          0 :         ScAddress aScAddress( nColNo, nRowNo, 0 );
     979         [ #  # ]:          0 :         String  aAddr;
     980         [ #  # ]:          0 :         aScAddress.Format( aAddr, SCA_ABS );
     981                 :            : 
     982                 :          0 :         sal_Bool bUnmark = false;
     983 [ #  # ][ #  # ]:          0 :         if ( GetViewData() )
     984 [ #  # ][ #  # ]:          0 :             bUnmark = !pViewData->GetMarkData().IsCellMarked( nColNo, nRowNo );
     985                 :            : 
     986         [ #  # ]:          0 :         SfxStringItem   aPosItem( SID_CURRENTCELL, aAddr );
     987         [ #  # ]:          0 :         SfxBoolItem     aUnmarkItem( FN_PARAM_1, bUnmark );     // ggf. Selektion aufheben
     988                 :            : 
     989                 :            :         rBindings.GetDispatcher()->Execute( SID_CURRENTCELL,
     990                 :            :                                   SFX_CALLMODE_SYNCHRON | SFX_CALLMODE_RECORD,
     991 [ #  # ][ #  # ]:          0 :                                   &aPosItem, &aUnmarkItem, 0L );
         [ #  # ][ #  # ]
     992                 :            :     }
     993                 :          0 : }
     994                 :            : 
     995                 :          0 : void ScNavigatorDlg::SetCurrentCellStr( const String rName )
     996                 :            : {
     997         [ #  # ]:          0 :     ppBoundItems[0]->ClearCache();
     998         [ #  # ]:          0 :     SfxStringItem   aNameItem( SID_CURRENTCELL, rName );
     999                 :            : 
    1000                 :            :     rBindings.GetDispatcher()->Execute( SID_CURRENTCELL,
    1001                 :            :                               SFX_CALLMODE_SYNCHRON | SFX_CALLMODE_RECORD,
    1002 [ #  # ][ #  # ]:          0 :                               &aNameItem, 0L );
    1003                 :          0 : }
    1004                 :            : 
    1005                 :            : //------------------------------------------------------------------------
    1006                 :            : 
    1007                 :          0 : void ScNavigatorDlg::SetCurrentTable( SCTAB nTabNo )
    1008                 :            : {
    1009         [ #  # ]:          0 :     if ( nTabNo != nCurTab )
    1010                 :            :     {
    1011                 :            :         //  Tabelle fuer Basic ist 1-basiert
    1012         [ #  # ]:          0 :         SfxUInt16Item aTabItem( SID_CURRENTTAB, static_cast<sal_uInt16>(nTabNo) + 1 );
    1013                 :            :         rBindings.GetDispatcher()->Execute( SID_CURRENTTAB,
    1014                 :            :                                   SFX_CALLMODE_SYNCHRON | SFX_CALLMODE_RECORD,
    1015 [ #  # ][ #  # ]:          0 :                                   &aTabItem, 0L );
    1016                 :            :     }
    1017                 :          0 : }
    1018                 :            : 
    1019                 :          0 : void ScNavigatorDlg::SetCurrentTableStr( const rtl::OUString& rName )
    1020                 :            : {
    1021 [ #  # ][ #  # ]:          0 :     if (!GetViewData()) return;
    1022                 :            : 
    1023         [ #  # ]:          0 :     ScDocument* pDoc = pViewData->GetDocument();
    1024         [ #  # ]:          0 :     SCTAB nCount     = pDoc->GetTableCount();
    1025                 :          0 :     rtl::OUString aTabName;
    1026                 :            : 
    1027         [ #  # ]:          0 :     for ( SCTAB i=0; i<nCount; i++ )
    1028                 :            :     {
    1029         [ #  # ]:          0 :         pDoc->GetName( i, aTabName );
    1030         [ #  # ]:          0 :         if ( aTabName.equals(rName) )
    1031                 :            :         {
    1032         [ #  # ]:          0 :             SetCurrentTable( i );
    1033                 :            :             return;
    1034                 :            :         }
    1035         [ #  # ]:          0 :     }
    1036                 :            : }
    1037                 :            : 
    1038                 :            : //------------------------------------------------------------------------
    1039                 :            : 
    1040                 :          0 : void ScNavigatorDlg::SetCurrentObject( const String rName )
    1041                 :            : {
    1042         [ #  # ]:          0 :     SfxStringItem aNameItem( SID_CURRENTOBJECT, rName );
    1043                 :            :     rBindings.GetDispatcher()->Execute( SID_CURRENTOBJECT,
    1044                 :            :                               SFX_CALLMODE_SYNCHRON | SFX_CALLMODE_RECORD,
    1045 [ #  # ][ #  # ]:          0 :                               &aNameItem, 0L );
    1046                 :          0 : }
    1047                 :            : 
    1048                 :            : //------------------------------------------------------------------------
    1049                 :            : 
    1050                 :          0 : void ScNavigatorDlg::SetCurrentDoc( const String& rDocName )        // aktivieren
    1051                 :            : {
    1052         [ #  # ]:          0 :     SfxStringItem aDocItem( SID_CURRENTDOC, rDocName );
    1053                 :            :     rBindings.GetDispatcher()->Execute( SID_CURRENTDOC,
    1054                 :            :                               SFX_CALLMODE_SYNCHRON | SFX_CALLMODE_RECORD,
    1055 [ #  # ][ #  # ]:          0 :                               &aDocItem, 0L );
    1056                 :          0 : }
    1057                 :            : 
    1058                 :            : //------------------------------------------------------------------------
    1059                 :            : 
    1060                 :          0 : ScTabViewShell* ScNavigatorDlg::GetTabViewShell() const
    1061                 :            : {
    1062 [ #  # ][ #  # ]:          0 :     return PTR_CAST( ScTabViewShell, SfxViewShell::Current() );
    1063                 :            : }
    1064                 :            : 
    1065                 :            : //------------------------------------------------------------------------
    1066                 :            : 
    1067                 :          0 : ScNavigatorSettings* ScNavigatorDlg::GetNavigatorSettings()
    1068                 :            : {
    1069                 :            :     //  Don't store the settings pointer here, because the settings belong to
    1070                 :            :     //  the view, and the view may be closed while the navigator is open (reload).
    1071                 :            :     //  If the pointer is cached here again later for performance reasons, it has to
    1072                 :            :     //  be forgotten when the view is closed.
    1073                 :            : 
    1074                 :          0 :     ScTabViewShell* pViewSh = GetTabViewShell();
    1075         [ #  # ]:          0 :     return pViewSh ? pViewSh->GetNavigatorSettings() : NULL;
    1076                 :            : }
    1077                 :            : 
    1078                 :            : //------------------------------------------------------------------------
    1079                 :            : 
    1080                 :          0 : sal_Bool ScNavigatorDlg::GetViewData()
    1081                 :            : {
    1082                 :          0 :     ScTabViewShell* pViewSh = GetTabViewShell();
    1083         [ #  # ]:          0 :     pViewData = pViewSh ? pViewSh->GetViewData() : NULL;
    1084                 :            : 
    1085                 :          0 :     return ( pViewData != NULL );
    1086                 :            : }
    1087                 :            : 
    1088                 :            : //------------------------------------------------------------------------
    1089                 :            : 
    1090                 :          0 : void ScNavigatorDlg::UpdateColumn( const SCCOL* pCol )
    1091                 :            : {
    1092         [ #  # ]:          0 :     if ( pCol )
    1093                 :          0 :         nCurCol = *pCol;
    1094         [ #  # ]:          0 :     else if ( GetViewData() )
    1095                 :          0 :         nCurCol = pViewData->GetCurX() + 1;
    1096                 :            : 
    1097                 :          0 :     aEdCol.SetCol( nCurCol );
    1098                 :          0 :     CheckDataArea();
    1099                 :          0 : }
    1100                 :            : 
    1101                 :            : //------------------------------------------------------------------------
    1102                 :            : 
    1103                 :          0 : void ScNavigatorDlg::UpdateRow( const SCROW* pRow )
    1104                 :            : {
    1105         [ #  # ]:          0 :     if ( pRow )
    1106                 :          0 :         nCurRow = *pRow;
    1107         [ #  # ]:          0 :     else if ( GetViewData() )
    1108                 :          0 :         nCurRow = pViewData->GetCurY() + 1;
    1109                 :            : 
    1110                 :          0 :     aEdRow.SetRow( nCurRow );
    1111                 :          0 :     CheckDataArea();
    1112                 :          0 : }
    1113                 :            : 
    1114                 :            : //------------------------------------------------------------------------
    1115                 :            : 
    1116                 :          0 : void ScNavigatorDlg::UpdateTable( const SCTAB* pTab )
    1117                 :            : {
    1118         [ #  # ]:          0 :     if ( pTab )
    1119                 :          0 :         nCurTab = *pTab;
    1120         [ #  # ]:          0 :     else if ( GetViewData() )
    1121                 :          0 :         nCurTab = pViewData->GetTabNo();
    1122                 :            : 
    1123                 :          0 :     CheckDataArea();
    1124                 :          0 : }
    1125                 :            : 
    1126                 :            : //------------------------------------------------------------------------
    1127                 :            : 
    1128                 :          0 : void ScNavigatorDlg::UpdateAll()
    1129                 :            : {
    1130      [ #  #  # ]:          0 :     switch ( eListMode )
    1131                 :            :     {
    1132                 :            :         case NAV_LMODE_DOCS:
    1133                 :            :         case NAV_LMODE_DBAREAS:
    1134                 :            :         case NAV_LMODE_AREAS:
    1135                 :          0 :             aLbEntries.Refresh();
    1136                 :          0 :             break;
    1137                 :            : 
    1138                 :            :         case NAV_LMODE_NONE:
    1139                 :            :             //! ???
    1140                 :          0 :             break;
    1141                 :            : 
    1142                 :            :         default:
    1143                 :          0 :             break;
    1144                 :            :     }
    1145                 :            : 
    1146                 :          0 :     aContentTimer.Stop();       // dann nicht nochmal
    1147                 :          0 : }
    1148                 :            : 
    1149                 :            : //------------------------------------------------------------------------
    1150                 :            : 
    1151                 :          0 : void ScNavigatorDlg::SetListMode( NavListMode eMode, sal_Bool bSetSize )
    1152                 :            : {
    1153         [ #  # ]:          0 :     if ( eMode != eListMode )
    1154                 :            :     {
    1155         [ #  # ]:          0 :         if ( eMode != NAV_LMODE_NONE )
    1156                 :          0 :             bFirstBig = false;              // nicht mehr automatisch umschalten
    1157                 :            : 
    1158                 :          0 :         eListMode = eMode;
    1159                 :            : 
    1160   [ #  #  #  # ]:          0 :         switch ( eMode )
    1161                 :            :         {
    1162                 :            :             case NAV_LMODE_NONE:
    1163                 :          0 :                 ShowList( false, bSetSize );
    1164                 :          0 :                 break;
    1165                 :            : 
    1166                 :            :             case NAV_LMODE_AREAS:
    1167                 :            :             case NAV_LMODE_DBAREAS:
    1168                 :            :             case NAV_LMODE_DOCS:
    1169                 :          0 :                 aLbEntries.Refresh();
    1170                 :          0 :                 ShowList( sal_True, bSetSize );
    1171                 :          0 :                 break;
    1172                 :            : 
    1173                 :            :             case NAV_LMODE_SCENARIOS:
    1174                 :          0 :                 ShowScenarios( sal_True, bSetSize );
    1175                 :          0 :                 break;
    1176                 :            :         }
    1177                 :            : 
    1178                 :          0 :         aTbxCmd.UpdateButtons();
    1179                 :            : 
    1180         [ #  # ]:          0 :         if ( eMode != NAV_LMODE_NONE )
    1181                 :            :         {
    1182                 :          0 :             ScNavipiCfg& rCfg = SC_MOD()->GetNavipiCfg();
    1183                 :          0 :             rCfg.SetListMode( (sal_uInt16) eMode );
    1184                 :            :         }
    1185                 :            :     }
    1186                 :            : 
    1187         [ #  # ]:          0 :     if ( pMarkArea )
    1188                 :          0 :         UnmarkDataArea();
    1189                 :          0 : }
    1190                 :            : 
    1191                 :            : //------------------------------------------------------------------------
    1192                 :            : 
    1193                 :          0 : void ScNavigatorDlg::ShowList( sal_Bool bShow, sal_Bool bSetSize )
    1194                 :            : {
    1195         [ #  # ]:          0 :     FloatingWindow* pFloat = pContextWin->GetFloatingWindow();
    1196         [ #  # ]:          0 :     Size aSize = GetParent()->GetOutputSizePixel();
    1197                 :            : 
    1198         [ #  # ]:          0 :     if ( bShow )
    1199                 :            :     {
    1200                 :          0 :         Size aMinSize = aInitSize;
    1201                 :            : 
    1202                 :          0 :         aMinSize.Height() += nInitListHeight;
    1203         [ #  # ]:          0 :         if ( pFloat )
    1204         [ #  # ]:          0 :             pFloat->SetMinOutputSizePixel( aMinSize );
    1205                 :          0 :         aSize.Height() = nListModeHeight;
    1206         [ #  # ]:          0 :         aLbEntries.Show();
    1207         [ #  # ]:          0 :         aLbDocuments.Show();
    1208                 :            :     }
    1209                 :            :     else
    1210                 :            :     {
    1211         [ #  # ]:          0 :         if ( pFloat )
    1212                 :            :         {
    1213         [ #  # ]:          0 :             pFloat->SetMinOutputSizePixel( aInitSize );
    1214                 :          0 :             nListModeHeight = aSize.Height();
    1215                 :            :         }
    1216                 :          0 :         aSize.Height() = aInitSize.Height();
    1217         [ #  # ]:          0 :         aLbEntries.Hide();
    1218         [ #  # ]:          0 :         aLbDocuments.Hide();
    1219                 :            :     }
    1220         [ #  # ]:          0 :     aWndScenarios.Hide();
    1221                 :            : 
    1222         [ #  # ]:          0 :     if ( pFloat )
    1223                 :            :     {
    1224         [ #  # ]:          0 :         if ( bSetSize )
    1225         [ #  # ]:          0 :             pFloat->SetOutputSizePixel( aSize );
    1226                 :            :     }
    1227                 :            :     else
    1228                 :            :     {
    1229         [ #  # ]:          0 :         SfxNavigator* pNav = (SfxNavigator*)GetParent();
    1230                 :          0 :         Size aFloating = pNav->GetFloatingSize();
    1231                 :          0 :         aFloating.Height() = aSize.Height();
    1232                 :          0 :         pNav->SetFloatingSize( aFloating );
    1233                 :            :     }
    1234                 :          0 : }
    1235                 :            : 
    1236                 :            : //------------------------------------------------------------------------
    1237                 :            : 
    1238                 :          0 : void ScNavigatorDlg::ShowScenarios( sal_Bool bShow, sal_Bool bSetSize )
    1239                 :            : {
    1240         [ #  # ]:          0 :     FloatingWindow* pFloat = pContextWin->GetFloatingWindow();
    1241         [ #  # ]:          0 :     Size aSize = GetParent()->GetOutputSizePixel();
    1242                 :            : 
    1243         [ #  # ]:          0 :     if ( bShow )
    1244                 :            :     {
    1245                 :          0 :         Size aMinSize = aInitSize;
    1246                 :          0 :         aMinSize.Height() += nInitListHeight;
    1247         [ #  # ]:          0 :         if ( pFloat )
    1248         [ #  # ]:          0 :             pFloat->SetMinOutputSizePixel( aMinSize );
    1249                 :          0 :         aSize.Height() = nListModeHeight;
    1250                 :            : 
    1251         [ #  # ]:          0 :         rBindings.Invalidate( SID_SELECT_SCENARIO );
    1252         [ #  # ]:          0 :         rBindings.Update( SID_SELECT_SCENARIO );
    1253                 :            : 
    1254         [ #  # ]:          0 :         aWndScenarios.Show();
    1255         [ #  # ]:          0 :         aLbDocuments.Show();
    1256                 :            :     }
    1257                 :            :     else
    1258                 :            :     {
    1259         [ #  # ]:          0 :         if ( pFloat )
    1260                 :            :         {
    1261         [ #  # ]:          0 :             pFloat->SetMinOutputSizePixel( aInitSize );
    1262                 :          0 :             nListModeHeight = aSize.Height();
    1263                 :            :         }
    1264                 :          0 :         aSize.Height() = aInitSize.Height();
    1265         [ #  # ]:          0 :         aWndScenarios.Hide();
    1266         [ #  # ]:          0 :         aLbDocuments.Hide();
    1267                 :            :     }
    1268         [ #  # ]:          0 :     aLbEntries.Hide();
    1269                 :            : 
    1270         [ #  # ]:          0 :     if ( pFloat )
    1271                 :            :     {
    1272         [ #  # ]:          0 :         if ( bSetSize )
    1273         [ #  # ]:          0 :             pFloat->SetOutputSizePixel( aSize );
    1274                 :            :     }
    1275                 :            :     else
    1276                 :            :     {
    1277         [ #  # ]:          0 :         SfxNavigator* pNav = (SfxNavigator*)GetParent();
    1278                 :          0 :         Size aFloating = pNav->GetFloatingSize();
    1279                 :          0 :         aFloating.Height() = aSize.Height();
    1280                 :          0 :         pNav->SetFloatingSize( aFloating );
    1281                 :            :     }
    1282                 :          0 : }
    1283                 :            : 
    1284                 :            : 
    1285                 :            : //------------------------------------------------------------------------
    1286                 :            : //
    1287                 :            : //      Dokumente fuer Dropdown-Listbox
    1288                 :            : //
    1289                 :            : //------------------------------------------------------------------------
    1290                 :            : 
    1291                 :          0 : void ScNavigatorDlg::GetDocNames( const String* pManualSel )
    1292                 :            : {
    1293         [ #  # ]:          0 :     aLbDocuments.Clear();
    1294         [ #  # ]:          0 :     aLbDocuments.SetUpdateMode( false );
    1295                 :            : 
    1296 [ #  # ][ #  # ]:          0 :     ScDocShell* pCurrentSh = PTR_CAST( ScDocShell, SfxObjectShell::Current() );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
    1297                 :            : 
    1298         [ #  # ]:          0 :     String aSelEntry;
    1299         [ #  # ]:          0 :     SfxObjectShell* pSh = SfxObjectShell::GetFirst();
    1300         [ #  # ]:          0 :     while ( pSh )
    1301                 :            :     {
    1302 [ #  # ][ #  # ]:          0 :         if ( pSh->ISA(ScDocShell) )
                 [ #  # ]
    1303                 :            :         {
    1304         [ #  # ]:          0 :             String aName = pSh->GetTitle();
    1305         [ #  # ]:          0 :             String aEntry = aName;
    1306         [ #  # ]:          0 :             if (pSh == pCurrentSh)
    1307         [ #  # ]:          0 :                 aEntry += aStrActive;
    1308                 :            :             else
    1309         [ #  # ]:          0 :                 aEntry += aStrNotActive;
    1310         [ #  # ]:          0 :             aLbDocuments.InsertEntry( aEntry );
    1311                 :            : 
    1312 [ #  # ][ #  # ]:          0 :             if ( pManualSel ? ( aName == *pManualSel )
    1313         [ #  # ]:          0 :                             : ( pSh == pCurrentSh ) )
    1314 [ #  # ][ #  # ]:          0 :                 aSelEntry = aEntry;                     // kompletter Eintrag zum Selektieren
                 [ #  # ]
    1315                 :            :         }
    1316                 :            : 
    1317         [ #  # ]:          0 :         pSh = SfxObjectShell::GetNext( *pSh );
    1318                 :            :     }
    1319                 :            : 
    1320         [ #  # ]:          0 :     aLbDocuments.InsertEntry( aStrActiveWin );
    1321                 :            : 
    1322         [ #  # ]:          0 :     String aHidden =  aLbEntries.GetHiddenTitle();
    1323         [ #  # ]:          0 :     if (aHidden.Len())
    1324                 :            :     {
    1325         [ #  # ]:          0 :         String aEntry = aHidden;
    1326         [ #  # ]:          0 :         aEntry += aStrHidden;
    1327         [ #  # ]:          0 :         aLbDocuments.InsertEntry( aEntry );
    1328                 :            : 
    1329 [ #  # ][ #  # ]:          0 :         if ( pManualSel && aHidden == *pManualSel )
         [ #  # ][ #  # ]
    1330 [ #  # ][ #  # ]:          0 :             aSelEntry = aEntry;
    1331                 :            :     }
    1332                 :            : 
    1333         [ #  # ]:          0 :     aLbDocuments.SetUpdateMode( sal_True );
    1334                 :            : 
    1335 [ #  # ][ #  # ]:          0 :     aLbDocuments.SelectEntry( aSelEntry );
                 [ #  # ]
    1336                 :          0 : }
    1337                 :            : 
    1338                 :            : //------------------------------------------------------------------------
    1339                 :            : 
    1340                 :          0 : void ScNavigatorDlg::MarkDataArea()
    1341                 :            : {
    1342                 :          0 :     ScTabViewShell* pViewSh = GetTabViewShell();
    1343                 :            : 
    1344         [ #  # ]:          0 :     if ( pViewSh )
    1345                 :            :     {
    1346         [ #  # ]:          0 :         if ( !pMarkArea )
    1347 [ #  # ][ #  # ]:          0 :             pMarkArea = new ScArea;
    1348                 :            : 
    1349         [ #  # ]:          0 :         pViewSh->MarkDataArea();
    1350                 :          0 :         ScRange aMarkRange;
    1351 [ #  # ][ #  # ]:          0 :         pViewSh->GetViewData()->GetMarkData().GetMarkArea(aMarkRange);
    1352                 :          0 :         pMarkArea->nColStart = aMarkRange.aStart.Col();
    1353                 :          0 :         pMarkArea->nRowStart = aMarkRange.aStart.Row();
    1354                 :          0 :         pMarkArea->nColEnd = aMarkRange.aEnd.Col();
    1355                 :          0 :         pMarkArea->nRowEnd = aMarkRange.aEnd.Row();
    1356                 :          0 :         pMarkArea->nTab = aMarkRange.aStart.Tab();
    1357                 :            :     }
    1358                 :          0 : }
    1359                 :            : 
    1360                 :            : //------------------------------------------------------------------------
    1361                 :            : 
    1362                 :          0 : void ScNavigatorDlg::UnmarkDataArea()
    1363                 :            : {
    1364                 :          0 :     ScTabViewShell* pViewSh = GetTabViewShell();
    1365                 :            : 
    1366         [ #  # ]:          0 :     if ( pViewSh )
    1367                 :            :     {
    1368                 :          0 :         pViewSh->Unmark();
    1369                 :          0 :         DELETEZ( pMarkArea );
    1370                 :            :     }
    1371                 :          0 : }
    1372                 :            : 
    1373                 :            : //------------------------------------------------------------------------
    1374                 :            : 
    1375                 :          0 : void ScNavigatorDlg::CheckDataArea()
    1376                 :            : {
    1377 [ #  # ][ #  # ]:          0 :     if ( aTbxCmd.IsItemChecked( IID_DATA ) && pMarkArea )
                 [ #  # ]
    1378                 :            :     {
    1379 [ #  # ][ #  # ]:          0 :         if (   nCurTab   != pMarkArea->nTab
         [ #  # ][ #  # ]
                 [ #  # ]
    1380                 :            :             || nCurCol <  pMarkArea->nColStart+1
    1381                 :            :             || nCurCol >  pMarkArea->nColEnd+1
    1382                 :            :             || nCurRow <  pMarkArea->nRowStart+1
    1383                 :            :             || nCurRow >  pMarkArea->nRowEnd+1 )
    1384                 :            :         {
    1385                 :          0 :             aTbxCmd.SetItemState( IID_DATA, TriState(STATE_CHECK) );
    1386                 :          0 :             aTbxCmd.Select( IID_DATA );
    1387                 :            :         }
    1388                 :            :     }
    1389                 :          0 : }
    1390                 :            : 
    1391                 :            : //------------------------------------------------------------------------
    1392                 :            : 
    1393                 :          0 : void ScNavigatorDlg::StartOfDataArea()
    1394                 :            : {
    1395                 :            :     //  pMarkArea auswerten ???
    1396                 :            : 
    1397         [ #  # ]:          0 :     if ( GetViewData() )
    1398                 :            :     {
    1399         [ #  # ]:          0 :         ScMarkData& rMark = pViewData->GetMarkData();
    1400                 :          0 :         ScRange aMarkRange;
    1401         [ #  # ]:          0 :         rMark.GetMarkArea( aMarkRange );
    1402                 :            : 
    1403                 :          0 :         SCCOL nCol = aMarkRange.aStart.Col();
    1404                 :          0 :         SCROW nRow = aMarkRange.aStart.Row();
    1405                 :            : 
    1406 [ #  # ][ #  # ]:          0 :         if ( (nCol+1 != aEdCol.GetCol()) || (nRow+1 != aEdRow.GetRow()) )
         [ #  # ][ #  # ]
    1407         [ #  # ]:          0 :             SetCurrentCell( nCol, nRow );
    1408                 :            :     }
    1409                 :          0 : }
    1410                 :            : 
    1411                 :            : //------------------------------------------------------------------------
    1412                 :            : 
    1413                 :          0 : void ScNavigatorDlg::EndOfDataArea()
    1414                 :            : {
    1415                 :            :     //  pMarkArea auswerten ???
    1416                 :            : 
    1417         [ #  # ]:          0 :     if ( GetViewData() )
    1418                 :            :     {
    1419         [ #  # ]:          0 :         ScMarkData& rMark = pViewData->GetMarkData();
    1420                 :          0 :         ScRange aMarkRange;
    1421         [ #  # ]:          0 :         rMark.GetMarkArea( aMarkRange );
    1422                 :            : 
    1423                 :          0 :         SCCOL nCol = aMarkRange.aEnd.Col();
    1424                 :          0 :         SCROW nRow = aMarkRange.aEnd.Row();
    1425                 :            : 
    1426 [ #  # ][ #  # ]:          0 :         if ( (nCol+1 != aEdCol.GetCol()) || (nRow+1 != aEdRow.GetRow()) )
         [ #  # ][ #  # ]
    1427         [ #  # ]:          0 :             SetCurrentCell( nCol, nRow );
    1428                 :            :     }
    1429                 :          0 : }
    1430                 :            : 
    1431                 :            : //------------------------------------------------------------------------
    1432                 :            : 
    1433                 :          0 : SfxChildAlignment ScNavigatorDlg::CheckAlignment(
    1434                 :            :                             SfxChildAlignment eActAlign, SfxChildAlignment eAlign )
    1435                 :            : {
    1436                 :            :     SfxChildAlignment eRetAlign;
    1437                 :            : 
    1438                 :            :     //! kein Andocken, wenn Listbox nicht da ???
    1439                 :            : 
    1440      [ #  #  # ]:          0 :     switch (eAlign)
    1441                 :            :     {
    1442                 :            :         case SFX_ALIGN_TOP:
    1443                 :            :         case SFX_ALIGN_HIGHESTTOP:
    1444                 :            :         case SFX_ALIGN_LOWESTTOP:
    1445                 :            :         case SFX_ALIGN_BOTTOM:
    1446                 :            :         case SFX_ALIGN_LOWESTBOTTOM:
    1447                 :            :         case SFX_ALIGN_HIGHESTBOTTOM:
    1448                 :          0 :             eRetAlign = eActAlign;              // nicht erlaubt
    1449                 :          0 :             break;
    1450                 :            : 
    1451                 :            :         case SFX_ALIGN_LEFT:
    1452                 :            :         case SFX_ALIGN_RIGHT:
    1453                 :            :         case SFX_ALIGN_FIRSTLEFT:
    1454                 :            :         case SFX_ALIGN_LASTLEFT:
    1455                 :            :         case SFX_ALIGN_FIRSTRIGHT:
    1456                 :            :         case SFX_ALIGN_LASTRIGHT:
    1457                 :          0 :             eRetAlign = eAlign;                 // erlaubt
    1458                 :          0 :             break;
    1459                 :            : 
    1460                 :            :         default:
    1461                 :          0 :             eRetAlign = eAlign;
    1462                 :          0 :             break;
    1463                 :            :     }
    1464                 :          0 :     return eRetAlign;
    1465 [ +  - ][ +  - ]:        153 : }
    1466                 :            : 
    1467                 :            : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10