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

           Branch data     Line data    Source code
       1                 :            : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2                 :            : /*************************************************************************
       3                 :            :  *
       4                 :            :  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       5                 :            :  *
       6                 :            :  * Copyright 2000, 2010 Oracle and/or its affiliates.
       7                 :            :  *
       8                 :            :  * OpenOffice.org - a multi-platform office productivity suite
       9                 :            :  *
      10                 :            :  * This file is part of OpenOffice.org.
      11                 :            :  *
      12                 :            :  * OpenOffice.org is free software: you can redistribute it and/or modify
      13                 :            :  * it under the terms of the GNU Lesser General Public License version 3
      14                 :            :  * only, as published by the Free Software Foundation.
      15                 :            :  *
      16                 :            :  * OpenOffice.org is distributed in the hope that it will be useful,
      17                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      18                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      19                 :            :  * GNU Lesser General Public License version 3 for more details
      20                 :            :  * (a copy is included in the LICENSE file that accompanied this code).
      21                 :            :  *
      22                 :            :  * You should have received a copy of the GNU Lesser General Public License
      23                 :            :  * version 3 along with OpenOffice.org.  If not, see
      24                 :            :  * <http://www.openoffice.org/license.html>
      25                 :            :  * for a copy of the LGPLv3 License.
      26                 :            :  *
      27                 :            :  ************************************************************************/
      28                 :            : 
      29                 :            : #include <tools/urlobj.hxx>
      30                 :            : #include <unotools/localfilehelper.hxx>
      31                 :            : #include <sfx2/imgmgr.hxx>
      32                 :            : #include <sfx2/fcontnr.hxx>
      33                 :            : #include <svl/eitem.hxx>
      34                 :            : #include <svl/stritem.hxx>
      35                 :            : #include <sfx2/docfilt.hxx>
      36                 :            : #include <sfx2/docfile.hxx>
      37                 :            : #include <svl/intitem.hxx>
      38                 :            : #include <sfx2/dispatch.hxx>
      39                 :            : #include <svx/svxids.hrc>
      40                 :            : #include <vcl/menu.hxx>
      41                 :            : 
      42                 :            : #include <sfx2/viewfrm.hxx>
      43                 :            : #include <sfx2/dockwin.hxx>
      44                 :            : #include <sfx2/sfxresid.hxx>
      45                 :            : 
      46                 :            : #include "pres.hxx"
      47                 :            : #include "navigatr.hxx"
      48                 :            : #include "navigatr.hrc"
      49                 :            : #include "pgjump.hxx"
      50                 :            : #include "app.hrc"
      51                 :            : #include "strings.hrc"
      52                 :            : #include "res_bmp.hrc"
      53                 :            : #include "drawdoc.hxx"
      54                 :            : #include "DrawDocShell.hxx"
      55                 :            : #include "sdresid.hxx"
      56                 :            : #include "ViewShell.hxx"
      57                 :            : #include "ViewShellBase.hxx"
      58                 :            : #include "DrawViewShell.hxx"
      59                 :            : #include "slideshow.hxx"
      60                 :            : #include "FrameView.hxx"
      61                 :            : #include "helpids.h"
      62                 :            : 
      63                 :            : namespace {
      64                 :            : static const sal_uInt16 nShowNamedShapesFilter=1;
      65                 :            : static const sal_uInt16 nShowAllShapesFilter=2;
      66                 :            : }
      67                 :            : 
      68                 :            : /*************************************************************************
      69                 :            : |*  SdNavigatorWin - FloatingWindow
      70                 :            : \************************************************************************/
      71                 :            : 
      72                 :          0 : SdNavigatorWin::SdNavigatorWin(
      73                 :            :     ::Window* pParent,
      74                 :            :     ::sd::NavigatorChildWindow* pChWinCtxt,
      75                 :            :     const SdResId& rSdResId,
      76                 :            :     SfxBindings* pInBindings )
      77                 :            : :   ::Window( pParent, rSdResId )
      78                 :            : ,   maToolbox        ( this, SdResId( 1 ) )
      79                 :            : ,   maTlbObjects( this, SdResId( TLB_OBJECTS ) )
      80                 :            : ,   maLbDocs         ( this, SdResId( LB_DOCS ) )
      81                 :            : ,   mpChildWinContext( pChWinCtxt )
      82                 :            : ,   mbDocImported   ( sal_False )
      83                 :            :     // Bei Aenderung des DragTypes: SelectionMode der TLB anpassen!
      84                 :            : ,   meDragType      ( NAVIGATOR_DRAGTYPE_EMBEDDED )
      85                 :            : ,   mpBindings      ( pInBindings )
      86 [ #  # ][ #  # ]:          0 : ,   maImageList     ( SdResId( IL_NAVIGATR ) )
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
      87                 :            : {
      88         [ #  # ]:          0 :     maTlbObjects.SetViewFrame( mpBindings->GetDispatcher()->GetFrame() );
      89                 :            : 
      90         [ #  # ]:          0 :     FreeResource();
      91                 :            : 
      92 [ #  # ][ #  # ]:          0 :     maTlbObjects.SetAccessibleName(String(SdResId(STR_OBJECTS_TREE)));
         [ #  # ][ #  # ]
      93                 :            : 
      94 [ #  # ][ #  # ]:          0 :     mpNavigatorCtrlItem = new SdNavigatorControllerItem( SID_NAVIGATOR_STATE, this, mpBindings );
      95 [ #  # ][ #  # ]:          0 :     mpPageNameCtrlItem = new SdPageNameControllerItem( SID_NAVIGATOR_PAGENAME, this, mpBindings );
      96                 :            : 
      97         [ #  # ]:          0 :     ApplyImageList(); // load images *before* calculating sizes to get something useful !!!
      98                 :            : 
      99         [ #  # ]:          0 :     Size aTbxSize( maToolbox.CalcWindowSizePixel() );
     100         [ #  # ]:          0 :     maToolbox.SetOutputSizePixel( aTbxSize );
     101         [ #  # ]:          0 :     maToolbox.SetSelectHdl( LINK( this, SdNavigatorWin, SelectToolboxHdl ) );
     102         [ #  # ]:          0 :     maToolbox.SetClickHdl( LINK( this, SdNavigatorWin, ClickToolboxHdl ) );
     103 [ #  # ][ #  # ]:          0 :     maToolbox.SetDropdownClickHdl( LINK(this, SdNavigatorWin, DropdownClickToolBoxHdl) );
     104 [ #  # ][ #  # ]:          0 :     maToolbox.SetItemBits( TBI_DRAGTYPE, maToolbox.GetItemBits( TBI_DRAGTYPE ) | TIB_DROPDOWNONLY );
     105                 :            : 
     106                 :            :     // Shape filter drop down menu.
     107                 :            :     maToolbox.SetItemBits(TBI_SHAPE_FILTER,
     108 [ #  # ][ #  # ]:          0 :         maToolbox.GetItemBits(TBI_SHAPE_FILTER) | TIB_DROPDOWNONLY);
     109                 :            : 
     110                 :            :     // TreeListBox
     111                 :            :     // set position below toolbox
     112 [ #  # ][ #  # ]:          0 :     long nListboxYPos = maToolbox.GetPosPixel().Y() + maToolbox.GetSizePixel().Height() + 4;
     113         [ #  # ]:          0 :     maTlbObjects.SetPosSizePixel( 0, nListboxYPos, 0, 0, WINDOW_POSSIZE_Y );
     114         [ #  # ]:          0 :     maTlbObjects.SetDoubleClickHdl( LINK( this, SdNavigatorWin, ClickObjectHdl ) );
     115         [ #  # ]:          0 :     maTlbObjects.SetSelectionMode( SINGLE_SELECTION );
     116                 :            :     // set focus to listbox, otherwise it is in the toolbox which is only useful
     117                 :            :     // for keyboard navigation
     118         [ #  # ]:          0 :     maTlbObjects.GrabFocus();
     119                 :            : 
     120                 :            :     // DragTypeListBox
     121         [ #  # ]:          0 :     maLbDocs.SetSelectHdl( LINK( this, SdNavigatorWin, SelectDocumentHdl ) );
     122                 :            :     // set position below treelistbox
     123 [ #  # ][ #  # ]:          0 :     nListboxYPos = maTlbObjects.GetPosPixel().Y() + maTlbObjects.GetSizePixel().Height() + 4;
     124         [ #  # ]:          0 :     maLbDocs.SetPosSizePixel( 0, nListboxYPos, 0, 0, WINDOW_POSSIZE_Y );
     125                 :            : 
     126                 :            :     // set min outputsize after all sizes are known
     127         [ #  # ]:          0 :     long nFullHeight = nListboxYPos + maLbDocs.GetSizePixel().Height() + 4;
     128                 :          0 :     maSize = GetOutputSizePixel();
     129         [ #  # ]:          0 :     if( maSize.Height() < nFullHeight )
     130                 :            :     {
     131                 :          0 :         maSize.Height() = nFullHeight;
     132         [ #  # ]:          0 :         SetOutputSizePixel( maSize );
     133                 :            :     }
     134                 :          0 :     maMinSize = maSize;
     135         [ #  # ]:          0 :     long nMinWidth = 2*maToolbox.GetPosPixel().X() + aTbxSize.Width(); // never clip the toolbox
     136         [ #  # ]:          0 :     if( nMinWidth > maMinSize.Width() )
     137                 :          0 :         maMinSize.Width() = nMinWidth;
     138                 :          0 :     maMinSize.Height() -= 40;
     139 [ #  # ][ #  # ]:          0 :     ((SfxDockingWindow*)GetParent())->SetMinOutputSizePixel( maMinSize );
     140                 :            : 
     141                 :            :     // InitTlb; Wird ueber Slot initiiert
     142         [ #  # ]:          0 :     SfxBoolItem aItem( SID_NAVIGATOR_INIT, sal_True );
     143                 :            :     mpBindings->GetDispatcher()->Execute(
     144 [ #  # ][ #  # ]:          0 :         SID_NAVIGATOR_INIT, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD, &aItem, 0L );
     145                 :            : 
     146                 :          0 : }
     147                 :            : 
     148                 :            : // -----------------------------------------------------------------------
     149                 :            : 
     150 [ #  # ][ #  # ]:          0 : SdNavigatorWin::~SdNavigatorWin()
         [ #  # ][ #  # ]
                 [ #  # ]
     151                 :            : {
     152 [ #  # ][ #  # ]:          0 :     delete mpNavigatorCtrlItem;
     153 [ #  # ][ #  # ]:          0 :     delete mpPageNameCtrlItem;
     154         [ #  # ]:          0 : }
     155                 :            : 
     156                 :            : // -----------------------------------------------------------------------
     157                 :            : 
     158                 :          0 : void SdNavigatorWin::InitTreeLB( const SdDrawDocument* pDoc )
     159                 :            : {
     160                 :          0 :     SdDrawDocument* pNonConstDoc = (SdDrawDocument*) pDoc; // const as const can...
     161                 :          0 :     ::sd::DrawDocShell* pDocShell = pNonConstDoc->GetDocSh();
     162 [ #  # ][ #  # ]:          0 :     String aDocShName( pDocShell->GetName() );
     163                 :          0 :     ::sd::ViewShell* pViewShell = pDocShell->GetViewShell();
     164                 :            : 
     165                 :            :     // Restore the 'ShowAllShapes' flag from the last time (in this session)
     166                 :            :     // that the navigator was shown.
     167         [ #  # ]:          0 :     if (pViewShell != NULL)
     168                 :            :     {
     169         [ #  # ]:          0 :         ::sd::FrameView* pFrameView = pViewShell->GetFrameView();
     170         [ #  # ]:          0 :         if (pFrameView != NULL)
     171 [ #  # ][ #  # ]:          0 :             maTlbObjects.SetShowAllShapes(pFrameView->IsNavigatorShowingAllShapes(), false);
     172                 :            :     }
     173                 :            : 
     174                 :            :     // Disable the shape filter drop down menu when there is a running slide
     175                 :            :     // show.
     176 [ #  # ][ #  # ]:          0 :     if (pViewShell!=NULL && sd::SlideShow::IsRunning( pViewShell->GetViewShellBase() ))
         [ #  # ][ #  # ]
                 [ #  # ]
     177         [ #  # ]:          0 :         maToolbox.EnableItem(TBI_SHAPE_FILTER, sal_False);
     178                 :            :     else
     179         [ #  # ]:          0 :         maToolbox.EnableItem(TBI_SHAPE_FILTER);
     180                 :            : 
     181 [ #  # ][ #  # ]:          0 :     if( !maTlbObjects.IsEqualToDoc( pDoc ) )
     182                 :            :     {
     183 [ #  # ][ #  # ]:          0 :         String aDocName = pDocShell->GetMedium()->GetName();
     184         [ #  # ]:          0 :         maTlbObjects.Clear();
     185         [ #  # ]:          0 :         maTlbObjects.Fill( pDoc, (sal_Bool) sal_False, aDocName ); // Nur normale Seiten
     186                 :            : 
     187         [ #  # ]:          0 :         RefreshDocumentLB();
     188 [ #  # ][ #  # ]:          0 :         maLbDocs.SelectEntry( aDocShName );
     189                 :            :     }
     190                 :            :     else
     191                 :            :     {
     192         [ #  # ]:          0 :         maLbDocs.SetNoSelection();
     193         [ #  # ]:          0 :         maLbDocs.SelectEntry( aDocShName );
     194                 :            : 
     195                 :            : // auskommentiert um 30246 zu fixen
     196                 :            : //        if( maLbDocs.GetSelectEntryCount() == 0 )
     197                 :            :         {
     198         [ #  # ]:          0 :             RefreshDocumentLB();
     199         [ #  # ]:          0 :             maLbDocs.SelectEntry( aDocShName );
     200                 :            :         }
     201                 :            :     }
     202                 :            : 
     203 [ #  # ][ #  # ]:          0 :     SfxViewFrame* pViewFrame = ( ( pViewShell && pViewShell->GetViewFrame() ) ? pViewShell->GetViewFrame() : SfxViewFrame::Current() );
         [ #  # ][ #  # ]
                 [ #  # ]
     204         [ #  # ]:          0 :     if( pViewFrame )
     205 [ #  # ][ #  # ]:          0 :         pViewFrame->GetBindings().Invalidate(SID_NAVIGATOR_PAGENAME, sal_True, sal_True);
     206                 :          0 : }
     207                 :            : 
     208                 :            : /*************************************************************************
     209                 :            : |*
     210                 :            : |* DragType wird in Abhaengigkeit davon gesetzt, ob ein Drag ueberhaupt
     211                 :            : |* moeglich ist. Graphiken duerfen beispielsweise unter gewissen Umstaenden
     212                 :            : |* nicht gedragt werden (#31038#).
     213                 :            : |*
     214                 :            : \************************************************************************/
     215                 :            : 
     216                 :          0 : NavigatorDragType SdNavigatorWin::GetNavigatorDragType()
     217                 :            : {
     218                 :          0 :     NavigatorDragType   eDT = meDragType;
     219                 :          0 :     NavDocInfo*         pInfo = GetDocInfo();
     220                 :            : 
     221 [ #  # ][ #  # ]:          0 :     if( ( eDT == NAVIGATOR_DRAGTYPE_LINK ) && ( ( pInfo && !pInfo->HasName() ) || !maTlbObjects.IsLinkableSelected() ) )
         [ #  # ][ #  # ]
                 [ #  # ]
     222                 :          0 :         eDT = NAVIGATOR_DRAGTYPE_NONE;
     223                 :            : 
     224                 :          0 :     return( eDT );
     225                 :            : }
     226                 :            : 
     227                 :            : // -----------------------------------------------------------------------
     228                 :            : 
     229                 :            : 
     230                 :          0 : IMPL_LINK_NOARG(SdNavigatorWin, SelectToolboxHdl)
     231                 :            : {
     232                 :          0 :     sal_uInt16 nId = maToolbox.GetCurItemId();
     233                 :          0 :     sal_uInt16 nSId = 0;
     234                 :          0 :     PageJump ePage = PAGE_NONE;
     235                 :            : 
     236      [ #  #  # ]:          0 :     switch( nId )
     237                 :            :     {
     238                 :            :         case TBI_PEN:
     239                 :            :         {
     240         [ #  # ]:          0 :             if( nId == TBI_PEN )
     241                 :            :             {
     242                 :          0 :                 nSId = SID_NAVIGATOR_PEN;
     243                 :            :             }
     244                 :            : 
     245         [ #  # ]:          0 :             if( nSId > 0 )
     246                 :            :             {
     247         [ #  # ]:          0 :                 SfxBoolItem aItem( nSId, sal_True );
     248                 :            :                 mpBindings->GetDispatcher()->Execute(
     249 [ #  # ][ #  # ]:          0 :                     nSId, SFX_CALLMODE_SLOT |SFX_CALLMODE_RECORD, &aItem, 0L );
     250                 :            :             }
     251                 :            :         }
     252                 :          0 :         break;
     253                 :            : 
     254                 :            :         case TBI_FIRST:
     255                 :            :         case TBI_PREVIOUS:
     256                 :            :         case TBI_NEXT:
     257                 :            :         case TBI_LAST:
     258                 :            :         {
     259         [ #  # ]:          0 :             if( nId == TBI_FIRST )
     260                 :          0 :                 ePage = PAGE_FIRST;
     261         [ #  # ]:          0 :             else if( nId == TBI_PREVIOUS )
     262                 :          0 :                 ePage = PAGE_PREVIOUS;
     263         [ #  # ]:          0 :             else if( nId == TBI_NEXT )
     264                 :          0 :                 ePage = PAGE_NEXT;
     265         [ #  # ]:          0 :             else if( nId == TBI_LAST )
     266                 :          0 :                 ePage = PAGE_LAST;
     267                 :            : 
     268         [ #  # ]:          0 :             if( ePage != PAGE_NONE )
     269                 :            :             {
     270         [ #  # ]:          0 :                 SfxUInt16Item aItem( SID_NAVIGATOR_PAGE, (sal_uInt16)ePage );
     271                 :            :                 mpBindings->GetDispatcher()->Execute(
     272 [ #  # ][ #  # ]:          0 :                     SID_NAVIGATOR_PAGE, SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD, &aItem, 0L );
     273                 :            :             }
     274                 :            :         }
     275                 :          0 :         break;
     276                 :            :     }
     277                 :          0 :     return 0;
     278                 :            : }
     279                 :            : 
     280                 :            : // -----------------------------------------------------------------------
     281                 :            : 
     282                 :            : 
     283                 :          0 : IMPL_LINK_NOARG(SdNavigatorWin, ClickToolboxHdl)
     284                 :            : {
     285                 :          0 :     return 0;
     286                 :            : }
     287                 :            : 
     288                 :            : // -----------------------------------------------------------------------
     289                 :            : 
     290                 :          0 : IMPL_LINK( SdNavigatorWin, DropdownClickToolBoxHdl, ToolBox*, pBox )
     291                 :            : {
     292                 :          0 :     sal_uInt16 nId = maToolbox.GetCurItemId();
     293                 :            : 
     294      [ #  #  # ]:          0 :     switch( nId )
     295                 :            :     {
     296                 :            :         case TBI_DRAGTYPE:
     297                 :            :         {
     298                 :            :             // Popup-Menu wird in Abhaengigkeit davon erzeugt, ob Dokument
     299                 :            :             // gespeichert ist oder nicht
     300         [ #  # ]:          0 :             PopupMenu *pMenu = new PopupMenu;
     301                 :            : 
     302                 :            :             static const char* aHIDs[] =
     303                 :            :             {
     304                 :            :                  HID_SD_NAVIGATOR_MENU1,
     305                 :            :                  HID_SD_NAVIGATOR_MENU2,
     306                 :            :                  HID_SD_NAVIGATOR_MENU3,
     307                 :            :                  0
     308                 :            :             };
     309                 :            : 
     310         [ #  # ]:          0 :             for( sal_uInt16 nID = NAVIGATOR_DRAGTYPE_URL;
     311                 :            :                  nID < NAVIGATOR_DRAGTYPE_COUNT;
     312                 :            :                  nID++ )
     313                 :            :             {
     314                 :          0 :                 sal_uInt16 nRId = GetDragTypeSdResId( (NavigatorDragType)nID );
     315         [ #  # ]:          0 :                 if( nRId > 0 )
     316                 :            :                 {
     317                 :            :                     DBG_ASSERT(aHIDs[nID-NAVIGATOR_DRAGTYPE_URL],"HelpId not added!");
     318 [ #  # ][ #  # ]:          0 :                     pMenu->InsertItem( nID, String( SdResId( nRId ) ) );
                 [ #  # ]
     319         [ #  # ]:          0 :                     pMenu->SetHelpId( nID, aHIDs[nID - NAVIGATOR_DRAGTYPE_URL] );
     320                 :            :                 }
     321                 :            : 
     322                 :            :             }
     323                 :          0 :             NavDocInfo* pInfo = GetDocInfo();
     324                 :            : 
     325 [ #  # ][ #  # ]:          0 :             if( ( pInfo && !pInfo->HasName() ) || !maTlbObjects.IsLinkableSelected() )
         [ #  # ][ #  # ]
     326                 :            :             {
     327                 :          0 :                 pMenu->EnableItem( NAVIGATOR_DRAGTYPE_LINK, sal_False );
     328                 :          0 :                 pMenu->EnableItem( NAVIGATOR_DRAGTYPE_URL, sal_False );
     329                 :          0 :                 meDragType = NAVIGATOR_DRAGTYPE_EMBEDDED;
     330                 :            :             }
     331                 :            : 
     332                 :          0 :             pMenu->CheckItem( (sal_uInt16)meDragType );
     333                 :          0 :             pMenu->SetSelectHdl( LINK( this, SdNavigatorWin, MenuSelectHdl ) );
     334                 :            : 
     335         [ #  # ]:          0 :             pMenu->Execute( this, maToolbox.GetItemRect( nId ), POPUPMENU_EXECUTE_DOWN );
     336                 :          0 :             pBox->EndSelection();
     337         [ #  # ]:          0 :             delete pMenu;
     338                 :            :         }
     339                 :          0 :         break;
     340                 :            : 
     341                 :            :         case TBI_SHAPE_FILTER:
     342                 :            :         {
     343         [ #  # ]:          0 :             PopupMenu *pMenu = new PopupMenu;
     344                 :            : 
     345                 :            :             pMenu->InsertItem(
     346                 :            :                 nShowNamedShapesFilter,
     347 [ #  # ][ #  # ]:          0 :                 String(SdResId(STR_NAVIGATOR_SHOW_NAMED_SHAPES)));
                 [ #  # ]
     348                 :            :             pMenu->InsertItem(
     349                 :            :                 nShowAllShapesFilter,
     350 [ #  # ][ #  # ]:          0 :                 String(SdResId(STR_NAVIGATOR_SHOW_ALL_SHAPES)));
                 [ #  # ]
     351                 :            : 
     352         [ #  # ]:          0 :             if (maTlbObjects.GetShowAllShapes())
     353                 :          0 :                 pMenu->CheckItem(nShowAllShapesFilter);
     354                 :            :             else
     355                 :          0 :                 pMenu->CheckItem(nShowNamedShapesFilter);
     356                 :          0 :             pMenu->SetSelectHdl( LINK( this, SdNavigatorWin, ShapeFilterCallback ) );
     357                 :            : 
     358         [ #  # ]:          0 :             pMenu->Execute( this, maToolbox.GetItemRect( nId ), POPUPMENU_EXECUTE_DOWN );
     359                 :          0 :             pBox->EndSelection();
     360         [ #  # ]:          0 :             delete pMenu;
     361                 :            :         }
     362                 :          0 :         break;
     363                 :            :     }
     364                 :          0 :     return 0;
     365                 :            : }
     366                 :            : 
     367                 :            : // -----------------------------------------------------------------------
     368                 :            : 
     369                 :          0 : IMPL_LINK_NOARG(SdNavigatorWin, ClickObjectHdl)
     370                 :            : {
     371 [ #  # ][ #  # ]:          0 :     if( !mbDocImported || maLbDocs.GetSelectEntryPos() != 0 )
                 [ #  # ]
     372                 :            :     {
     373                 :          0 :         NavDocInfo* pInfo = GetDocInfo();
     374                 :            : 
     375                 :            :         // Nur wenn es sich um das aktive Fenster handelt, wird
     376                 :            :         // auf die Seite gesprungen
     377 [ #  # ][ #  # ]:          0 :         if( pInfo && pInfo->IsActive() )
                 [ #  # ]
     378                 :            :         {
     379         [ #  # ]:          0 :             String aStr( maTlbObjects.GetSelectEntry() );
     380                 :            : 
     381         [ #  # ]:          0 :             if( aStr.Len() > 0 )
     382                 :            :             {
     383         [ #  # ]:          0 :                 SfxStringItem aItem( SID_NAVIGATOR_OBJECT, aStr );
     384                 :            :                 mpBindings->GetDispatcher()->Execute(
     385         [ #  # ]:          0 :                     SID_NAVIGATOR_OBJECT, SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD, &aItem, 0L );
     386                 :            : 
     387                 :            :                 // moved here from SetGetFocusHdl. Reset the
     388                 :            :                 // focus only if something has been selected in the
     389                 :            :                 // document.
     390         [ #  # ]:          0 :                 SfxViewShell* pCurSh = SfxViewShell::Current();
     391                 :            : 
     392         [ #  # ]:          0 :                 if ( pCurSh )
     393                 :            :                 {
     394                 :          0 :                     Window* pShellWnd = pCurSh->GetWindow();
     395         [ #  # ]:          0 :                     if ( pShellWnd )
     396         [ #  # ]:          0 :                         pShellWnd->GrabFocus();
     397         [ #  # ]:          0 :                 }
     398         [ #  # ]:          0 :             }
     399                 :            :         }
     400                 :            :     }
     401                 :          0 :     return( 0L );
     402                 :            : }
     403                 :            : 
     404                 :            : // -----------------------------------------------------------------------
     405                 :            : 
     406                 :          0 : IMPL_LINK_NOARG(SdNavigatorWin, SelectDocumentHdl)
     407                 :            : {
     408         [ #  # ]:          0 :     String aStrLb = maLbDocs.GetSelectEntry();
     409         [ #  # ]:          0 :     long   nPos = maLbDocs.GetSelectEntryPos();
     410                 :          0 :     sal_Bool   bFound = sal_False;
     411                 :          0 :     ::sd::DrawDocShell* pDocShell = NULL;
     412         [ #  # ]:          0 :     NavDocInfo* pInfo = GetDocInfo();
     413                 :            : 
     414                 :            :     // Handelt es sich um ein gedragtes Objekt?
     415 [ #  # ][ #  # ]:          0 :     if( mbDocImported && nPos == 0 )
     416                 :            :     {
     417                 :            :         // Dokument in TLB aufbauen
     418         [ #  # ]:          0 :         InsertFile( aStrLb );
     419                 :            :     }
     420         [ #  # ]:          0 :     else if (pInfo)
     421                 :            :     {
     422                 :          0 :         pDocShell = pInfo->mpDocShell;
     423                 :            : 
     424                 :          0 :         bFound = sal_True;
     425                 :            :     }
     426                 :            : 
     427         [ #  # ]:          0 :     if( bFound )
     428                 :            :     {
     429         [ #  # ]:          0 :         SdDrawDocument* pDoc = pDocShell->GetDoc();
     430 [ #  # ][ #  # ]:          0 :         if( !maTlbObjects.IsEqualToDoc( pDoc ) )
     431                 :            :         {
     432                 :          0 :             SdDrawDocument* pNonConstDoc = (SdDrawDocument*) pDoc; // const as const can...
     433                 :          0 :             ::sd::DrawDocShell* pNCDocShell = pNonConstDoc->GetDocSh();
     434 [ #  # ][ #  # ]:          0 :             String aDocName = pNCDocShell->GetMedium()->GetName();
     435         [ #  # ]:          0 :             maTlbObjects.Clear();
     436 [ #  # ][ #  # ]:          0 :             maTlbObjects.Fill( pDoc, (sal_Bool) sal_False, aDocName ); // Nur normale Seiten
     437                 :            :         }
     438                 :            :     }
     439                 :            : 
     440                 :            :     // Pruefen, ob Link oder URL moeglich ist
     441 [ #  # ][ #  # ]:          0 :     if( ( pInfo && !pInfo->HasName() ) || !maTlbObjects.IsLinkableSelected() || ( meDragType != NAVIGATOR_DRAGTYPE_EMBEDDED ) )
         [ #  # ][ #  # ]
                 [ #  # ]
     442                 :            :     {
     443                 :          0 :         meDragType = NAVIGATOR_DRAGTYPE_EMBEDDED;
     444         [ #  # ]:          0 :         SetDragImage();
     445                 :            :     }
     446                 :            : 
     447         [ #  # ]:          0 :     return( 0L );
     448                 :            : }
     449                 :            : 
     450                 :            : /*************************************************************************
     451                 :            : |*
     452                 :            : |* DrageType wird gesetzt und Image wird entspr. gesetzt.
     453                 :            : |* Sollte Handler mit NULL gerufen werden, so wird der Default (URL) gesetzt.
     454                 :            : |*
     455                 :            : \************************************************************************/
     456                 :            : 
     457                 :          0 : IMPL_LINK( SdNavigatorWin, MenuSelectHdl, Menu *, pMenu )
     458                 :            : {
     459                 :            :     sal_uInt16 nMenuId;
     460         [ #  # ]:          0 :     if( pMenu )
     461                 :          0 :         nMenuId = pMenu->GetCurItemId();
     462                 :            :     else
     463                 :          0 :         nMenuId = NAVIGATOR_DRAGTYPE_URL;
     464                 :            : 
     465         [ #  # ]:          0 :     if( nMenuId != USHRT_MAX ) // Notwendig ?
     466                 :            :     {
     467                 :          0 :         NavigatorDragType eDT = (NavigatorDragType) nMenuId;
     468         [ #  # ]:          0 :         if( meDragType != eDT )
     469                 :            :         {
     470                 :          0 :             meDragType = eDT;
     471                 :          0 :             SetDragImage();
     472                 :            : 
     473         [ #  # ]:          0 :             if( meDragType == NAVIGATOR_DRAGTYPE_URL )
     474                 :            :             {
     475                 :            :                 // Fix, um Endlosschleife zu unterbinden
     476         [ #  # ]:          0 :                 if( maTlbObjects.GetSelectionCount() > 1 )
     477                 :          0 :                     maTlbObjects.SelectAll( sal_False );
     478                 :            : 
     479                 :          0 :                 maTlbObjects.SetSelectionMode( SINGLE_SELECTION );
     480                 :            :             }
     481                 :            :             else
     482                 :          0 :                 maTlbObjects.SetSelectionMode( MULTIPLE_SELECTION );
     483                 :            :         }
     484                 :            :     }
     485                 :          0 :     return( 0 );
     486                 :            : }
     487                 :            : 
     488                 :            : 
     489                 :            : 
     490                 :            : 
     491                 :          0 : IMPL_LINK( SdNavigatorWin, ShapeFilterCallback, Menu *, pMenu )
     492                 :            : {
     493         [ #  # ]:          0 :     if (pMenu != NULL)
     494                 :            :     {
     495                 :          0 :         bool bShowAllShapes (maTlbObjects.GetShowAllShapes());
     496                 :          0 :         sal_uInt16 nMenuId (pMenu->GetCurItemId());
     497      [ #  #  # ]:          0 :         switch (nMenuId)
     498                 :            :         {
     499                 :            :             case nShowNamedShapesFilter:
     500                 :          0 :                 bShowAllShapes = false;
     501                 :          0 :                 break;
     502                 :            : 
     503                 :            :             case nShowAllShapesFilter:
     504                 :          0 :                 bShowAllShapes = true;
     505                 :          0 :                 break;
     506                 :            : 
     507                 :            :             default:
     508                 :            :                 OSL_FAIL(
     509                 :            :                     "SdNavigatorWin::ShapeFilterCallback called for unknown menu entry");
     510                 :          0 :                 break;
     511                 :            :         }
     512                 :            : 
     513                 :          0 :         maTlbObjects.SetShowAllShapes(bShowAllShapes, true);
     514                 :            : 
     515                 :            :         // Remember the selection in the FrameView.
     516                 :          0 :         NavDocInfo* pInfo = GetDocInfo();
     517         [ #  # ]:          0 :         if (pInfo != NULL)
     518                 :            :         {
     519                 :          0 :             ::sd::DrawDocShell* pDocShell = pInfo->mpDocShell;
     520         [ #  # ]:          0 :             if (pDocShell != NULL)
     521                 :            :             {
     522                 :          0 :                 ::sd::ViewShell* pViewShell = pDocShell->GetViewShell();
     523         [ #  # ]:          0 :                 if (pViewShell != NULL)
     524                 :            :                 {
     525                 :          0 :                     ::sd::FrameView* pFrameView = pViewShell->GetFrameView();
     526         [ #  # ]:          0 :                     if (pFrameView != NULL)
     527                 :            :                     {
     528                 :          0 :                         pFrameView->SetIsNavigatorShowingAllShapes(bShowAllShapes);
     529                 :            :                     }
     530                 :            :                 }
     531                 :            :             }
     532                 :            :         }
     533                 :            :     }
     534                 :            : 
     535                 :          0 :     return 0;
     536                 :            : }
     537                 :            : 
     538                 :            : // -----------------------------------------------------------------------
     539                 :            : 
     540                 :          0 : void SdNavigatorWin::Resize()
     541                 :            : {
     542                 :          0 :     Size aWinSize( GetOutputSizePixel() );
     543         [ #  # ]:          0 :     if( aWinSize.Height() >= maMinSize.Height() )
     544                 :            :         //aWinSize.Width() >= maMinSize.Width() )
     545                 :            :     {
     546                 :          0 :         Size aDiffSize;
     547                 :          0 :         aDiffSize.Width() = aWinSize.Width() - maSize.Width();
     548                 :          0 :         aDiffSize.Height() = aWinSize.Height() - maSize.Height();
     549                 :            : 
     550                 :            :         // Umgroessern der Toolbox
     551         [ #  # ]:          0 :         Size aObjSize( maToolbox.GetOutputSizePixel() );
     552                 :          0 :         aObjSize.Width() += aDiffSize.Width();
     553         [ #  # ]:          0 :         maToolbox.SetOutputSizePixel( aObjSize );
     554                 :            : 
     555                 :            :         // Umgroessern der TreeLB
     556         [ #  # ]:          0 :         aObjSize = maTlbObjects.GetSizePixel();
     557                 :          0 :         aObjSize.Width() += aDiffSize.Width();
     558         [ #  # ]:          0 :         aObjSize.Height() = maLbDocs.GetPosPixel().Y() + aDiffSize.Height() -
     559         [ #  # ]:          0 :             maTlbObjects.GetPosPixel().Y() - 4;
     560         [ #  # ]:          0 :         maTlbObjects.SetSizePixel( aObjSize );
     561                 :            : 
     562                 :          0 :         Point aPt( 0, aDiffSize.Height() );
     563                 :            : 
     564                 :            :         // Verschieben der anderen Controls (DocumentLB)
     565         [ #  # ]:          0 :         maLbDocs.Hide();
     566                 :          0 :         aObjSize = maLbDocs.GetOutputSizePixel();
     567                 :          0 :         aObjSize.Width() += aDiffSize.Width();
     568 [ #  # ][ #  # ]:          0 :         maLbDocs.SetPosPixel( maLbDocs.GetPosPixel() + aPt );
     569         [ #  # ]:          0 :         maLbDocs.SetOutputSizePixel( aObjSize );
     570         [ #  # ]:          0 :         maLbDocs.Show();
     571                 :            : 
     572                 :          0 :         maSize = aWinSize;
     573                 :            :     }
     574         [ #  # ]:          0 :     Window::Resize();
     575                 :          0 : }
     576                 :            : 
     577                 :            : // -----------------------------------------------------------------------
     578                 :            : 
     579                 :          0 : sal_Bool SdNavigatorWin::InsertFile(const String& rFileName)
     580                 :            : {
     581 [ #  # ][ #  # ]:          0 :     INetURLObject   aURL( rFileName );
     582                 :          0 :     sal_Bool            bReturn = sal_True;
     583                 :            : 
     584         [ #  # ]:          0 :     if( aURL.GetProtocol() == INET_PROT_NOT_VALID )
     585                 :            :     {
     586                 :          0 :         rtl::OUString aURLStr;
     587 [ #  # ][ #  # ]:          0 :         ::utl::LocalFileHelper::ConvertPhysicalNameToURL( rFileName, aURLStr );
     588 [ #  # ][ #  # ]:          0 :         aURL = INetURLObject( aURLStr );
                 [ #  # ]
     589                 :            :     }
     590                 :            : 
     591                 :            :     // get adjusted FileName
     592 [ #  # ][ #  # ]:          0 :     String aFileName( aURL.GetMainURL( INetURLObject::NO_DECODE ) );
     593                 :            : 
     594         [ #  # ]:          0 :     if (!aFileName.Len())
     595                 :            :     {
     596                 :            :         /**********************************************************************
     597                 :            :         * Wieder aktuelles Dokument anzeigen
     598                 :            :         **********************************************************************/
     599         [ #  # ]:          0 :         maDropFileName = aFileName;
     600                 :            :     }
     601                 :            :     else
     602                 :            :     {
     603                 :            :         /**********************************************************************
     604                 :            :         * Hineingedraggtes Dokument anzeigen
     605                 :            :         **********************************************************************/
     606                 :          0 :         const SfxFilter* pFilter = NULL;
     607                 :          0 :         ErrCode nErr = 0;
     608                 :            : 
     609 [ #  # ][ #  # ]:          0 :         if (aFileName != maDropFileName)
     610                 :            :         {
     611         [ #  # ]:          0 :             SfxMedium aMed(aFileName, (STREAM_READ | STREAM_SHARE_DENYNONE));
     612 [ #  # ][ #  # ]:          0 :             SfxFilterMatcher aMatch( rtl::OUString("simpress") );
                 [ #  # ]
     613         [ #  # ]:          0 :             aMed.UseInteractionHandler( sal_True );
     614 [ #  # ][ #  # ]:          0 :             nErr = aMatch.GuessFilter(aMed, &pFilter);
                 [ #  # ]
     615                 :            :         }
     616                 :            : 
     617 [ #  # ][ #  # ]:          0 :         if ((pFilter && !nErr) || aFileName == maDropFileName)
         [ #  # ][ #  # ]
                 [ #  # ]
     618                 :            :         {
     619                 :            :             // Das Medium muss ggf. mit READ/WRITE geoeffnet werden, daher wird
     620                 :            :             // ersteinmal nachgeschaut, ob es einen Storage enthaelt
     621                 :            :             SfxMedium* pMedium = new SfxMedium( aFileName,
     622 [ #  # ][ #  # ]:          0 :                                                 STREAM_READ | STREAM_NOCREATE);
     623                 :            : 
     624 [ #  # ][ #  # ]:          0 :             if (pMedium->IsStorage())
     625                 :            :             {
     626                 :            :                 // Jetzt modusabhaengig:
     627                 :            :                 // maTlbObjects.SetSelectionMode(MULTIPLE_SELECTION);
     628                 :            :                 // Eigentuemeruebergabe von pMedium;
     629         [ #  # ]:          0 :                 SdDrawDocument* pDropDoc = maTlbObjects.GetBookmarkDoc(pMedium);
     630                 :            : 
     631         [ #  # ]:          0 :                 if (pDropDoc)
     632                 :            :                 {
     633         [ #  # ]:          0 :                     maTlbObjects.Clear();
     634         [ #  # ]:          0 :                     maDropFileName = aFileName;
     635                 :            : 
     636 [ #  # ][ #  # ]:          0 :                     if( !maTlbObjects.IsEqualToDoc( pDropDoc ) )
     637                 :            :                     {
     638                 :            :                         // Nur normale Seiten
     639         [ #  # ]:          0 :                         maTlbObjects.Fill(pDropDoc, (sal_Bool) sal_False, maDropFileName);
     640         [ #  # ]:          0 :                         RefreshDocumentLB( &maDropFileName );
     641                 :            :                     }
     642                 :            :                 }
     643                 :            :             }
     644                 :            :             else
     645                 :            :             {
     646                 :          0 :                 bReturn = sal_False;
     647 [ #  # ][ #  # ]:          0 :                 delete pMedium;
     648                 :            :             }
     649                 :            :         }
     650                 :            :         else
     651                 :            :         {
     652                 :          0 :             bReturn = sal_False;
     653                 :            :         }
     654                 :            :     }
     655                 :            : 
     656 [ #  # ][ #  # ]:          0 :     return (bReturn);
     657                 :            : }
     658                 :            : 
     659                 :            : // -----------------------------------------------------------------------
     660                 :            : 
     661                 :          0 : void SdNavigatorWin::RefreshDocumentLB( const String* pDocName )
     662                 :            : {
     663                 :          0 :     sal_uInt16 nPos = 0;
     664                 :            : 
     665         [ #  # ]:          0 :     if( pDocName )
     666                 :            :     {
     667         [ #  # ]:          0 :         if( mbDocImported )
     668                 :          0 :             maLbDocs.RemoveEntry( 0 );
     669                 :            : 
     670                 :          0 :         maLbDocs.InsertEntry( *pDocName, 0 );
     671                 :          0 :         mbDocImported = sal_True;
     672                 :            :     }
     673                 :            :     else
     674                 :            :     {
     675         [ #  # ]:          0 :         nPos = maLbDocs.GetSelectEntryPos();
     676         [ #  # ]:          0 :         if( nPos == LISTBOX_ENTRY_NOTFOUND )
     677                 :          0 :             nPos = 0;
     678                 :            : 
     679         [ #  # ]:          0 :         String aStr;
     680         [ #  # ]:          0 :         if( mbDocImported )
     681 [ #  # ][ #  # ]:          0 :             aStr = maLbDocs.GetEntry( 0 );
                 [ #  # ]
     682                 :            : 
     683         [ #  # ]:          0 :         maLbDocs.Clear();
     684                 :            : 
     685                 :            :         // Liste der DocInfos loeschen
     686                 :          0 :          maDocList.clear();
     687                 :            : 
     688         [ #  # ]:          0 :         if( mbDocImported )
     689         [ #  # ]:          0 :             maLbDocs.InsertEntry( aStr, 0 );
     690                 :            : 
     691                 :            :         ::sd::DrawDocShell* pCurrentDocShell =
     692 [ #  # ][ #  # ]:          0 :               PTR_CAST(::sd::DrawDocShell, SfxObjectShell::Current() );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     693         [ #  # ]:          0 :         SfxObjectShell* pSfxDocShell = SfxObjectShell::GetFirst(0, sal_False);
     694         [ #  # ]:          0 :         while( pSfxDocShell )
     695                 :            :         {
     696 [ #  # ][ #  # ]:          0 :             ::sd::DrawDocShell* pDocShell = PTR_CAST(::sd::DrawDocShell, pSfxDocShell );
         [ #  # ][ #  # ]
     697 [ #  # ][ #  # ]:          0 :             if( pDocShell  && !pDocShell->IsInDestruction() && ( pDocShell->GetCreateMode() != SFX_CREATE_MODE_EMBEDDED ) )
         [ #  # ][ #  # ]
     698                 :            :             {
     699                 :          0 :                 NavDocInfo aInfo ;
     700                 :          0 :                 aInfo.mpDocShell = pDocShell;
     701                 :            : 
     702                 :          0 :                 SfxMedium *pMedium = pDocShell->GetMedium();
     703 [ #  # ][ #  # ]:          0 :                 aStr = pMedium ? pMedium->GetName() : OUString();
                 [ #  # ]
     704         [ #  # ]:          0 :                 if( aStr.Len() )
     705                 :          0 :                     aInfo.SetName();
     706                 :            :                 else
     707                 :          0 :                     aInfo.SetName( sal_False );
     708                 :            :                 // z.Z. wird wieder der Name der Shell genommen (also ohne Pfad)
     709                 :            :                 // da Koose es als Fehler ansieht, wenn er Pfad in URL-Notation
     710                 :            :                 // angezeigt wird!
     711 [ #  # ][ #  # ]:          0 :                 aStr = pDocShell->GetName();
     712                 :            : 
     713         [ #  # ]:          0 :                 maLbDocs.InsertEntry( aStr, LISTBOX_APPEND );
     714                 :            : 
     715         [ #  # ]:          0 :                 if( pDocShell == pCurrentDocShell )
     716                 :          0 :                     aInfo.SetActive();
     717                 :            :                 else
     718                 :          0 :                     aInfo.SetActive( sal_False );
     719                 :            : 
     720         [ #  # ]:          0 :                 maDocList.push_back( aInfo );
     721                 :            :             }
     722         [ #  # ]:          0 :             pSfxDocShell = SfxObjectShell::GetNext( *pSfxDocShell, 0 , sal_False );
     723         [ #  # ]:          0 :         }
     724                 :            :     }
     725                 :          0 :     maLbDocs.SelectEntryPos( nPos );
     726                 :          0 : }
     727                 :            : 
     728                 :            : //------------------------------------------------------------------------
     729                 :            : 
     730                 :          0 : sal_uInt16 SdNavigatorWin::GetDragTypeSdResId( NavigatorDragType eDT, sal_Bool bImage )
     731                 :            : {
     732   [ #  #  #  #  :          0 :     switch( eDT )
                      # ]
     733                 :            :     {
     734                 :            :         case NAVIGATOR_DRAGTYPE_NONE:
     735         [ #  # ]:          0 :                 return( bImage ? 0 : STR_NONE );
     736                 :            :         case NAVIGATOR_DRAGTYPE_URL:
     737         [ #  # ]:          0 :                 return( bImage ? TBI_HYPERLINK : STR_DRAGTYPE_URL );
     738                 :            :         case NAVIGATOR_DRAGTYPE_EMBEDDED:
     739         [ #  # ]:          0 :                 return( bImage ? TBI_EMBEDDED : STR_DRAGTYPE_EMBEDDED );
     740                 :            :         case NAVIGATOR_DRAGTYPE_LINK:
     741         [ #  # ]:          0 :                 return( bImage ? TBI_LINK : STR_DRAGTYPE_LINK );
     742                 :            :         default: OSL_FAIL( "Keine Resource fuer DragType vorhanden!" );
     743                 :            :     }
     744                 :          0 :     return( 0 );
     745                 :            : }
     746                 :            : 
     747                 :            : //------------------------------------------------------------------------
     748                 :            : 
     749                 :          0 : NavDocInfo* SdNavigatorWin::GetDocInfo()
     750                 :            : {
     751                 :          0 :     sal_uInt32 nPos = maLbDocs.GetSelectEntryPos();
     752                 :            : 
     753         [ #  # ]:          0 :     if( mbDocImported )
     754                 :            :     {
     755         [ #  # ]:          0 :         if( nPos == 0 )
     756                 :            :         {
     757                 :          0 :             return( NULL );
     758                 :            :         }
     759                 :          0 :         nPos--;
     760                 :            :     }
     761                 :            : 
     762         [ #  # ]:          0 :     return nPos < maDocList.size() ? &(maDocList[ nPos ]) : NULL;
     763                 :            : }
     764                 :            : 
     765                 :            : /*************************************************************************
     766                 :            : |*
     767                 :            : |* PreNotify
     768                 :            : |*
     769                 :            : \************************************************************************/
     770                 :            : 
     771                 :          0 : long SdNavigatorWin::Notify(NotifyEvent& rNEvt)
     772                 :            : {
     773                 :          0 :     const KeyEvent* pKEvt = rNEvt.GetKeyEvent();
     774                 :          0 :     long            nOK = sal_False;
     775                 :            : 
     776         [ #  # ]:          0 :     if( pKEvt )
     777                 :            :     {
     778         [ #  # ]:          0 :         if( KEY_ESCAPE == pKEvt->GetKeyCode().GetCode() )
     779                 :            :         {
     780         [ #  # ]:          0 :             if( SdPageObjsTLB::IsInDrag() )
     781                 :            :             {
     782                 :            :                 // during drag'n'drop we just stop the drag but do not close the navigator
     783                 :          0 :                 nOK = sal_True;
     784                 :            :             }
     785                 :            :             else
     786                 :            :             {
     787                 :          0 :                 ::sd::ViewShellBase* pBase = ::sd::ViewShellBase::GetViewShellBase( mpBindings->GetDispatcher()->GetFrame());
     788         [ #  # ]:          0 :                 if( pBase )
     789                 :            :                 {
     790                 :          0 :                     sd::SlideShow::Stop( *pBase );
     791                 :            :                     // Stopping the slide show may result in a synchronous
     792                 :            :                     // deletion of the navigator window.  Calling the
     793                 :            :                     // parents Notify after this is unsafe.  Therefore we
     794                 :            :                     // return now.
     795                 :          0 :                     return sal_True;
     796                 :            :                 }
     797                 :            :             }
     798                 :            :         }
     799                 :            :     }
     800                 :            : 
     801         [ #  # ]:          0 :     if( !nOK )
     802                 :          0 :         nOK = Window::Notify( rNEvt );
     803                 :            : 
     804                 :          0 :     return( nOK );
     805                 :            : }
     806                 :            : 
     807                 :            : 
     808                 :            : /*************************************************************************
     809                 :            : |*
     810                 :            : |* KeyInput: ESCAPE abfangen, um Show zu beenden
     811                 :            : |*
     812                 :            : \************************************************************************/
     813                 :            : 
     814                 :          0 : void SdNavigatorWin::KeyInput( const KeyEvent& rKEvt )
     815                 :            : {
     816                 :          0 :     long nOK = sal_False;
     817                 :            : 
     818         [ #  # ]:          0 :     if (rKEvt.GetKeyCode().GetCode() == KEY_ESCAPE)
     819                 :            :     {
     820         [ #  # ]:          0 :         if( SdPageObjsTLB::IsInDrag() )
     821                 :            :         {
     822                 :            :             // during drag'n'drop we just stop the drag but do not close the navigator
     823                 :          0 :             nOK = sal_True;
     824                 :            :         }
     825                 :            :         else
     826                 :            :         {
     827                 :          0 :             ::sd::ViewShellBase* pBase = ::sd::ViewShellBase::GetViewShellBase( mpBindings->GetDispatcher()->GetFrame());
     828         [ #  # ]:          0 :             if(pBase)
     829                 :            :             {
     830                 :          0 :                 ::sd::SlideShow::Stop( *pBase );
     831                 :            :             }
     832                 :            :         }
     833                 :            :     }
     834                 :            : 
     835         [ #  # ]:          0 :     if (!nOK)
     836                 :            :     {
     837                 :          0 :         Window::KeyInput(rKEvt);
     838                 :            :     }
     839                 :          0 : }
     840                 :            : 
     841                 :          0 : void SdNavigatorWin::DataChanged( const DataChangedEvent& rDCEvt )
     842                 :            : {
     843 [ #  # ][ #  # ]:          0 :     if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) && (rDCEvt.GetFlags() & SETTINGS_STYLE) )
                 [ #  # ]
     844                 :          0 :             ApplyImageList();
     845                 :            : 
     846                 :          0 :     Window::DataChanged( rDCEvt );
     847                 :          0 : }
     848                 :            : 
     849                 :          0 : void SdNavigatorWin::SetDragImage()
     850                 :            : {
     851         [ #  # ]:          0 :     maToolbox.SetItemImage( TBI_DRAGTYPE, maToolbox.GetImageList().GetImage( GetDragTypeSdResId( meDragType, sal_True ) ) );
     852                 :          0 : }
     853                 :            : 
     854                 :          0 : void SdNavigatorWin::ApplyImageList()
     855                 :            : {
     856                 :            : 
     857                 :          0 :     maToolbox.SetImageList( maImageList );
     858 [ #  # ][ #  # ]:          0 :     maToolbox.SetItemImage( TBI_SHAPE_FILTER, BitmapEx( SdResId( BMP_GRAPHIC ) ) );
         [ #  # ][ #  # ]
                 [ #  # ]
     859                 :            : 
     860                 :          0 :     SetDragImage();
     861                 :          0 : }
     862                 :            : 
     863                 :            : 
     864                 :            : 
     865                 :            : /*************************************************************************
     866                 :            : |*
     867                 :            : |* ControllerItem fuer Navigator
     868                 :            : |*
     869                 :            : \************************************************************************/
     870                 :            : 
     871                 :          0 : SdNavigatorControllerItem::SdNavigatorControllerItem( sal_uInt16 _nId,
     872                 :            :                                 SdNavigatorWin* pNavWin,
     873                 :            :                                 SfxBindings*    _pBindings) :
     874                 :            :     SfxControllerItem( _nId, *_pBindings ),
     875                 :          0 :     pNavigatorWin( pNavWin )
     876                 :            : {
     877                 :          0 : }
     878                 :            : 
     879                 :            : // -----------------------------------------------------------------------
     880                 :            : 
     881                 :          0 : void SdNavigatorControllerItem::StateChanged( sal_uInt16 nSId,
     882                 :            :                         SfxItemState eState, const SfxPoolItem* pItem )
     883                 :            : {
     884 [ #  # ][ #  # ]:          0 :     if( eState >= SFX_ITEM_AVAILABLE && nSId == SID_NAVIGATOR_STATE )
     885                 :            :     {
     886 [ #  # ][ #  # ]:          0 :         const SfxUInt32Item* pStateItem = PTR_CAST( SfxUInt32Item, pItem );
     887                 :            :         DBG_ASSERT( pStateItem, "SfxUInt16Item erwartet");
     888                 :          0 :         sal_uInt32 nState = pStateItem->GetValue();
     889                 :            : 
     890                 :            :         // Stift
     891         [ #  # ]:          0 :         if( nState & NAVBTN_PEN_ENABLED &&
           [ #  #  #  # ]
     892                 :          0 :             !pNavigatorWin->maToolbox.IsItemEnabled( TBI_PEN ) )
     893                 :          0 :             pNavigatorWin->maToolbox.EnableItem( TBI_PEN );
     894   [ #  #  #  # ]:          0 :         if( nState & NAVBTN_PEN_DISABLED &&
                 [ #  # ]
     895                 :          0 :             pNavigatorWin->maToolbox.IsItemEnabled( TBI_PEN ) )
     896                 :          0 :             pNavigatorWin->maToolbox.EnableItem( TBI_PEN, sal_False );
     897   [ #  #  #  # ]:          0 :         if( nState & NAVBTN_PEN_CHECKED &&
                 [ #  # ]
     898                 :          0 :             !pNavigatorWin->maToolbox.IsItemChecked( TBI_PEN ) )
     899                 :          0 :             pNavigatorWin->maToolbox.CheckItem( TBI_PEN );
     900   [ #  #  #  # ]:          0 :         if( nState & NAVBTN_PEN_UNCHECKED &&
                 [ #  # ]
     901                 :          0 :             pNavigatorWin->maToolbox.IsItemChecked( TBI_PEN ) )
     902                 :          0 :             pNavigatorWin->maToolbox.CheckItem( TBI_PEN, sal_False );
     903                 :            : 
     904                 :            :         // Nur wenn Doc in LB das Aktive ist
     905                 :          0 :         NavDocInfo* pInfo = pNavigatorWin->GetDocInfo();
     906 [ #  # ][ #  # ]:          0 :         if( pInfo && pInfo->IsActive() )
                 [ #  # ]
     907                 :            :         {
     908                 :            :             // First
     909   [ #  #  #  # ]:          0 :             if( nState & NAVBTN_FIRST_ENABLED &&
                 [ #  # ]
     910                 :          0 :                 !pNavigatorWin->maToolbox.IsItemEnabled( TBI_FIRST ) )
     911                 :          0 :                 pNavigatorWin->maToolbox.EnableItem( TBI_FIRST );
     912   [ #  #  #  # ]:          0 :             if( nState & NAVBTN_FIRST_DISABLED &&
                 [ #  # ]
     913                 :          0 :                 pNavigatorWin->maToolbox.IsItemEnabled( TBI_FIRST ) )
     914                 :          0 :                 pNavigatorWin->maToolbox.EnableItem( TBI_FIRST, sal_False );
     915                 :            : 
     916                 :            :             // Prev
     917   [ #  #  #  # ]:          0 :             if( nState & NAVBTN_PREV_ENABLED &&
                 [ #  # ]
     918                 :          0 :                 !pNavigatorWin->maToolbox.IsItemEnabled( TBI_PREVIOUS ) )
     919                 :          0 :                 pNavigatorWin->maToolbox.EnableItem( TBI_PREVIOUS );
     920   [ #  #  #  # ]:          0 :             if( nState & NAVBTN_PREV_DISABLED &&
                 [ #  # ]
     921                 :          0 :                 pNavigatorWin->maToolbox.IsItemEnabled( TBI_PREVIOUS ) )
     922                 :          0 :                 pNavigatorWin->maToolbox.EnableItem( TBI_PREVIOUS, sal_False );
     923                 :            : 
     924                 :            :             // Last
     925   [ #  #  #  # ]:          0 :             if( nState & NAVBTN_LAST_ENABLED &&
                 [ #  # ]
     926                 :          0 :                 !pNavigatorWin->maToolbox.IsItemEnabled( TBI_LAST ) )
     927                 :          0 :                 pNavigatorWin->maToolbox.EnableItem( TBI_LAST );
     928   [ #  #  #  # ]:          0 :             if( nState & NAVBTN_LAST_DISABLED &&
                 [ #  # ]
     929                 :          0 :                 pNavigatorWin->maToolbox.IsItemEnabled( TBI_LAST ) )
     930                 :          0 :                 pNavigatorWin->maToolbox.EnableItem( TBI_LAST, sal_False );
     931                 :            : 
     932                 :            :             // Next
     933   [ #  #  #  # ]:          0 :             if( nState & NAVBTN_NEXT_ENABLED &&
                 [ #  # ]
     934                 :          0 :                 !pNavigatorWin->maToolbox.IsItemEnabled( TBI_NEXT ) )
     935                 :          0 :                 pNavigatorWin->maToolbox.EnableItem( TBI_NEXT );
     936   [ #  #  #  # ]:          0 :             if( nState & NAVBTN_NEXT_DISABLED &&
                 [ #  # ]
     937                 :          0 :                 pNavigatorWin->maToolbox.IsItemEnabled( TBI_NEXT ) )
     938                 :          0 :                 pNavigatorWin->maToolbox.EnableItem( TBI_NEXT, sal_False );
     939                 :            : 
     940         [ #  # ]:          0 :             if( nState & NAVTLB_UPDATE )
     941                 :            :             {
     942                 :            :                 // InitTlb; Wird ueber Slot initiiert
     943         [ #  # ]:          0 :                 SfxBoolItem aItem( SID_NAVIGATOR_INIT, sal_True );
     944                 :          0 :                 GetBindings().GetDispatcher()->Execute(
     945 [ #  # ][ #  # ]:          0 :                     SID_NAVIGATOR_INIT, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD, &aItem, 0L );
     946                 :            :             }
     947                 :            :         }
     948                 :            :     }
     949                 :          0 : }
     950                 :            : 
     951                 :            : /*************************************************************************
     952                 :            : |*
     953                 :            : |* ControllerItem fuer Navigator, um die Seite in der TreeLB anzuzeigen
     954                 :            : |*
     955                 :            : \************************************************************************/
     956                 :            : 
     957                 :          0 : SdPageNameControllerItem::SdPageNameControllerItem( sal_uInt16 _nId,
     958                 :            :                                 SdNavigatorWin* pNavWin,
     959                 :            :                                 SfxBindings*    _pBindings) :
     960                 :            :     SfxControllerItem( _nId, *_pBindings ),
     961                 :          0 :     pNavigatorWin( pNavWin )
     962                 :            : {
     963                 :          0 : }
     964                 :            : 
     965                 :            : // -----------------------------------------------------------------------
     966                 :            : 
     967                 :          0 : void SdPageNameControllerItem::StateChanged( sal_uInt16 nSId,
     968                 :            :                         SfxItemState eState, const SfxPoolItem* pItem )
     969                 :            : {
     970 [ #  # ][ #  # ]:          0 :     if( eState >= SFX_ITEM_AVAILABLE && nSId == SID_NAVIGATOR_PAGENAME )
     971                 :            :     {
     972                 :            :         // Nur wenn Doc in LB das Aktive ist
     973                 :          0 :         NavDocInfo* pInfo = pNavigatorWin->GetDocInfo();
     974 [ #  # ][ #  # ]:          0 :         if( pInfo && pInfo->IsActive() )
                 [ #  # ]
     975                 :            :         {
     976 [ #  # ][ #  # ]:          0 :             const SfxStringItem* pStateItem = PTR_CAST( SfxStringItem, pItem );
         [ #  # ][ #  # ]
     977                 :            :             DBG_ASSERT( pStateItem, "SfxStringItem erwartet");
     978         [ #  # ]:          0 :             String aPageName = pStateItem->GetValue();
     979                 :            : 
     980 [ #  # ][ #  # ]:          0 :             if( !pNavigatorWin->maTlbObjects.HasSelectedChildren( aPageName ) )
     981                 :            :             {
     982         [ #  # ]:          0 :                 if( pNavigatorWin->maTlbObjects.GetSelectionMode() == MULTIPLE_SELECTION )
     983                 :            :                 {
     984                 :            :                     // Weil sonst immer dazuselektiert wird
     985         [ #  # ]:          0 :                     pNavigatorWin->maTlbObjects.SelectAll( sal_False );
     986                 :            :                 }
     987         [ #  # ]:          0 :                 pNavigatorWin->maTlbObjects.SelectEntry( aPageName );
     988         [ #  # ]:          0 :             }
     989                 :            :         }
     990                 :            :     }
     991                 :          0 : }
     992                 :            : 
     993                 :            : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10