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

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #include "OutlineViewShell.hxx"
      21             : 
      22             : #include <com/sun/star/presentation/XPresentation2.hpp>
      23             : #include <com/sun/star/beans/PropertyValue.hpp>
      24             : #include <com/sun/star/uno/Any.hxx>
      25             : 
      26             : #include "app.hrc"
      27             : #include <svx/hlnkitem.hxx>
      28             : #include <sfx2/docfile.hxx>
      29             : #include <sfx2/dispatch.hxx>
      30             : #include <sfx2/request.hxx>
      31             : #include <svl/eitem.hxx>
      32             : #include <sfx2/zoomitem.hxx>
      33             : #include <svx/svxids.hrc>
      34             : #include <vcl/msgbox.hxx>
      35             : #include <editeng/eeitem.hxx>
      36             : #include <editeng/flditem.hxx>
      37             : #include <editeng/editstat.hxx>
      38             : #include "optsitem.hxx"
      39             : #include <unotools/useroptions.hxx>
      40             : 
      41             : #include <sfx2/viewfrm.hxx>
      42             : #include "Outliner.hxx"
      43             : #include "Window.hxx"
      44             : #include "fubullet.hxx"
      45             : #include "fuolbull.hxx"
      46             : #include "FrameView.hxx"
      47             : #include "fuzoom.hxx"
      48             : #include "fuscale.hxx"
      49             : #include "fuchar.hxx"
      50             : #include "fuinsfil.hxx"
      51             : #include "fuprobjs.hxx"
      52             : #include "futhes.hxx"
      53             : #include "futempl.hxx"
      54             : #include "fusldlg.hxx"
      55             : #include "zoomlist.hxx"
      56             : #include "fuexpand.hxx"
      57             : #include "fusumry.hxx"
      58             : #include "fucushow.hxx"
      59             : #include "drawdoc.hxx"
      60             : #include "sdattr.hxx"
      61             : #include "ViewShellBase.hxx"
      62             : #include "sdabstdlg.hxx"
      63             : #include "framework/FrameworkHelper.hxx"
      64             : #include "DrawViewShell.hxx"
      65             : #include "slideshow.hxx"
      66             : #include <boost/scoped_ptr.hpp>
      67             : 
      68             : using namespace ::com::sun::star::uno;
      69             : using namespace ::com::sun::star::presentation;
      70             : using namespace ::com::sun::star::beans;
      71             : 
      72             : namespace sd {
      73             : 
      74             : /************************************************************************/
      75             : 
      76             : /**
      77             :  * SfxRequests for temporary functions
      78             :  */
      79             : 
      80           0 : void OutlineViewShell::FuTemporary(SfxRequest &rReq)
      81             : {
      82           0 :     DeactivateCurrentFunction();
      83             : 
      84           0 :     OutlinerView* pOutlinerView = pOlView->GetViewByWindow( GetActiveWindow() );
      85           0 :     sal_uInt16 nSId = rReq.GetSlot();
      86             : 
      87           0 :     switch( nSId )
      88             :     {
      89             :         case SID_ATTR_ZOOM:
      90             :         {
      91           0 :             const SfxItemSet* pArgs = rReq.GetArgs();
      92             : 
      93           0 :             if ( pArgs )
      94             :             {
      95             :                 SvxZoomType eZT = ( ( const SvxZoomItem& ) pArgs->
      96           0 :                                             Get( SID_ATTR_ZOOM ) ).GetType();
      97           0 :                 switch( eZT )
      98             :                 {
      99             :                     case SVX_ZOOM_PERCENT:
     100             :                         SetZoom( (long) ( ( const SvxZoomItem& ) pArgs->
     101           0 :                                             Get( SID_ATTR_ZOOM ) ).GetValue() );
     102           0 :                         Invalidate( SID_ATTR_ZOOM );
     103           0 :                         Invalidate( SID_ATTR_ZOOMSLIDER );
     104           0 :                         break;
     105             :                     default:
     106           0 :                         break;
     107             :                 }
     108           0 :                 rReq.Done();
     109             :             }
     110             :             else
     111             :             {
     112             :                 // open the zoom dialog here
     113           0 :                 SetCurrentFunction( FuScale::Create( this, GetActiveWindow(), pOlView, GetDoc(), rReq ) );
     114             :             }
     115           0 :             Cancel();
     116             :         }
     117           0 :         break;
     118             : 
     119             :         case SID_ATTR_ZOOMSLIDER:
     120             :         {
     121           0 :             const SfxItemSet* pArgs = rReq.GetArgs();
     122             : 
     123           0 :             if (pArgs && pArgs->Count () == 1 )
     124             :             {
     125           0 :                 SFX_REQUEST_ARG (rReq, pScale, SfxUInt16Item, SID_ATTR_ZOOMSLIDER, false);
     126           0 :                 if (CHECK_RANGE (5, pScale->GetValue (), 3000))
     127             :                 {
     128           0 :                     SetZoom (pScale->GetValue ());
     129             : 
     130           0 :                     SfxBindings& rBindings = GetViewFrame()->GetBindings();
     131           0 :                     rBindings.Invalidate( SID_ATTR_ZOOM );
     132           0 :                     rBindings.Invalidate( SID_ZOOM_IN );
     133           0 :                     rBindings.Invalidate( SID_ZOOM_OUT );
     134           0 :                     rBindings.Invalidate( SID_ATTR_ZOOMSLIDER );
     135             : 
     136             :                 }
     137             :             }
     138             : 
     139           0 :             Cancel();
     140           0 :             rReq.Done ();
     141           0 :             break;
     142             :         }
     143             : 
     144             :         case SID_ZOOM_OUT:
     145             :         {
     146           0 :             SetZoom( std::min( (long) ( GetActiveWindow()->GetZoom() * 2 ), (long) GetActiveWindow()->GetMaxZoom() ) );
     147           0 :             Rectangle aVisAreaWin = GetActiveWindow()->PixelToLogic( Rectangle( Point(0,0),
     148           0 :                                              GetActiveWindow()->GetOutputSizePixel()) );
     149           0 :             mpZoomList->InsertZoomRect(aVisAreaWin);
     150           0 :             Invalidate( SID_ATTR_ZOOM );
     151           0 :             Invalidate( SID_ZOOM_IN );
     152           0 :             Invalidate( SID_ATTR_ZOOMSLIDER );
     153           0 :             Cancel();
     154           0 :             rReq.Done();
     155             :         }
     156           0 :         break;
     157             : 
     158             :         case SID_SIZE_REAL:
     159             :         {
     160           0 :             SetZoom( 100 );
     161           0 :             Rectangle aVisAreaWin = GetActiveWindow()->PixelToLogic( Rectangle( Point(0,0),
     162           0 :                                              GetActiveWindow()->GetOutputSizePixel()) );
     163           0 :             mpZoomList->InsertZoomRect(aVisAreaWin);
     164           0 :             Invalidate( SID_ATTR_ZOOM );
     165           0 :             Invalidate( SID_ATTR_ZOOMSLIDER );
     166           0 :             Cancel();
     167           0 :             rReq.Done();
     168             :         }
     169           0 :         break;
     170             : 
     171             :         case SID_ZOOM_IN:
     172             :         {
     173           0 :             SetZoom( std::max( (long) ( GetActiveWindow()->GetZoom() / 2 ), (long) GetActiveWindow()->GetMinZoom() ) );
     174           0 :             Rectangle aVisAreaWin = GetActiveWindow()->PixelToLogic( Rectangle( Point(0,0),
     175           0 :                                              GetActiveWindow()->GetOutputSizePixel()) );
     176           0 :             mpZoomList->InsertZoomRect(aVisAreaWin);
     177           0 :             Invalidate( SID_ATTR_ZOOM );
     178           0 :             Invalidate( SID_ZOOM_OUT);
     179           0 :             Invalidate( SID_ZOOM_IN );
     180           0 :             Invalidate( SID_ATTR_ZOOMSLIDER );
     181           0 :             Cancel();
     182           0 :             rReq.Done();
     183             :         }
     184           0 :         break;
     185             : 
     186             :         case SID_OUTLINE_COLLAPSE_ALL:
     187             :         {
     188           0 :             pOutlinerView->CollapseAll();
     189           0 :             Cancel();
     190           0 :             rReq.Done();
     191             :         }
     192           0 :         break;
     193             : 
     194             :         case SID_OUTLINE_COLLAPSE:
     195             :         {
     196           0 :             pOutlinerView->Collapse();
     197           0 :             Cancel();
     198           0 :             rReq.Done();
     199             :         }
     200           0 :         break;
     201             : 
     202             :         case SID_OUTLINE_EXPAND_ALL:
     203             :         {
     204           0 :             pOutlinerView->ExpandAll();
     205           0 :             Cancel();
     206           0 :             rReq.Done();
     207             :         }
     208           0 :         break;
     209             : 
     210             :         case SID_OUTLINE_EXPAND:
     211             :         {
     212           0 :             pOutlinerView->Expand();
     213           0 :             Cancel();
     214           0 :             rReq.Done();
     215             :         }
     216           0 :         break;
     217             : 
     218             :         case SID_OUTLINE_FORMAT:
     219             :         {
     220           0 :             ::Outliner* pOutl = pOutlinerView->GetOutliner();
     221           0 :             pOutl->SetFlatMode( !pOutl->IsFlatMode() );
     222           0 :             Invalidate( SID_COLORVIEW );
     223           0 :             Cancel();
     224           0 :             rReq.Done();
     225             :         }
     226           0 :         break;
     227             : 
     228             :         case SID_SELECTALL:
     229             :         {
     230           0 :             ::Outliner& rOutl = pOlView->GetOutliner();
     231           0 :             sal_Int32 nParaCount = rOutl.GetParagraphCount();
     232           0 :             if (nParaCount > 0)
     233             :             {
     234           0 :                 pOutlinerView->SelectRange( 0, nParaCount );
     235             :             }
     236           0 :             Cancel();
     237             :         }
     238           0 :         break;
     239             : 
     240             :         case SID_PRESENTATION:
     241             :         case SID_PRESENTATION_CURRENT_SLIDE:
     242             :         case SID_REHEARSE_TIMINGS:
     243             :         {
     244           0 :             pOlView->PrepareClose();
     245           0 :             ShowSlideShow(rReq);
     246           0 :             Cancel();
     247           0 :             rReq.Done();
     248             :         }
     249           0 :         break;
     250             : 
     251             :         case SID_COLORVIEW:
     252             :         {
     253           0 :             ::Outliner* pOutl = pOutlinerView->GetOutliner();
     254           0 :             sal_uLong nCntrl = pOutl->GetControlWord();
     255             : 
     256           0 :             if ( !(nCntrl & EE_CNTRL_NOCOLORS) )
     257             :             {
     258             :                 // color view is enabled: disable
     259           0 :                 pOutl->SetControlWord(nCntrl | EE_CNTRL_NOCOLORS);
     260             :             }
     261             :             else
     262             :             {
     263             :                 // color view is disabled: enable
     264           0 :                 pOutl->SetControlWord(nCntrl & ~EE_CNTRL_NOCOLORS);
     265             :             }
     266             : 
     267           0 :             InvalidateWindows();
     268           0 :             Invalidate( SID_COLORVIEW );
     269           0 :             Cancel();
     270           0 :             rReq.Done();
     271             :         }
     272           0 :         break;
     273             : 
     274             :         case SID_STYLE_EDIT:
     275             :         case SID_STYLE_UPDATE_BY_EXAMPLE:
     276             :         {
     277           0 :             if( rReq.GetArgs() )
     278             :             {
     279           0 :                 SetCurrentFunction( FuTemplate::Create( this, GetActiveWindow(), pOlView, GetDoc(), rReq ) );
     280           0 :                 Cancel();
     281             :             }
     282             : 
     283           0 :             rReq.Ignore ();
     284             :         }
     285           0 :         break;
     286             : 
     287             :         case SID_PRESENTATION_DLG:
     288             :         {
     289           0 :             SetCurrentFunction( FuSlideShowDlg::Create( this, GetActiveWindow(), pOlView, GetDoc(), rReq ) );
     290           0 :             Cancel();
     291             :         }
     292           0 :         break;
     293             : 
     294             :         case SID_REMOTE_DLG:
     295             :         {
     296             : #ifdef ENABLE_SDREMOTE
     297           0 :              SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
     298           0 :              VclAbstractDialog* pDlg = pFact ? pFact->CreateRemoteDialog(GetActiveWindow()) : 0;
     299           0 :              if (pDlg)
     300           0 :                  pDlg->Execute();
     301             : #endif
     302             :         }
     303           0 :         break;
     304             : 
     305             :         case SID_CUSTOMSHOW_DLG:
     306             :         {
     307           0 :             SetCurrentFunction( FuCustomShowDlg::Create( this, GetActiveWindow(), pOlView, GetDoc(), rReq ) );
     308           0 :             Cancel();
     309             :         }
     310           0 :         break;
     311             : 
     312             :         case SID_PHOTOALBUM:
     313             :         {
     314           0 :             SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
     315             :             boost::scoped_ptr<VclAbstractDialog> pDlg(pFact ? pFact->CreateSdPhotoAlbumDialog(
     316           0 :                 GetActiveWindow(),
     317           0 :                 GetDoc()) : 0);
     318             : 
     319           0 :             if (pDlg)
     320             :             {
     321           0 :                 pDlg->Execute();
     322           0 :                 pDlg.reset();
     323             :             }
     324           0 :             Cancel();
     325           0 :             rReq.Ignore ();
     326             :         }
     327           0 :         break;
     328             :     }
     329             : 
     330           0 :     if(HasCurrentFunction())
     331           0 :         GetCurrentFunction()->Activate();
     332             : 
     333           0 :     Invalidate( SID_OUTLINE_COLLAPSE_ALL );
     334           0 :     Invalidate( SID_OUTLINE_COLLAPSE );
     335           0 :     Invalidate( SID_OUTLINE_EXPAND_ALL );
     336           0 :     Invalidate( SID_OUTLINE_EXPAND );
     337             : 
     338           0 :     SfxBindings& rBindings = GetViewFrame()->GetBindings();
     339           0 :     rBindings.Invalidate( SID_OUTLINE_LEFT );
     340           0 :     rBindings.Invalidate( SID_OUTLINE_RIGHT );
     341           0 :     rBindings.Invalidate( SID_OUTLINE_UP );
     342           0 :     rBindings.Invalidate( SID_OUTLINE_DOWN );
     343             : 
     344           0 :     Invalidate( SID_OUTLINE_FORMAT );
     345           0 :     Invalidate( SID_COLORVIEW );
     346           0 :     Invalidate(SID_CUT);
     347           0 :     Invalidate(SID_COPY);
     348           0 :     Invalidate(SID_PASTE);
     349           0 :     Invalidate(SID_PASTE_UNFORMATTED);
     350           0 : }
     351             : 
     352           0 : void OutlineViewShell::ShowSlideShow(SfxRequest& rReq)
     353             : {
     354           0 :     slideshowhelp::ShowSlideShow(rReq, *GetDoc());
     355           0 : }
     356             : 
     357           0 : void OutlineViewShell::FuTemporaryModify(SfxRequest &rReq)
     358             : {
     359           0 :     sal_uInt16 nSId = rReq.GetSlot();
     360           0 :     boost::scoped_ptr< OutlineViewModelChangeGuard > aGuard;
     361           0 :     if (nSId != SID_OUTLINE_BULLET && nSId != FN_SVX_SET_BULLET && nSId != FN_SVX_SET_NUMBER)
     362             :     {
     363           0 :         aGuard.reset( new OutlineViewModelChangeGuard(*pOlView) );
     364             :     }
     365           0 :     DeactivateCurrentFunction();
     366             : 
     367           0 :     OutlinerView* pOutlinerView = pOlView->GetViewByWindow( GetActiveWindow() );
     368             :     //sal_uInt16 nSId = rReq.GetSlot();
     369             : 
     370           0 :     switch( nSId )
     371             :     {
     372             :         case SID_HYPERLINK_SETLINK:
     373             :         {
     374           0 :             const SfxItemSet* pReqArgs = rReq.GetArgs();
     375             : 
     376           0 :             if (pReqArgs)
     377             :             {
     378             :                 SvxHyperlinkItem* pHLItem =
     379           0 :                 (SvxHyperlinkItem*) &pReqArgs->Get(SID_HYPERLINK_SETLINK);
     380             : 
     381           0 :                 SvxFieldItem aURLItem(SvxURLField(pHLItem->GetURL(),
     382           0 :                                                   pHLItem->GetName(),
     383           0 :                                                   SVXURLFORMAT_REPR), EE_FEATURE_FIELD);
     384           0 :                 ESelection aSel( pOutlinerView->GetSelection() );
     385           0 :                 pOutlinerView->InsertField(aURLItem);
     386           0 :                 if ( aSel.nStartPos <= aSel.nEndPos )
     387           0 :                     aSel.nEndPos = aSel.nStartPos + 1;
     388             :                 else
     389           0 :                     aSel.nStartPos = aSel.nEndPos + 1;
     390           0 :                 pOutlinerView->SetSelection( aSel );
     391             :             }
     392             : 
     393           0 :             Cancel();
     394           0 :             rReq.Ignore ();
     395             :         }
     396           0 :         break;
     397             : 
     398             :         case FN_INSERT_SOFT_HYPHEN:
     399             :         case FN_INSERT_HARDHYPHEN:
     400             :         case FN_INSERT_HARD_SPACE:
     401             :         case SID_INSERT_RLM :
     402             :         case SID_INSERT_LRM :
     403             :         case SID_INSERT_ZWNBSP :
     404             :         case SID_INSERT_ZWSP:
     405             :         case SID_CHARMAP:
     406             :         {
     407           0 :             SetCurrentFunction( FuBullet::Create( this, GetActiveWindow(), pOlView, GetDoc(), rReq ) );
     408           0 :             Cancel();
     409             :         }
     410           0 :         break;
     411             : 
     412             :         case SID_OUTLINE_BULLET:
     413             :         case FN_SVX_SET_BULLET:
     414             :         case FN_SVX_SET_NUMBER:
     415             :         {
     416           0 :             SetCurrentFunction( FuOutlineBullet::Create( this, GetActiveWindow(), pOlView, GetDoc(), rReq ) );
     417           0 :             Cancel();
     418             :         }
     419           0 :         break;
     420             : 
     421             :         case SID_THESAURUS:
     422             :         {
     423           0 :             SetCurrentFunction( FuThesaurus::Create( this, GetActiveWindow(), pOlView, GetDoc(), rReq ) );
     424           0 :             Cancel();
     425           0 :             rReq.Ignore ();
     426             :         }
     427           0 :         break;
     428             : 
     429             :         case SID_CHAR_DLG_EFFECT:
     430             :         case SID_CHAR_DLG:
     431             :         {
     432           0 :             SetCurrentFunction( FuChar::Create( this, GetActiveWindow(), pOlView, GetDoc(), rReq ) );
     433           0 :             Cancel();
     434             :         }
     435           0 :         break;
     436             : 
     437             :         case SID_INSERTFILE:
     438             :         {
     439           0 :             SetCurrentFunction( FuInsertFile::Create(this, GetActiveWindow(), pOlView, GetDoc(), rReq) );
     440           0 :             Cancel();
     441             :         }
     442           0 :         break;
     443             : 
     444             :         case SID_PRESENTATIONOBJECT:
     445             :         {
     446           0 :             SetCurrentFunction( FuPresentationObjects::Create(this, GetActiveWindow(), pOlView, GetDoc(), rReq) );
     447           0 :             Cancel();
     448             :         }
     449           0 :         break;
     450             : 
     451             :         case SID_SET_DEFAULT:
     452             :         {
     453           0 :             pOutlinerView->RemoveAttribs(true); // sal_True = also paragraph attributes
     454           0 :             Cancel();
     455           0 :             rReq.Done();
     456             :         }
     457           0 :         break;
     458             : 
     459             :         case SID_SUMMARY_PAGE:
     460             :         {
     461           0 :             pOlView->SetSelectedPages();
     462           0 :             SetCurrentFunction( FuSummaryPage::Create( this, GetActiveWindow(), pOlView, GetDoc(), rReq ) );
     463           0 :             pOlView->GetOutliner().Clear();
     464           0 :             pOlView->FillOutliner();
     465           0 :             pOlView->GetActualPage();
     466           0 :             Cancel();
     467             :         }
     468           0 :         break;
     469             : 
     470             :         case SID_EXPAND_PAGE:
     471             :         {
     472           0 :             pOlView->SetSelectedPages();
     473           0 :             SetCurrentFunction( FuExpandPage::Create( this, GetActiveWindow(), pOlView, GetDoc(), rReq ) );
     474           0 :             pOlView->GetOutliner().Clear();
     475           0 :             pOlView->FillOutliner();
     476           0 :             pOlView->GetActualPage();
     477           0 :             Cancel();
     478             :         }
     479           0 :         break;
     480             : 
     481             :         case SID_INSERT_FLD_DATE_FIX:
     482             :         case SID_INSERT_FLD_DATE_VAR:
     483             :         case SID_INSERT_FLD_TIME_FIX:
     484             :         case SID_INSERT_FLD_TIME_VAR:
     485             :         case SID_INSERT_FLD_AUTHOR:
     486             :         case SID_INSERT_FLD_PAGE:
     487             :         case SID_INSERT_FLD_PAGE_TITLE:
     488             :         case SID_INSERT_FLD_PAGES:
     489             :         case SID_INSERT_FLD_FILE:
     490             :         {
     491           0 :             boost::scoped_ptr<SvxFieldItem> pFieldItem;
     492             : 
     493           0 :             switch( nSId )
     494             :             {
     495             :                 case SID_INSERT_FLD_DATE_FIX:
     496             :                     pFieldItem.reset(new SvxFieldItem(
     497           0 :                         SvxDateField( Date( Date::SYSTEM ), SVXDATETYPE_FIX ), EE_FEATURE_FIELD ));
     498           0 :                 break;
     499             : 
     500             :                 case SID_INSERT_FLD_DATE_VAR:
     501           0 :                     pFieldItem.reset(new SvxFieldItem( SvxDateField(), EE_FEATURE_FIELD ));
     502           0 :                 break;
     503             : 
     504             :                 case SID_INSERT_FLD_TIME_FIX:
     505             :                     pFieldItem.reset(new SvxFieldItem(
     506           0 :                         SvxExtTimeField( ::tools::Time( ::tools::Time::SYSTEM ), SVXTIMETYPE_FIX ), EE_FEATURE_FIELD ));
     507           0 :                 break;
     508             : 
     509             :                 case SID_INSERT_FLD_TIME_VAR:
     510           0 :                     pFieldItem.reset(new SvxFieldItem( SvxExtTimeField(), EE_FEATURE_FIELD ));
     511           0 :                 break;
     512             : 
     513             :                 case SID_INSERT_FLD_AUTHOR:
     514             :                 {
     515           0 :                     SvtUserOptions aUserOptions;
     516             :                     pFieldItem.reset(new SvxFieldItem(
     517             :                             SvxAuthorField(
     518             :                                 aUserOptions.GetFirstName(), aUserOptions.GetLastName(), aUserOptions.GetID() )
     519           0 :                                 , EE_FEATURE_FIELD ));
     520             :                 }
     521           0 :                 break;
     522             : 
     523             :                 case SID_INSERT_FLD_PAGE:
     524           0 :                     pFieldItem.reset(new SvxFieldItem( SvxPageField(), EE_FEATURE_FIELD ));
     525           0 :                 break;
     526             : 
     527             :                 case SID_INSERT_FLD_PAGE_TITLE:
     528           0 :                     pFieldItem.reset(new SvxFieldItem( SvxPageTitleField(), EE_FEATURE_FIELD));
     529           0 :                 break;
     530             : 
     531             :                 case SID_INSERT_FLD_PAGES:
     532           0 :                     pFieldItem.reset(new SvxFieldItem( SvxPagesField(), EE_FEATURE_FIELD ));
     533           0 :                 break;
     534             : 
     535             :                 case SID_INSERT_FLD_FILE:
     536             :                 {
     537           0 :                     OUString aName;
     538           0 :                     if( GetDocSh()->HasName() )
     539           0 :                         aName = GetDocSh()->GetMedium()->GetName();
     540             :                     //else
     541             :                     //  aName = GetDocSh()->GetName();
     542           0 :                     pFieldItem.reset(new SvxFieldItem( SvxExtFileField( aName ), EE_FEATURE_FIELD ));
     543             :                 }
     544           0 :                 break;
     545             :             }
     546             : 
     547           0 :             const SvxFieldItem* pOldFldItem = pOutlinerView->GetFieldAtSelection();
     548             : 
     549           0 :             if( pOldFldItem && ( pOldFldItem->GetField()->ISA( SvxURLField ) ||
     550           0 :                                 pOldFldItem->GetField()->ISA( SvxDateField ) ||
     551           0 :                                 pOldFldItem->GetField()->ISA( SvxTimeField ) ||
     552           0 :                                 pOldFldItem->GetField()->ISA( SvxExtTimeField ) ||
     553           0 :                                 pOldFldItem->GetField()->ISA( SvxExtFileField ) ||
     554           0 :                                 pOldFldItem->GetField()->ISA( SvxAuthorField ) ||
     555           0 :                                 pOldFldItem->GetField()->ISA( SvxPageField ) ||
     556           0 :                                 pOldFldItem->GetField()->ISA( SvxPagesField )) )
     557             :             {
     558             :                 // select field, so it gets deleted on Insert
     559           0 :                 ESelection aSel = pOutlinerView->GetSelection();
     560           0 :                 if( aSel.nStartPos == aSel.nEndPos )
     561           0 :                     aSel.nEndPos++;
     562           0 :                 pOutlinerView->SetSelection( aSel );
     563             :             }
     564             : 
     565           0 :             if( pFieldItem )
     566           0 :                 pOutlinerView->InsertField( *pFieldItem );
     567             : 
     568           0 :             pFieldItem.reset();
     569             : 
     570           0 :             Cancel();
     571           0 :             rReq.Ignore ();
     572             :         }
     573           0 :         break;
     574             : 
     575             :         case SID_MODIFY_FIELD:
     576             :         {
     577           0 :             const SvxFieldItem* pFldItem = pOutlinerView->GetFieldAtSelection();
     578             : 
     579           0 :             if( pFldItem && (pFldItem->GetField()->ISA( SvxDateField ) ||
     580           0 :                                 pFldItem->GetField()->ISA( SvxAuthorField ) ||
     581           0 :                                 pFldItem->GetField()->ISA( SvxExtFileField ) ||
     582           0 :                                 pFldItem->GetField()->ISA( SvxExtTimeField ) ) )
     583             :             {
     584             :                 // Dialog...
     585           0 :                 SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
     586           0 :                 boost::scoped_ptr<AbstractSdModifyFieldDlg> pDlg(pFact ? pFact->CreateSdModifyFieldDlg(GetActiveWindow(), pFldItem->GetField(), pOutlinerView->GetAttribs() ) : 0);
     587           0 :                 if( pDlg && (pDlg->Execute() == RET_OK) )
     588             :                 {
     589           0 :                     boost::scoped_ptr<SvxFieldData> pField(pDlg->GetField());
     590           0 :                     if( pField )
     591             :                     {
     592           0 :                         SvxFieldItem aFieldItem( *pField, EE_FEATURE_FIELD );
     593             :                         //pOLV->DeleteSelected(); <-- unfortunately missing!
     594             :                         // select field, so it gets deleted on Insert
     595           0 :                         ESelection aSel = pOutlinerView->GetSelection();
     596           0 :                         bool bSel = true;
     597           0 :                         if( aSel.nStartPos == aSel.nEndPos )
     598             :                         {
     599           0 :                             bSel = false;
     600           0 :                             aSel.nEndPos++;
     601             :                         }
     602           0 :                         pOutlinerView->SetSelection( aSel );
     603             : 
     604           0 :                         pOutlinerView->InsertField( aFieldItem );
     605             : 
     606             :                         // reset selection to original state
     607           0 :                         if( !bSel )
     608           0 :                             aSel.nEndPos--;
     609           0 :                         pOutlinerView->SetSelection( aSel );
     610             : 
     611           0 :                         pField.reset();
     612             :                     }
     613             : 
     614           0 :                     SfxItemSet aSet( pDlg->GetItemSet() );
     615           0 :                     if( aSet.Count() )
     616             :                     {
     617           0 :                         pOutlinerView->SetAttribs( aSet );
     618             : 
     619           0 :                         ::Outliner* pOutliner = pOutlinerView->GetOutliner();
     620           0 :                         if( pOutliner )
     621           0 :                             pOutliner->UpdateFields();
     622           0 :                     }
     623           0 :                 }
     624             :             }
     625             : 
     626           0 :             Cancel();
     627           0 :             rReq.Ignore ();
     628             :         }
     629           0 :         break;
     630             :     }
     631             : 
     632           0 :     if(HasCurrentFunction())
     633           0 :         GetCurrentFunction()->Activate();
     634             : 
     635           0 :     Invalidate( SID_OUTLINE_COLLAPSE_ALL );
     636           0 :     Invalidate( SID_OUTLINE_COLLAPSE );
     637           0 :     Invalidate( SID_OUTLINE_EXPAND_ALL );
     638           0 :     Invalidate( SID_OUTLINE_EXPAND );
     639             : 
     640           0 :     SfxBindings& rBindings = GetViewFrame()->GetBindings();
     641           0 :     rBindings.Invalidate( SID_OUTLINE_LEFT );
     642           0 :     rBindings.Invalidate( SID_OUTLINE_RIGHT );
     643           0 :     rBindings.Invalidate( SID_OUTLINE_UP );
     644           0 :     rBindings.Invalidate( SID_OUTLINE_DOWN );
     645             : 
     646           0 :     Invalidate( SID_OUTLINE_FORMAT );
     647           0 :     Invalidate( SID_COLORVIEW );
     648           0 :     Invalidate(SID_CUT);
     649           0 :     Invalidate(SID_COPY);
     650           0 :     Invalidate(SID_PASTE);
     651           0 :     Invalidate(SID_PASTE_UNFORMATTED);
     652           0 : }
     653             : 
     654         114 : } // end of namespace sd
     655             : 
     656             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10