LCOV - code coverage report
Current view: top level - libreoffice/sd/source/ui/view - drviewsb.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 1 403 0.2 %
Date: 2012-12-27 Functions: 2 7 28.6 %
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 <com/sun/star/ui/dialogs/XExecutableDialog.hpp>
      21             : #include <comphelper/processfactory.hxx>
      22             : #include <svx/svdlayer.hxx>
      23             : #include <svx/svxids.hrc>
      24             : #include <sfx2/msgpool.hxx>
      25             : #include <sfx2/viewfrm.hxx>
      26             : #include <svx/hlnkitem.hxx>
      27             : #include <editeng/eeitem.hxx>
      28             : #include <editeng/flditem.hxx>
      29             : #include <vcl/msgbox.hxx>
      30             : #include <sfx2/request.hxx>
      31             : #include <sfx2/dispatch.hxx>
      32             : #include <svx/svdorect.hxx>
      33             : #include <sfx2/docfile.hxx>
      34             : #include <basic/sbstar.hxx>
      35             : #include <basic/sberrors.hxx>
      36             : #include <svx/fmshell.hxx>
      37             : #include <svx/svxdlg.hxx>
      38             : #include <svx/dialogs.hrc>
      39             : #include <unotools/useroptions.hxx>
      40             : 
      41             : #include "app.hrc"
      42             : #include "strings.hrc"
      43             : #include "res_bmp.hrc"
      44             : #include "glob.hrc"
      45             : #include "Outliner.hxx"
      46             : #include "Window.hxx"
      47             : #include "app.hxx"
      48             : #include "sdattr.hxx"
      49             : #include "drawdoc.hxx"
      50             : #include "DrawDocShell.hxx"
      51             : #include "sdresid.hxx"
      52             : #include "sdpage.hxx"
      53             : #include "DrawViewShell.hxx"
      54             : #include "drawview.hxx"
      55             : #include "unmodpg.hxx"
      56             : #include "undolayer.hxx"
      57             : #include "ViewShellBase.hxx"
      58             : #include "FormShellManager.hxx"
      59             : #include "LayerTabBar.hxx"
      60             : #include "sdabstdlg.hxx"
      61             : #include "SlideSorterViewShell.hxx"
      62             : #include "SlideSorter.hxx"
      63             : #include "controller/SlideSorterController.hxx"
      64             : 
      65             : namespace sd {
      66             : 
      67             : /*************************************************************************
      68             : |*
      69             : |* SfxRequests fuer temporaere Funktionen
      70             : |*
      71             : \************************************************************************/
      72             : 
      73           0 : void DrawViewShell::FuTemp02(SfxRequest& rReq)
      74             : {
      75           0 :     sal_uInt16 nSId = rReq.GetSlot();
      76           0 :     switch( nSId )
      77             :     {
      78             :         case SID_INSERTLAYER:
      79             :         {
      80           0 :             if ( mpDrawView->IsTextEdit() )
      81             :             {
      82           0 :                 mpDrawView->SdrEndTextEdit();
      83             :             }
      84             : 
      85           0 :             SdrLayerAdmin& rLayerAdmin = GetDoc()->GetLayerAdmin();
      86           0 :             sal_uInt16 nLayerCnt = rLayerAdmin.GetLayerCount();
      87           0 :             sal_uInt16 nLayer = nLayerCnt - 2 + 1;
      88           0 :             String aLayerName ( SdResId(STR_LAYER) ), aLayerTitle, aLayerDesc;
      89           0 :             aLayerName += String::CreateFromInt32( (sal_Int32)nLayer );
      90           0 :             sal_Bool bIsVisible = sal_False;
      91           0 :             sal_Bool bIsLocked = sal_False;
      92           0 :             sal_Bool bIsPrintable = sal_False;
      93             : 
      94           0 :             const SfxItemSet* pArgs = rReq.GetArgs();
      95             : 
      96           0 :             if (! pArgs)
      97             :             {
      98           0 :                 SfxItemSet aNewAttr( GetDoc()->GetPool(), ATTR_LAYER_START, ATTR_LAYER_END );
      99             : 
     100           0 :                 aNewAttr.Put( SdAttrLayerName( aLayerName ) );
     101           0 :                 aNewAttr.Put( SdAttrLayerTitle() );
     102           0 :                 aNewAttr.Put( SdAttrLayerDesc() );
     103           0 :                 aNewAttr.Put( SdAttrLayerVisible() );
     104           0 :                 aNewAttr.Put( SdAttrLayerPrintable() );
     105           0 :                 aNewAttr.Put( SdAttrLayerLocked() );
     106           0 :                 aNewAttr.Put( SdAttrLayerThisPage() );
     107             : 
     108           0 :                 SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
     109           0 :                 AbstractSdInsertLayerDlg* pDlg = pFact ? pFact->CreateSdInsertLayerDlg(NULL, aNewAttr, true, String( SdResId( STR_INSERTLAYER ) ) ) : 0;
     110           0 :                 if( pDlg )
     111             :                 {
     112           0 :                     pDlg->SetHelpId( SD_MOD()->GetSlotPool()->GetSlot( SID_INSERTLAYER )->GetCommand() );
     113             : 
     114             :                     // Ueberpruefung auf schon vorhandene Namen
     115           0 :                     sal_Bool bLoop = sal_True;
     116           0 :                     while( bLoop && pDlg->Execute() == RET_OK )
     117             :                     {
     118           0 :                         pDlg->GetAttr( aNewAttr );
     119           0 :                         aLayerName   = ((SdAttrLayerName &) aNewAttr.Get (ATTR_LAYER_NAME)).GetValue ();
     120             : 
     121           0 :                         if( rLayerAdmin.GetLayer( aLayerName, sal_False )
     122           0 :                             || aLayerName.Len()==0 )
     123             :                         {
     124             :                             // Name ist schon vorhanden
     125             :                             WarningBox aWarningBox (
     126             :                                 GetParentWindow(),
     127             :                                 WinBits( WB_OK ),
     128           0 :                                 String(SdResId( STR_WARN_NAME_DUPLICATE)));
     129           0 :                             aWarningBox.Execute();
     130             :                         }
     131             :                         else
     132           0 :                             bLoop = sal_False;
     133             :                     }
     134           0 :                     if( bLoop ) // wurde abgebrochen
     135             :                     {
     136           0 :                         delete pDlg;
     137             : 
     138           0 :                         Cancel();
     139           0 :                         rReq.Ignore ();
     140             :                         break;
     141             :                     }
     142             :                     else
     143             :                     {
     144           0 :                         aLayerTitle  = ((SdAttrLayerTitle &) aNewAttr.Get (ATTR_LAYER_TITLE)).GetValue ();
     145           0 :                         aLayerDesc   = ((SdAttrLayerDesc &) aNewAttr.Get (ATTR_LAYER_DESC)).GetValue ();
     146           0 :                         bIsVisible   = ((SdAttrLayerVisible &) aNewAttr.Get (ATTR_LAYER_VISIBLE)).GetValue ();
     147           0 :                         bIsLocked    = ((SdAttrLayerLocked &) aNewAttr.Get (ATTR_LAYER_LOCKED)).GetValue () ;
     148           0 :                         bIsPrintable = ((SdAttrLayerPrintable &) aNewAttr.Get (ATTR_LAYER_PRINTABLE)).GetValue () ;
     149             : 
     150           0 :                         delete pDlg;
     151             :                     }
     152           0 :                 }
     153             :             }
     154           0 :             else if (pArgs->Count () != 4)
     155             :                  {
     156             : #ifndef DISABLE_SCRIPTING
     157           0 :                      StarBASIC::FatalError (SbERR_WRONG_ARGS);
     158             : #endif
     159           0 :                      Cancel();
     160           0 :                      rReq.Ignore ();
     161             :                      break;
     162             :                  }
     163             :                  else
     164             :                  {
     165           0 :                      SFX_REQUEST_ARG (rReq, pLayerName, SfxStringItem, ID_VAL_LAYERNAME, sal_False);
     166           0 :                      SFX_REQUEST_ARG (rReq, pIsVisible, SfxBoolItem, ID_VAL_ISVISIBLE, sal_False);
     167           0 :                      SFX_REQUEST_ARG (rReq, pIsLocked, SfxBoolItem, ID_VAL_ISLOCKED, sal_False);
     168           0 :                      SFX_REQUEST_ARG (rReq, pIsPrintable, SfxBoolItem, ID_VAL_ISPRINTABLE, sal_False);
     169             : 
     170           0 :                      aLayerName   = pLayerName->GetValue ();
     171           0 :                      bIsVisible   = pIsVisible->GetValue ();
     172           0 :                      bIsLocked    = pIsLocked->GetValue ();
     173           0 :                      bIsPrintable = pIsPrintable->GetValue ();
     174             :                  }
     175             : 
     176           0 :             String aPrevLayer = mpDrawView->GetActiveLayer();
     177           0 :             String aName;
     178             :             SdrLayer* pLayer;
     179           0 :             sal_uInt16 nPrevLayer = 0;
     180           0 :             nLayerCnt = rLayerAdmin.GetLayerCount();
     181             : 
     182           0 :             for ( nLayer = 0; nLayer < nLayerCnt; nLayer++ )
     183             :             {
     184           0 :                 pLayer = rLayerAdmin.GetLayer(nLayer);
     185           0 :                 aName = pLayer->GetName();
     186             : 
     187           0 :                 if ( aPrevLayer == aName )
     188             :                 {
     189           0 :                     nPrevLayer = Max(nLayer, (sal_uInt16) 4);
     190             :                 }
     191             :             }
     192             : 
     193           0 :             mpDrawView->InsertNewLayer(aLayerName, nPrevLayer + 1);
     194           0 :             pLayer = rLayerAdmin.GetLayer(aLayerName, sal_False);
     195           0 :             if( pLayer )
     196             :             {
     197           0 :                 pLayer->SetTitle( aLayerTitle );
     198           0 :                 pLayer->SetDescription( aLayerDesc );
     199             :             }
     200             : 
     201           0 :             mpDrawView->SetLayerVisible( aLayerName, bIsVisible );
     202           0 :             mpDrawView->SetLayerLocked( aLayerName, bIsLocked);
     203           0 :             mpDrawView->SetLayerPrintable(aLayerName, bIsPrintable);
     204             : 
     205           0 :             mpDrawView->SetActiveLayer(aLayerName);
     206             : 
     207           0 :             ResetActualLayer();
     208             : 
     209           0 :             GetDoc()->SetChanged(sal_True);
     210             : 
     211             :             GetViewFrame()->GetDispatcher()->Execute(SID_SWITCHLAYER,
     212           0 :                     SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD);
     213             : 
     214           0 :             Cancel();
     215           0 :             rReq.Done ();
     216             :         }
     217           0 :         break;
     218             : 
     219             :         case SID_MODIFYLAYER:
     220             :         {
     221           0 :             if ( mpDrawView->IsTextEdit() )
     222             :             {
     223           0 :                 mpDrawView->SdrEndTextEdit();
     224             :             }
     225             : 
     226           0 :             SdrLayerAdmin& rLayerAdmin = GetDoc()->GetLayerAdmin();
     227           0 :             sal_uInt16 nCurPage = GetLayerTabControl()->GetCurPageId();
     228           0 :             String aLayerName( GetLayerTabControl()->GetPageText(nCurPage) );
     229           0 :             SdrLayer* pLayer = rLayerAdmin.GetLayer(aLayerName, sal_False);
     230             : 
     231           0 :             String aLayerTitle( pLayer->GetTitle() );
     232           0 :             String aLayerDesc( pLayer->GetDescription() );
     233             : 
     234           0 :             String aOldLayerName( aLayerName );
     235           0 :             String aOldLayerTitle( aLayerTitle );
     236           0 :             String aOldLayerDesc( aLayerDesc );
     237             : 
     238             :             sal_Bool bIsVisible, bIsLocked, bIsPrintable;
     239           0 :             sal_Bool bOldIsVisible = bIsVisible = mpDrawView->IsLayerVisible(aLayerName);
     240           0 :             sal_Bool bOldIsLocked = bIsLocked = mpDrawView->IsLayerLocked(aLayerName);
     241           0 :             sal_Bool bOldIsPrintable = bIsPrintable = mpDrawView->IsLayerPrintable(aLayerName);
     242             : 
     243             : 
     244           0 :             const SfxItemSet* pArgs = rReq.GetArgs();
     245             :             // darf der Layer geloescht werden ?
     246           0 :             bool bDelete = true;
     247             : 
     248           0 :             String aLayoutLayer ( SdResId(STR_LAYER_LAYOUT) );
     249           0 :             String aControlsLayer ( SdResId(STR_LAYER_CONTROLS) );
     250           0 :             String aMeasureLinesLayer ( SdResId(STR_LAYER_MEASURELINES) );
     251           0 :             String aBackgroundLayer( SdResId(STR_LAYER_BCKGRND) );
     252           0 :             String aBackgroundObjLayer( SdResId(STR_LAYER_BCKGRNDOBJ) );
     253             : 
     254           0 :             if( aLayerName == aLayoutLayer       || aLayerName == aControlsLayer ||
     255           0 :                 aLayerName == aMeasureLinesLayer ||
     256           0 :                 aLayerName == aBackgroundLayer   || aLayerName == aBackgroundObjLayer )
     257             :             {
     258           0 :                 bDelete = false;
     259             :             }
     260             : 
     261           0 :             if (! pArgs)
     262             :             {
     263           0 :                 SfxItemSet aNewAttr( GetDoc()->GetPool(), ATTR_LAYER_START, ATTR_LAYER_END );
     264             : 
     265           0 :                 aNewAttr.Put( SdAttrLayerName( aLayerName ) );
     266           0 :                 aNewAttr.Put( SdAttrLayerTitle( aLayerTitle ) );
     267           0 :                 aNewAttr.Put( SdAttrLayerDesc( aLayerDesc ) );
     268           0 :                 aNewAttr.Put( SdAttrLayerVisible( bIsVisible ) );
     269           0 :                 aNewAttr.Put( SdAttrLayerLocked( bIsLocked ) );
     270           0 :                 aNewAttr.Put( SdAttrLayerPrintable( bIsPrintable ) );
     271           0 :                 aNewAttr.Put( SdAttrLayerThisPage() );
     272             : 
     273           0 :                 SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
     274           0 :                 AbstractSdInsertLayerDlg* pDlg = pFact ? pFact->CreateSdInsertLayerDlg(NULL, aNewAttr, bDelete, String( SdResId( STR_MODIFYLAYER ) ) ) : 0;
     275           0 :                 if( pDlg )
     276             :                 {
     277           0 :                     pDlg->SetHelpId( SD_MOD()->GetSlotPool()->GetSlot( SID_MODIFYLAYER )->GetCommand() );
     278             : 
     279             :                     // Ueberpruefung auf schon vorhandene Namen
     280           0 :                     sal_Bool    bLoop = sal_True;
     281           0 :                     sal_uInt16  nRet = 0;
     282           0 :                     while( bLoop && ( (nRet = pDlg->Execute()) == RET_OK ) )
     283             :                     {
     284           0 :                         pDlg->GetAttr( aNewAttr );
     285           0 :                         aLayerName   = ((SdAttrLayerName &) aNewAttr.Get (ATTR_LAYER_NAME)).GetValue ();
     286             : 
     287           0 :                         if( (rLayerAdmin.GetLayer( aLayerName, sal_False ) &&
     288           0 :                              aLayerName != aOldLayerName) || aLayerName.Len()==0 )
     289             :                         {
     290             :                             // Name ist schon vorhanden
     291             :                             WarningBox aWarningBox (
     292             :                                 GetParentWindow(),
     293             :                                 WinBits( WB_OK ),
     294           0 :                                 String( SdResId( STR_WARN_NAME_DUPLICATE)));
     295           0 :                             aWarningBox.Execute();
     296             :                         }
     297             :                         else
     298           0 :                             bLoop = sal_False;
     299             :                     }
     300           0 :                     switch (nRet)
     301             :                     {
     302             :                         case RET_OK :
     303           0 :                             aLayerTitle  = ((SdAttrLayerTitle &) aNewAttr.Get (ATTR_LAYER_TITLE)).GetValue ();
     304           0 :                             aLayerDesc   = ((SdAttrLayerDesc &) aNewAttr.Get (ATTR_LAYER_DESC)).GetValue ();
     305           0 :                             bIsVisible   = ((const SdAttrLayerVisible &) aNewAttr.Get (ATTR_LAYER_VISIBLE)).GetValue ();
     306           0 :                             bIsLocked    = ((const SdAttrLayerLocked &) aNewAttr.Get (ATTR_LAYER_LOCKED)).GetValue ();
     307           0 :                             bIsPrintable = ((const SdAttrLayerLocked &) aNewAttr.Get (ATTR_LAYER_PRINTABLE)).GetValue ();
     308             : 
     309           0 :                             delete pDlg;
     310           0 :                             break;
     311             : 
     312             :                         default :
     313           0 :                             delete pDlg;
     314           0 :                             rReq.Ignore ();
     315           0 :                             Cancel ();
     316           0 :                             return;
     317             :                     }
     318           0 :                 }
     319             :             }
     320           0 :             else if (pArgs->Count () == 4)
     321             :             {
     322           0 :                 SFX_REQUEST_ARG (rReq, pLayerName, SfxStringItem, ID_VAL_LAYERNAME, sal_False);
     323           0 :                 SFX_REQUEST_ARG (rReq, pIsVisible, SfxBoolItem, ID_VAL_ISVISIBLE, sal_False);
     324           0 :                 SFX_REQUEST_ARG (rReq, pIsLocked, SfxBoolItem, ID_VAL_ISLOCKED, sal_False);
     325           0 :                 SFX_REQUEST_ARG (rReq, pIsPrintable, SfxBoolItem, ID_VAL_ISPRINTABLE, sal_False);
     326             : 
     327           0 :                 aLayerName   = pLayerName->GetValue ();
     328           0 :                 bIsVisible   = pIsVisible->GetValue ();
     329           0 :                 bIsLocked    = pIsLocked->GetValue ();
     330           0 :                 bIsPrintable = pIsPrintable->GetValue ();
     331             :             }
     332             :             else
     333             :             {
     334             : #ifndef DISABLE_SCRIPTING
     335           0 :                 StarBASIC::FatalError (SbERR_WRONG_ARGS);
     336             : #endif
     337           0 :                 Cancel ();
     338           0 :                 rReq.Ignore ();
     339             :                 break;
     340             :             }
     341             : 
     342           0 :             ::svl::IUndoManager* pManager = GetDoc()->GetDocSh()->GetUndoManager();
     343             :             SdLayerModifyUndoAction* pAction = new SdLayerModifyUndoAction(
     344           0 :                 GetDoc(),
     345             :                 pLayer,
     346             :                 // old values
     347             :                 aOldLayerName,
     348             :                 aOldLayerTitle,
     349             :                 aOldLayerDesc,
     350             :                 bOldIsVisible,
     351             :                 bOldIsLocked,
     352             :                 bOldIsPrintable,
     353             :                 // new values
     354             :                 aLayerName,
     355             :                 aLayerTitle,
     356             :                 aLayerDesc,
     357             :                 bIsVisible,
     358             :                 bIsLocked,
     359             :                 bIsPrintable
     360           0 :                 );
     361           0 :             pManager->AddUndoAction( pAction );
     362             : 
     363           0 :             ModifyLayer( pLayer, aLayerName, aLayerTitle, aLayerDesc, bIsVisible, bIsLocked, bIsPrintable );
     364             : 
     365           0 :             Cancel();
     366           0 :             rReq.Done ();
     367             :         }
     368           0 :         break;
     369             : 
     370             :         case SID_RENAMELAYER:
     371             :         {
     372           0 :             if ( mpDrawView->IsTextEdit() )
     373             :             {
     374           0 :                 mpDrawView->SdrEndTextEdit();
     375             :             }
     376             : 
     377           0 :             GetLayerTabControl()->StartEditMode(
     378           0 :                 GetLayerTabControl()->GetCurPageId() );
     379             : 
     380           0 :             Cancel();
     381           0 :             rReq.Ignore ();
     382             :         }
     383           0 :         break;
     384             : 
     385             :         case SID_EDIT_HYPERLINK :
     386             :         {
     387           0 :             GetViewFrame()->GetDispatcher()->Execute( SID_HYPERLINK_DIALOG );
     388             : 
     389           0 :             Cancel();
     390           0 :             rReq.Done ();
     391             :         }
     392           0 :         break;
     393             : 
     394             :         case SID_OPEN_HYPERLINK:
     395             :         {
     396           0 :             OutlinerView* pOutView = mpDrawView->GetTextEditOutlinerView();
     397           0 :             if ( pOutView )
     398             :             {
     399           0 :                 const SvxFieldItem* pFieldItem = pOutView->GetFieldAtSelection();
     400           0 :                 if ( pFieldItem )
     401             :                 {
     402           0 :                     const SvxFieldData* pField = pFieldItem->GetField();
     403           0 :                     if( pField && pField->ISA( SvxURLField ) )
     404             :                     {
     405           0 :                         const SvxURLField* pURLField = static_cast< const SvxURLField* >( pField );
     406             : 
     407           0 :                         SfxStringItem aUrl( SID_FILE_NAME, pURLField->GetURL() );
     408           0 :                         SfxStringItem aTarget( SID_TARGETNAME, pURLField->GetTargetFrame() );
     409             : 
     410           0 :                         String aReferName;
     411           0 :                         SfxViewFrame* pFrame = GetViewFrame();
     412           0 :                         SfxMedium* pMed = pFrame->GetObjectShell()->GetMedium();
     413           0 :                         if (pMed)
     414           0 :                             aReferName = pMed->GetName();
     415             : 
     416           0 :                         SfxFrameItem aFrm( SID_DOCFRAME, pFrame );
     417           0 :                         SfxStringItem aReferer( SID_REFERER, aReferName );
     418             : 
     419           0 :                         SfxBoolItem aNewView( SID_OPEN_NEW_VIEW, sal_False );
     420           0 :                         SfxBoolItem aBrowsing( SID_BROWSE, sal_True );
     421             : 
     422           0 :                         SfxViewFrame* pViewFrm = SfxViewFrame::Current();
     423           0 :                         if (pViewFrm)
     424             :                             pViewFrm->GetDispatcher()->Execute( SID_OPENDOC,
     425             :                                                         SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD,
     426             :                                                         &aUrl, &aTarget,
     427             :                                                         &aFrm, &aReferer,
     428             :                                                         &aNewView, &aBrowsing,
     429           0 :                                                         0L );
     430             :                     }
     431             :                 }
     432             :             }
     433           0 :             Cancel();
     434           0 :             rReq.Done ();
     435             :         }
     436           0 :         break;
     437             : 
     438             :         case SID_HYPERLINK_SETLINK:
     439             :         {
     440           0 :             const SfxItemSet* pReqArgs = rReq.GetArgs();
     441             : 
     442           0 :             if (pReqArgs)
     443             :             {
     444             :                 SvxHyperlinkItem* pHLItem =
     445           0 :                 (SvxHyperlinkItem*) &pReqArgs->Get(SID_HYPERLINK_SETLINK);
     446             : 
     447           0 :                 if (pHLItem->GetInsertMode() == HLINK_FIELD)
     448             :                 {
     449           0 :                     InsertURLField(pHLItem->GetURL(), pHLItem->GetName(),
     450           0 :                                    pHLItem->GetTargetFrame(), NULL);
     451             :                 }
     452           0 :                 else if (pHLItem->GetInsertMode() == HLINK_BUTTON)
     453             :                 {
     454           0 :                     InsertURLButton(pHLItem->GetURL(), pHLItem->GetName(),
     455           0 :                                     pHLItem->GetTargetFrame(), NULL);
     456             :                 }
     457           0 :                 else if (pHLItem->GetInsertMode() == HLINK_DEFAULT)
     458             :                 {
     459           0 :                     OutlinerView* pOlView = mpDrawView->GetTextEditOutlinerView();
     460             : 
     461           0 :                     if (pOlView)
     462             :                     {
     463           0 :                         InsertURLField(pHLItem->GetURL(), pHLItem->GetName(),
     464           0 :                                        pHLItem->GetTargetFrame(), NULL);
     465             :                     }
     466             :                     else
     467             :                     {
     468           0 :                         InsertURLButton(pHLItem->GetURL(), pHLItem->GetName(),
     469           0 :                                         pHLItem->GetTargetFrame(), NULL);
     470             :                     }
     471             :                 }
     472             :             }
     473             : 
     474           0 :             Cancel();
     475           0 :             rReq.Ignore ();
     476             :         }
     477           0 :         break;
     478             : 
     479             :         case SID_INSERT_FLD_DATE_FIX:
     480             :         case SID_INSERT_FLD_DATE_VAR:
     481             :         case SID_INSERT_FLD_TIME_FIX:
     482             :         case SID_INSERT_FLD_TIME_VAR:
     483             :         case SID_INSERT_FLD_AUTHOR:
     484             :         case SID_INSERT_FLD_PAGE:
     485             :         case SID_INSERT_FLD_PAGES:
     486             :         case SID_INSERT_FLD_FILE:
     487             :         {
     488           0 :             sal_uInt16 nMul = 1;
     489           0 :             SvxFieldItem* pFieldItem = 0;
     490             : 
     491           0 :             switch( nSId )
     492             :             {
     493             :                 case SID_INSERT_FLD_DATE_FIX:
     494             :                     pFieldItem = new SvxFieldItem(
     495           0 :                         SvxDateField( Date( Date::SYSTEM ), SVXDATETYPE_FIX ), EE_FEATURE_FIELD );
     496           0 :                 break;
     497             : 
     498             :                 case SID_INSERT_FLD_DATE_VAR:
     499           0 :                     pFieldItem = new SvxFieldItem( SvxDateField(), EE_FEATURE_FIELD );
     500           0 :                 break;
     501             : 
     502             :                 case SID_INSERT_FLD_TIME_FIX:
     503             :                     pFieldItem = new SvxFieldItem(
     504           0 :                         SvxExtTimeField( Time( Time::SYSTEM ), SVXTIMETYPE_FIX ), EE_FEATURE_FIELD );
     505           0 :                 break;
     506             : 
     507             :                 case SID_INSERT_FLD_TIME_VAR:
     508           0 :                     pFieldItem = new SvxFieldItem( SvxExtTimeField(), EE_FEATURE_FIELD );
     509           0 :                 break;
     510             : 
     511             :                 case SID_INSERT_FLD_AUTHOR:
     512             :                 {
     513           0 :                     SvtUserOptions aUserOptions;
     514             :                     pFieldItem = new SvxFieldItem(
     515             :                             SvxAuthorField(
     516           0 :                                 aUserOptions.GetFirstName(), aUserOptions.GetLastName(), aUserOptions.GetID() ), EE_FEATURE_FIELD );
     517             :                 }
     518           0 :                 break;
     519             : 
     520             :                 case SID_INSERT_FLD_PAGE:
     521             :                 {
     522           0 :                     pFieldItem = new SvxFieldItem( SvxPageField(), EE_FEATURE_FIELD );
     523           0 :                     nMul = 3;
     524             :                 }
     525           0 :                 break;
     526             : 
     527             :                 case SID_INSERT_FLD_PAGES:
     528             :                 {
     529           0 :                     pFieldItem = new SvxFieldItem( SvxPagesField(), EE_FEATURE_FIELD );
     530           0 :                     nMul = 3;
     531             :                 }
     532           0 :                 break;
     533             : 
     534             :                 case SID_INSERT_FLD_FILE:
     535             :                 {
     536           0 :                     String aName;
     537           0 :                     if( GetDocSh()->HasName() )
     538           0 :                         aName = GetDocSh()->GetMedium()->GetName();
     539           0 :                     pFieldItem = new SvxFieldItem( SvxExtFileField( aName ), EE_FEATURE_FIELD );
     540             :                 }
     541           0 :                 break;
     542             :             }
     543             : 
     544           0 :             OutlinerView* pOLV = mpDrawView->GetTextEditOutlinerView();
     545             : 
     546           0 :             if( pOLV )
     547             :             {
     548           0 :                 const SvxFieldItem* pOldFldItem = pOLV->GetFieldAtSelection();
     549             : 
     550           0 :                 if( pOldFldItem && ( pOldFldItem->GetField()->ISA( SvxURLField ) ||
     551           0 :                                     pOldFldItem->GetField()->ISA( SvxDateField ) ||
     552           0 :                                     pOldFldItem->GetField()->ISA( SvxTimeField ) ||
     553           0 :                                     pOldFldItem->GetField()->ISA( SvxExtTimeField ) ||
     554           0 :                                     pOldFldItem->GetField()->ISA( SvxExtFileField ) ||
     555           0 :                                     pOldFldItem->GetField()->ISA( SvxAuthorField ) ||
     556           0 :                                     pOldFldItem->GetField()->ISA( SvxPageField ) ) )
     557             :                 {
     558             :                     // Feld selektieren, so dass es beim Insert geloescht wird
     559           0 :                     ESelection aSel = pOLV->GetSelection();
     560           0 :                     if( aSel.nStartPos == aSel.nEndPos )
     561           0 :                         aSel.nEndPos++;
     562           0 :                     pOLV->SetSelection( aSel );
     563             :                 }
     564             : 
     565           0 :                 if( pFieldItem )
     566           0 :                     pOLV->InsertField( *pFieldItem );
     567             :             }
     568             :             else
     569             :             {
     570           0 :                 Outliner* pOutl = GetDoc()->GetInternalOutliner();
     571           0 :                 pOutl->Init( OUTLINERMODE_TEXTOBJECT );
     572           0 :                 sal_uInt16 nOutlMode = pOutl->GetMode();
     573           0 :                 pOutl->SetStyleSheet( 0, NULL );
     574           0 :                 pOutl->QuickInsertField( *pFieldItem, ESelection() );
     575           0 :                 OutlinerParaObject* pOutlParaObject = pOutl->CreateParaObject();
     576             : 
     577           0 :                 SdrRectObj* pRectObj = new SdrRectObj( OBJ_TEXT );
     578           0 :                 pRectObj->SetMergedItem(SdrTextAutoGrowWidthItem(sal_True));
     579             : 
     580           0 :                 pOutl->UpdateFields();
     581           0 :                 pOutl->SetUpdateMode( sal_True );
     582           0 :                 Size aSize( pOutl->CalcTextSize() );
     583           0 :                 aSize.Width() *= nMul;
     584           0 :                 pOutl->SetUpdateMode( sal_False );
     585             : 
     586           0 :                 Point aPos;
     587           0 :                 Rectangle aRect( aPos, GetActiveWindow()->GetOutputSizePixel() );
     588           0 :                 aPos = aRect.Center();
     589           0 :                 aPos = GetActiveWindow()->PixelToLogic(aPos);
     590           0 :                 aPos.X() -= aSize.Width() / 2;
     591           0 :                 aPos.Y() -= aSize.Height() / 2;
     592             : 
     593           0 :                 Rectangle aLogicRect(aPos, aSize);
     594           0 :                 pRectObj->SetLogicRect(aLogicRect);
     595           0 :                 pRectObj->SetOutlinerParaObject( pOutlParaObject );
     596           0 :                 mpDrawView->InsertObjectAtView(pRectObj, *mpDrawView->GetSdrPageView());
     597           0 :                 pOutl->Init( nOutlMode );
     598             :             }
     599             : 
     600           0 :             delete pFieldItem;
     601             : 
     602           0 :             Cancel();
     603           0 :             rReq.Ignore ();
     604             :         }
     605           0 :         break;
     606             : 
     607             :         case SID_MODIFY_FIELD:
     608             :         {
     609           0 :             OutlinerView* pOLV = mpDrawView->GetTextEditOutlinerView();
     610             : 
     611           0 :             if( pOLV )
     612             :             {
     613           0 :                 const SvxFieldItem* pFldItem = pOLV->GetFieldAtSelection();
     614             : 
     615           0 :                 if( pFldItem && (pFldItem->GetField()->ISA( SvxDateField ) ||
     616           0 :                                  pFldItem->GetField()->ISA( SvxAuthorField ) ||
     617           0 :                                  pFldItem->GetField()->ISA( SvxExtFileField ) ||
     618           0 :                                  pFldItem->GetField()->ISA( SvxExtTimeField ) ) )
     619             :                 {
     620             :                     // Dialog...
     621           0 :                     SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
     622           0 :                     AbstractSdModifyFieldDlg* pDlg = pFact ? pFact->CreateSdModifyFieldDlg(GetActiveWindow(), pFldItem->GetField(), pOLV->GetAttribs() ) : 0;
     623           0 :                     if( pDlg && pDlg->Execute() == RET_OK )
     624             :                     {
     625             :                         // To make a correct SetAttribs() call at the utlinerView
     626             :                         // it is necessary to split the actions here
     627           0 :                         SvxFieldData* pField = pDlg->GetField();
     628           0 :                         ESelection aSel = pOLV->GetSelection();
     629           0 :                         sal_Bool bSelectionWasModified(sal_False);
     630             : 
     631           0 :                         if( pField )
     632             :                         {
     633           0 :                             SvxFieldItem aFieldItem( *pField, EE_FEATURE_FIELD );
     634             : 
     635           0 :                             if( aSel.nStartPos == aSel.nEndPos )
     636             :                             {
     637           0 :                                 bSelectionWasModified = sal_True;
     638           0 :                                 aSel.nEndPos++;
     639           0 :                                 pOLV->SetSelection( aSel );
     640             :                             }
     641             : 
     642           0 :                             pOLV->InsertField( aFieldItem );
     643             : 
     644             :                             // select again for eventual SetAttribs call
     645           0 :                             pOLV->SetSelection( aSel );
     646             :                         }
     647             : 
     648           0 :                         SfxItemSet aSet( pDlg->GetItemSet() );
     649             : 
     650           0 :                         if( aSet.Count() )
     651             :                         {
     652           0 :                             pOLV->SetAttribs( aSet );
     653             : 
     654           0 :                             ::Outliner* pOutliner = pOLV->GetOutliner();
     655           0 :                             if( pOutliner )
     656           0 :                                 pOutliner->UpdateFields();
     657             :                         }
     658             : 
     659           0 :                         if(pField)
     660             :                         {
     661             :                             // restore selection to original
     662           0 :                             if(bSelectionWasModified)
     663             :                             {
     664           0 :                                 aSel.nEndPos--;
     665           0 :                                 pOLV->SetSelection( aSel );
     666             :                             }
     667             : 
     668           0 :                             delete pField;
     669           0 :                         }
     670             :                     }
     671           0 :                     delete pDlg;
     672             :                 }
     673             :             }
     674             : 
     675           0 :             Cancel();
     676           0 :             rReq.Ignore ();
     677             :         }
     678           0 :         break;
     679             : 
     680             :         case SID_OPEN_XML_FILTERSETTINGS:
     681             :         {
     682             :             try
     683             :             {
     684           0 :                 com::sun::star::uno::Reference < ::com::sun::star::ui::dialogs::XExecutableDialog > xDialog(::comphelper::getProcessServiceFactory()->createInstance("com.sun.star.comp.ui.XSLTFilterDialog"), com::sun::star::uno::UNO_QUERY);
     685           0 :                 if( xDialog.is() )
     686             :                 {
     687           0 :                     xDialog->execute();
     688           0 :                 }
     689             :             }
     690           0 :             catch( ::com::sun::star::uno::RuntimeException& )
     691             :             {
     692             :             }
     693             : 
     694           0 :             Cancel();
     695           0 :             rReq.Ignore ();
     696             :         }
     697           0 :         break;
     698             : 
     699             :         default:
     700             :         {
     701             :             // switch Anweisung wegen CLOOKS aufgeteilt. Alle case-Anweisungen die
     702             :             // eine Fu???? -Funktion aufrufen, sind in die Methode FuTemp03 (drviewsb)
     703             :             // gewandert.
     704           0 :             FuTemp03(rReq);
     705             :         }
     706           0 :         break;
     707             :     };
     708             : };
     709             : 
     710           0 : bool DrawViewShell::RenameSlide( sal_uInt16 nPageId, const String & rName  )
     711             : {
     712             :     sal_Bool   bOutDummy;
     713           0 :     if( GetDoc()->GetPageByName( rName, bOutDummy ) != SDRPAGE_NOTFOUND )
     714           0 :         return false;
     715             : 
     716           0 :     SdPage* pPageToRename = NULL;
     717           0 :     PageKind ePageKind = GetPageKind();
     718             : 
     719           0 :     if( GetEditMode() == EM_PAGE )
     720             :     {
     721           0 :         pPageToRename = GetDoc()->GetSdPage( nPageId - 1, ePageKind );
     722             : 
     723             :         // Undo
     724           0 :         SdPage* pUndoPage = pPageToRename;
     725           0 :         SdrLayerAdmin &  rLayerAdmin = GetDoc()->GetLayerAdmin();
     726           0 :         sal_uInt8 nBackground = rLayerAdmin.GetLayerID( String( SdResId( STR_LAYER_BCKGRND )), sal_False );
     727           0 :         sal_uInt8 nBgObj = rLayerAdmin.GetLayerID( String( SdResId( STR_LAYER_BCKGRNDOBJ )), sal_False );
     728           0 :         SetOfByte aVisibleLayers = mpActualPage->TRG_GetMasterPageVisibleLayers();
     729             : 
     730           0 :         ::svl::IUndoManager* pManager = GetDoc()->GetDocSh()->GetUndoManager();
     731             :         ModifyPageUndoAction* pAction = new ModifyPageUndoAction(
     732           0 :             GetDoc(), pUndoPage, rName, pUndoPage->GetAutoLayout(),
     733           0 :             aVisibleLayers.IsSet( nBackground ),
     734           0 :             aVisibleLayers.IsSet( nBgObj ));
     735           0 :         pManager->AddUndoAction( pAction );
     736             : 
     737             :         // rename
     738           0 :         pPageToRename->SetName( rName );
     739             : 
     740           0 :         if( ePageKind == PK_STANDARD )
     741             :         {
     742             :             // also rename notes-page
     743           0 :             SdPage* pNotesPage = GetDoc()->GetSdPage( nPageId - 1, PK_NOTES );
     744           0 :             pNotesPage->SetName( rName );
     745             :         }
     746             :     }
     747             :     else
     748             :     {
     749             :         // rename MasterPage -> rename LayoutTemplate
     750           0 :         pPageToRename = GetDoc()->GetMasterSdPage( nPageId - 1, ePageKind );
     751           0 :         GetDoc()->RenameLayoutTemplate( pPageToRename->GetLayoutName(), rName );
     752             :     }
     753             : 
     754           0 :     bool bSuccess = ( sal_False != rName.Equals( pPageToRename->GetName()));
     755             : 
     756           0 :     if( bSuccess )
     757             :     {
     758             :         // user edited page names may be changed by the page so update control
     759           0 :         maTabControl.SetPageText( nPageId, rName );
     760             : 
     761             :         // set document to modified state
     762           0 :         GetDoc()->SetChanged( sal_True );
     763             : 
     764             :         // inform navigator about change
     765           0 :         SfxBoolItem aItem( SID_NAVIGATOR_INIT, sal_True );
     766             :         GetViewFrame()->GetDispatcher()->Execute(
     767           0 :             SID_NAVIGATOR_INIT, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD, &aItem, 0L );
     768             : 
     769             :         // Tell the slide sorter about the name change (necessary for
     770             :         // accessibility.)
     771             :         slidesorter::SlideSorterViewShell* pSlideSorterViewShell
     772           0 :             = slidesorter::SlideSorterViewShell::GetSlideSorter(GetViewShellBase());
     773           0 :         if (pSlideSorterViewShell != NULL)
     774             :         {
     775           0 :             pSlideSorterViewShell->GetSlideSorter().GetController().PageNameHasChanged(
     776           0 :                 nPageId-1, rName);
     777           0 :         }
     778             :     }
     779             : 
     780           0 :     return bSuccess;
     781             : }
     782             : 
     783             : 
     784             : 
     785             : 
     786           0 : IMPL_LINK( DrawViewShell, RenameSlideHdl, AbstractSvxNameDialog*, pDialog )
     787             : {
     788           0 :     if( ! pDialog )
     789           0 :         return 0;
     790             : 
     791           0 :     String aNewName;
     792           0 :     pDialog->GetName( aNewName );
     793             : 
     794           0 :     SdPage* pCurrentPage = GetDoc()->GetSdPage( maTabControl.GetCurPageId() - 1, GetPageKind() );
     795             : 
     796           0 :     return pCurrentPage && ( aNewName.Equals( pCurrentPage->GetName() ) || GetDocSh()->IsNewPageNameValid( aNewName ) );
     797             : }
     798             : 
     799             : 
     800             : 
     801             : 
     802           0 : void DrawViewShell::ModifyLayer (
     803             :     SdrLayer* pLayer,
     804             :     const String& rLayerName,
     805             :     const String& rLayerTitle,
     806             :     const String& rLayerDesc,
     807             :     bool bIsVisible,
     808             :     bool bIsLocked,
     809             :     bool bIsPrintable)
     810             : {
     811           0 :     if( pLayer )
     812             :     {
     813           0 :         const sal_uInt16 nPageCount = GetLayerTabControl()->GetPageCount();
     814           0 :         sal_uInt16 nCurPage = 0;
     815             :         sal_uInt16 nPos;
     816           0 :         for( nPos = 0; nPos < nPageCount; nPos++ )
     817             :         {
     818           0 :             sal_uInt16 nId = GetLayerTabControl()->GetPageId( nPos );
     819           0 :             if (GetLayerTabControl()->GetPageText(nId).equals(pLayer->GetName()))
     820             :             {
     821           0 :                 nCurPage = nId;
     822           0 :                 break;
     823             :             }
     824             :         }
     825             : 
     826           0 :         pLayer->SetName( rLayerName );
     827           0 :         pLayer->SetTitle( rLayerTitle );
     828           0 :         pLayer->SetDescription( rLayerDesc );
     829           0 :         mpDrawView->SetLayerVisible( rLayerName, bIsVisible );
     830           0 :         mpDrawView->SetLayerLocked( rLayerName, bIsLocked);
     831           0 :         mpDrawView->SetLayerPrintable(rLayerName, bIsPrintable);
     832             : 
     833           0 :         GetDoc()->SetChanged(sal_True);
     834             : 
     835           0 :         GetLayerTabControl()->SetPageText(nCurPage, rLayerName);
     836             : 
     837           0 :         TabBarPageBits nBits = 0;
     838             : 
     839           0 :         if (!bIsVisible)
     840             :         {
     841             :             // Unsichtbare Layer werden anders dargestellt
     842           0 :             nBits = TPB_SPECIAL;
     843             :         }
     844             : 
     845           0 :         GetLayerTabControl()->SetPageBits(nCurPage, nBits);
     846             : 
     847             :         GetViewFrame()->GetDispatcher()->Execute(
     848             :             SID_SWITCHLAYER,
     849           0 :             SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD);
     850             : 
     851             :         // Call Invalidate at the form shell.
     852           0 :         FmFormShell* pFormShell = GetViewShellBase().GetFormShellManager()->GetFormShell();
     853           0 :         if (pFormShell != NULL)
     854           0 :             pFormShell->Invalidate();
     855             :     }
     856           0 : }
     857             : 
     858           9 : } // end of namespace sd
     859             : 
     860             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10