LCOV - code coverage report
Current view: top level - libreoffice/sw/source/ui/shells - drwtxtex.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 1 451 0.2 %
Date: 2012-12-27 Functions: 2 8 25.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             : 
      21             : #include <com/sun/star/ui/dialogs/XExecutableDialog.hpp>
      22             : 
      23             : #include <comphelper/processfactory.hxx>
      24             : #include <comphelper/string.hxx>
      25             : #include <i18npool/mslangid.hxx>
      26             : #include <sfx2/bindings.hxx>
      27             : #include <sfx2/dispatch.hxx>
      28             : #include <sfx2/request.hxx>
      29             : #include <tools/shl.hxx>
      30             : #include <svx/svdview.hxx>
      31             : #include <editeng/spltitem.hxx>
      32             : #include <editeng/orphitem.hxx>
      33             : #include <editeng/brkitem.hxx>
      34             : #include <editeng/widwitem.hxx>
      35             : #include <editeng/kernitem.hxx>
      36             : #include <editeng/escpitem.hxx>
      37             : #include <editeng/lspcitem.hxx>
      38             : #include <editeng/adjitem.hxx>
      39             : #include <editeng/crsditem.hxx>
      40             : #include <editeng/shdditem.hxx>
      41             : #include <editeng/udlnitem.hxx>
      42             : #include <editeng/fontitem.hxx>
      43             : #include <editeng/fhgtitem.hxx>
      44             : #include <editeng/colritem.hxx>
      45             : #include <editeng/wghtitem.hxx>
      46             : #include <editeng/cntritem.hxx>
      47             : #include <editeng/postitem.hxx>
      48             : #include <editeng/frmdiritem.hxx>
      49             : #include <svx/svdoutl.hxx>
      50             : #include <sfx2/viewfrm.hxx>
      51             : #include <svl/whiter.hxx>
      52             : #include <svl/cjkoptions.hxx>
      53             : #include <svl/ctloptions.hxx>
      54             : #include <svtools/langtab.hxx>
      55             : #include <svl/languageoptions.hxx>
      56             : #include <vcl/msgbox.hxx>
      57             : #include <editeng/flditem.hxx>
      58             : #include <editeng/editstat.hxx>
      59             : #include <svx/hlnkitem.hxx>
      60             : #include <svx/htmlmode.hxx>
      61             : #include <svl/slstitm.hxx>
      62             : #include <editeng/langitem.hxx>
      63             : #include <editeng/unolingu.hxx>
      64             : #include <editeng/scripttypeitem.hxx>
      65             : #include <editeng/writingmodeitem.hxx>
      66             : #include <editeng/eeitem.hxx>
      67             : #include <editeng/editeng.hxx>
      68             : #include <editeng/editdata.hxx>
      69             : #include <editeng/outliner.hxx>
      70             : #include <vcl/window.hxx>
      71             : #include <editeng/editview.hxx>
      72             : #include <vcl/outdev.hxx>
      73             : #include <editeng/hyznitem.hxx>
      74             : 
      75             : #include <cmdid.h>
      76             : #include <doc.hxx>
      77             : #include <docstat.hxx>
      78             : #include <drwtxtsh.hxx>
      79             : #include <edtwin.hxx>
      80             : #include <globals.hrc>
      81             : #include <hintids.hxx>
      82             : #include <initui.hxx>               // fuer SpellPointer
      83             : #include <langhelper.hxx>
      84             : #include <pardlg.hxx>
      85             : #include <shells.hrc>
      86             : #include <string.h>
      87             : #include <swdtflvr.hxx>
      88             : #include <swmodule.hxx>
      89             : #include <swwait.hxx>
      90             : #include <uitool.hxx>
      91             : #include <viewopt.hxx>
      92             : #include <wrtsh.hxx>
      93             : #include <wview.hxx>
      94             : #include <wordcountdialog.hxx>
      95             : 
      96             : #include "swabstdlg.hxx"
      97             : #include "chrdlg.hrc"
      98             : #include "misc.hrc"
      99             : 
     100             : 
     101             : using namespace ::com::sun::star;
     102             : 
     103           0 : void SwDrawTextShell::Execute( SfxRequest &rReq )
     104             : {
     105           0 :     SwWrtShell &rSh = GetShell();
     106           0 :         OutlinerView* pOLV = pSdrView->GetTextEditOutlinerView();
     107           0 :         SfxItemSet aEditAttr(pOLV->GetAttribs());
     108           0 :     SfxItemSet aNewAttr(*aEditAttr.GetPool(), aEditAttr.GetRanges());
     109             : 
     110           0 :     sal_uInt16 nSlot = rReq.GetSlot();
     111             : 
     112           0 :     sal_uInt16 nWhich = GetPool().GetWhich(nSlot);
     113           0 :     const SfxItemSet *pNewAttrs = rReq.GetArgs();
     114             : 
     115           0 :     bool bRestoreSelection = false;
     116           0 :     ESelection aOldSelection;
     117             : 
     118           0 :     sal_uInt16 nEEWhich = 0;
     119           0 :     switch (nSlot)
     120             :     {
     121             :         case SID_LANGUAGE_STATUS:
     122             :         {
     123           0 :             aOldSelection = pOLV->GetSelection();
     124           0 :             if (!pOLV->GetEditView().HasSelection())
     125             :             {
     126           0 :                 bRestoreSelection   = true;
     127           0 :                 pOLV->GetEditView().SelectCurrentWord();
     128             :             }
     129             : 
     130           0 :             bRestoreSelection = SwLangHelper::SetLanguageStatus(pOLV,rReq,GetView(),rSh);
     131           0 :             break;
     132             :         }
     133             : 
     134             :         case SID_THES:
     135             :         {
     136           0 :             String aReplaceText;
     137           0 :             SFX_REQUEST_ARG( rReq, pItem2, SfxStringItem, SID_THES, sal_False );
     138           0 :             if (pItem2)
     139           0 :                 aReplaceText = pItem2->GetValue();
     140           0 :             if (aReplaceText.Len() > 0)
     141           0 :                 ReplaceTextWithSynonym( pOLV->GetEditView(), aReplaceText );
     142           0 :             break;
     143             :         }
     144             : 
     145             :         case SID_ATTR_CHAR_FONT:
     146             :         case SID_ATTR_CHAR_FONTHEIGHT:
     147             :         case SID_ATTR_CHAR_WEIGHT:
     148             :         case SID_ATTR_CHAR_POSTURE:
     149             :         {
     150           0 :             SfxItemPool* pPool2 = aEditAttr.GetPool()->GetSecondaryPool();
     151           0 :             if( !pPool2 )
     152           0 :                 pPool2 = aEditAttr.GetPool();
     153           0 :             SvxScriptSetItem aSetItem( nSlot, *pPool2 );
     154             : 
     155             :             // #i78017 establish the same behaviour as in Writer
     156           0 :             sal_uInt16 nScriptTypes = SCRIPTTYPE_LATIN | SCRIPTTYPE_ASIAN | SCRIPTTYPE_COMPLEX;
     157           0 :             if (nSlot == SID_ATTR_CHAR_FONT)
     158           0 :                 nScriptTypes = pOLV->GetSelectedScriptType();
     159             : 
     160           0 :             if (pNewAttrs)
     161             :             {
     162           0 :                 aSetItem.PutItemForScriptType( nScriptTypes, pNewAttrs->Get( nWhich ) );
     163           0 :                 aNewAttr.Put( aSetItem.GetItemSet() );
     164           0 :             }
     165             :         }
     166           0 :         break;
     167             : 
     168           0 :         case SID_ATTR_CHAR_COLOR: nEEWhich = EE_CHAR_COLOR; break;
     169             : 
     170             :         case SID_ATTR_CHAR_UNDERLINE:
     171             :         {
     172           0 :              FontUnderline eFU = ((const SvxUnderlineItem&)aEditAttr.Get(EE_CHAR_UNDERLINE)).GetLineStyle();
     173           0 :             aNewAttr.Put(SvxUnderlineItem(eFU == UNDERLINE_SINGLE ? UNDERLINE_NONE : UNDERLINE_SINGLE, EE_CHAR_UNDERLINE));
     174             :         }
     175           0 :         break;
     176             : 
     177             :         case SID_ATTR_CHAR_OVERLINE:
     178             :         {
     179           0 :              FontUnderline eFO = ((const SvxOverlineItem&)aEditAttr.Get(EE_CHAR_OVERLINE)).GetLineStyle();
     180           0 :             aNewAttr.Put(SvxOverlineItem(eFO == UNDERLINE_SINGLE ? UNDERLINE_NONE : UNDERLINE_SINGLE, EE_CHAR_OVERLINE));
     181             :         }
     182           0 :         break;
     183             : 
     184           0 :         case SID_ATTR_CHAR_CONTOUR:     nEEWhich = EE_CHAR_OUTLINE; break;
     185           0 :         case SID_ATTR_CHAR_SHADOWED:    nEEWhich = EE_CHAR_SHADOW; break;
     186           0 :         case SID_ATTR_CHAR_STRIKEOUT:   nEEWhich = EE_CHAR_STRIKEOUT; break;
     187           0 :         case SID_ATTR_CHAR_WORDLINEMODE: nEEWhich = EE_CHAR_WLM; break;
     188           0 :         case SID_ATTR_CHAR_RELIEF      : nEEWhich = EE_CHAR_RELIEF;  break;
     189           0 :         case SID_ATTR_CHAR_LANGUAGE    : nEEWhich = EE_CHAR_LANGUAGE;break;
     190           0 :         case SID_ATTR_CHAR_KERNING     : nEEWhich = EE_CHAR_KERNING; break;
     191           0 :         case SID_ATTR_CHAR_SCALEWIDTH:   nEEWhich = EE_CHAR_FONTWIDTH; break;
     192           0 :         case SID_ATTR_CHAR_AUTOKERN  :   nEEWhich = EE_CHAR_PAIRKERNING; break;
     193           0 :         case SID_ATTR_CHAR_ESCAPEMENT:   nEEWhich = EE_CHAR_ESCAPEMENT; break;
     194             :         case SID_ATTR_PARA_ADJUST_LEFT:
     195           0 :             aNewAttr.Put(SvxAdjustItem(SVX_ADJUST_LEFT, EE_PARA_JUST));
     196           0 :         break;
     197             :         case SID_ATTR_PARA_ADJUST_CENTER:
     198           0 :             aNewAttr.Put(SvxAdjustItem(SVX_ADJUST_CENTER, EE_PARA_JUST));
     199           0 :         break;
     200             :         case SID_ATTR_PARA_ADJUST_RIGHT:
     201           0 :             aNewAttr.Put(SvxAdjustItem(SVX_ADJUST_RIGHT, EE_PARA_JUST));
     202           0 :         break;
     203             :         case SID_ATTR_PARA_ADJUST_BLOCK:
     204           0 :             aNewAttr.Put(SvxAdjustItem(SVX_ADJUST_BLOCK, EE_PARA_JUST));
     205           0 :         break;
     206             : 
     207             :         case SID_ATTR_PARA_LINESPACE_10:
     208             :         {
     209           0 :             SvxLineSpacingItem aItem(SVX_LINESPACE_ONE_LINE, EE_PARA_SBL);
     210           0 :             aItem.SetPropLineSpace(100);
     211           0 :             aNewAttr.Put(aItem);
     212             :         }
     213           0 :         break;
     214             :         case SID_ATTR_PARA_LINESPACE_15:
     215             :         {
     216           0 :             SvxLineSpacingItem aItem(SVX_LINESPACE_ONE_POINT_FIVE_LINES, EE_PARA_SBL);
     217           0 :             aItem.SetPropLineSpace(150);
     218           0 :             aNewAttr.Put(aItem);
     219             :         }
     220           0 :         break;
     221             :         case SID_ATTR_PARA_LINESPACE_20:
     222             :         {
     223           0 :             SvxLineSpacingItem aItem(SVX_LINESPACE_TWO_LINES, EE_PARA_SBL);
     224           0 :             aItem.SetPropLineSpace(200);
     225           0 :             aNewAttr.Put(aItem);
     226             :         }
     227           0 :         break;
     228             : 
     229             :         case FN_SET_SUPER_SCRIPT:
     230             :         {
     231           0 :             SvxEscapementItem aItem(EE_CHAR_ESCAPEMENT);
     232             :             SvxEscapement eEsc = (SvxEscapement ) ( (const SvxEscapementItem&)
     233           0 :                             aEditAttr.Get( EE_CHAR_ESCAPEMENT ) ).GetEnumValue();
     234             : 
     235           0 :             if( eEsc == SVX_ESCAPEMENT_SUPERSCRIPT )
     236           0 :                 aItem.SetEscapement( SVX_ESCAPEMENT_OFF );
     237             :             else
     238           0 :                 aItem.SetEscapement( SVX_ESCAPEMENT_SUPERSCRIPT );
     239           0 :             aNewAttr.Put( aItem, EE_CHAR_ESCAPEMENT );
     240             :         }
     241           0 :         break;
     242             :         case FN_SET_SUB_SCRIPT:
     243             :         {
     244           0 :             SvxEscapementItem aItem(EE_CHAR_ESCAPEMENT);
     245             :             SvxEscapement eEsc = (SvxEscapement ) ( (const SvxEscapementItem&)
     246           0 :                             aEditAttr.Get( EE_CHAR_ESCAPEMENT ) ).GetEnumValue();
     247             : 
     248           0 :             if( eEsc == SVX_ESCAPEMENT_SUBSCRIPT )
     249           0 :                 aItem.SetEscapement( SVX_ESCAPEMENT_OFF );
     250             :             else
     251           0 :                 aItem.SetEscapement( SVX_ESCAPEMENT_SUBSCRIPT );
     252           0 :             aNewAttr.Put( aItem, EE_CHAR_ESCAPEMENT );
     253             :         }
     254           0 :         break;
     255             : 
     256             :         case SID_CHAR_DLG:
     257             :         case SID_CHAR_DLG_FOR_PARAGRAPH:
     258             :         {
     259           0 :             const SfxItemSet* pArgs = rReq.GetArgs();
     260             : 
     261           0 :             if( !pArgs )
     262             :             {
     263           0 :                 aOldSelection = pOLV->GetSelection();
     264           0 :                 if (nSlot == SID_CHAR_DLG_FOR_PARAGRAPH)
     265             :                 {
     266             :                     // select current paragraph (and restore selection later on...)
     267           0 :                     EditView & rEditView = pOLV->GetEditView();
     268           0 :                     SwLangHelper::SelectPara( rEditView, rEditView.GetSelection() );
     269           0 :                     bRestoreSelection = true;
     270             :                 }
     271             : 
     272           0 :                 SwView* pView = &GetView();
     273           0 :                 FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebView, pView));
     274           0 :                 SW_MOD()->PutItem(SfxUInt16Item(SID_ATTR_METRIC, static_cast< sal_uInt16 >(eMetric)) );
     275           0 :                 SfxItemSet aDlgAttr(GetPool(), EE_ITEMS_START, EE_ITEMS_END);
     276             : 
     277             :                 // util::Language gibts an der EditEngine nicht! Daher nicht im Set.
     278             : 
     279           0 :                 aDlgAttr.Put( aEditAttr );
     280           0 :                 aDlgAttr.Put( SvxKerningItem(0, RES_CHRATR_KERNING) );
     281             : 
     282           0 :                 SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
     283             :                 OSL_ENSURE(pFact, "SwAbstractDialogFactory fail!");
     284             : 
     285           0 :                 SfxAbstractTabDialog* pDlg = pFact->CreateSwCharDlg( pView->GetWindow(), *pView, aDlgAttr, DLG_CHAR,0, sal_True );
     286             :                 OSL_ENSURE(pDlg, "Dialogdiet fail!");
     287           0 :                 sal_uInt16 nRet = pDlg->Execute();
     288           0 :                 if(RET_OK == nRet )
     289             :                 {
     290           0 :                     rReq.Done( *( pDlg->GetOutputItemSet() ) );
     291           0 :                     aNewAttr.Put(*pDlg->GetOutputItemSet());
     292             :                 }
     293           0 :                 delete( pDlg );
     294           0 :                 if(RET_OK != nRet)
     295           0 :                     return ;
     296             :             }
     297             :             else
     298           0 :                 aNewAttr.Put(*pArgs);
     299             :         }
     300           0 :         break;
     301             :         case FN_FORMAT_FOOTNOTE_DLG:
     302             :         {
     303           0 :             SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
     304             :             OSL_ENSURE(pFact, "SwAbstractDialogFactory fail!");
     305             : 
     306           0 :             VclAbstractDialog* pDlg = pFact->CreateSwFootNoteOptionDlg( GetView().GetWindow(), rView.GetWrtShell(), DLG_DOC_FOOTNOTE );
     307             :             OSL_ENSURE(pDlg, "Dialogdiet fail!");
     308           0 :             pDlg->Execute();
     309           0 :             delete pDlg;
     310           0 :             break;
     311             :         }
     312             :         case FN_NUMBERING_OUTLINE_DLG:
     313             :         {
     314           0 :             SfxItemSet aTmp(GetPool(), FN_PARAM_1, FN_PARAM_1);
     315           0 :             SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
     316             :             OSL_ENSURE(pFact, "Dialogdiet fail!");
     317             :             SfxAbstractTabDialog* pDlg = pFact->CreateSwTabDialog( DLG_TAB_OUTLINE,
     318           0 :                                                         GetView().GetWindow(), &aTmp, GetView().GetWrtShell());
     319             :             OSL_ENSURE(pDlg, "Dialogdiet fail!");
     320           0 :             pDlg->Execute();
     321           0 :             delete pDlg;
     322           0 :             rReq.Done();
     323             :         }
     324           0 :         break;
     325             :         case SID_OPEN_XML_FILTERSETTINGS:
     326             :         {
     327             :             try
     328             :             {
     329           0 :                 uno::Reference < ui::dialogs::XExecutableDialog > xDialog(::comphelper::getProcessServiceFactory()->createInstance(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.ui.XSLTFilterDialog"))), uno::UNO_QUERY);
     330           0 :                 if( xDialog.is() )
     331             :                 {
     332           0 :                     xDialog->execute();
     333           0 :                 }
     334             :             }
     335           0 :             catch (const uno::Exception&)
     336             :             {
     337             :             }
     338           0 :             rReq.Ignore ();
     339             :         }
     340           0 :         break;
     341             :         case FN_WORDCOUNT_DIALOG:
     342             :         {
     343           0 :             SfxViewFrame* pVFrame = GetView().GetViewFrame();
     344           0 :             if (pVFrame != NULL)
     345             :             {
     346           0 :                 pVFrame->ToggleChildWindow(FN_WORDCOUNT_DIALOG);
     347           0 :                 Invalidate(rReq.GetSlot());
     348             : 
     349           0 :                 SwWordCountWrapper *pWrdCnt = (SwWordCountWrapper*)pVFrame->GetChildWindow(SwWordCountWrapper::GetChildWindowId());
     350           0 :                 if (pWrdCnt)
     351           0 :                     pWrdCnt->UpdateCounts();
     352             :             }
     353             :         }
     354           0 :         break;
     355             :         case SID_PARA_DLG:
     356             :         {
     357           0 :             const SfxItemSet* pArgs = rReq.GetArgs();
     358             : 
     359           0 :             if (!pArgs)
     360             :             {
     361           0 :                 SwView* pView = &GetView();
     362           0 :                 FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebView, pView));
     363           0 :                 SW_MOD()->PutItem(SfxUInt16Item(SID_ATTR_METRIC, static_cast< sal_uInt16 >(eMetric)) );
     364           0 :                 SfxItemSet aDlgAttr(GetPool(),
     365             :                                     EE_ITEMS_START, EE_ITEMS_END,
     366             :                                     SID_ATTR_PARA_HYPHENZONE, SID_ATTR_PARA_HYPHENZONE,
     367             :                                     SID_ATTR_PARA_SPLIT, SID_ATTR_PARA_SPLIT,
     368             :                                     SID_ATTR_PARA_WIDOWS, SID_ATTR_PARA_WIDOWS,
     369             :                                     SID_ATTR_PARA_ORPHANS, SID_ATTR_PARA_ORPHANS,
     370           0 :                                     0);
     371             : 
     372           0 :                 aDlgAttr.Put(aEditAttr);
     373             : 
     374           0 :                 aDlgAttr.Put( SvxHyphenZoneItem( sal_False, RES_PARATR_HYPHENZONE) );
     375           0 :                 aDlgAttr.Put( SvxFmtBreakItem( SVX_BREAK_NONE, RES_BREAK ) );
     376           0 :                 aDlgAttr.Put( SvxFmtSplitItem( sal_True, RES_PARATR_SPLIT ) );
     377           0 :                 aDlgAttr.Put( SvxWidowsItem( 0, RES_PARATR_WIDOWS ) );
     378           0 :                 aDlgAttr.Put( SvxOrphansItem( 0, RES_PARATR_ORPHANS ) );
     379             : 
     380           0 :                 SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
     381             :                 OSL_ENSURE(pFact, "SwAbstractDialogFactory fail!");
     382             : 
     383           0 :                 SfxAbstractTabDialog* pDlg = pFact->CreateSwParaDlg( GetView().GetWindow(), GetView(), aDlgAttr,DLG_STD, DLG_PARA, 0, sal_True );
     384             :                 OSL_ENSURE(pDlg, "Dialogdiet fail!");
     385           0 :                 sal_uInt16 nRet = pDlg->Execute();
     386           0 :                 if(RET_OK == nRet)
     387             :                 {
     388           0 :                     rReq.Done( *( pDlg->GetOutputItemSet() ) );
     389           0 :                     aNewAttr.Put(*pDlg->GetOutputItemSet());
     390             :                 }
     391           0 :                 delete( pDlg );
     392           0 :                 if(RET_OK != nRet)
     393           0 :                     return;
     394             :             }
     395             :             else
     396           0 :                 aNewAttr.Put(*pArgs);
     397             :         }
     398           0 :         break;
     399             :         case SID_AUTOSPELL_CHECK:
     400             :         {
     401             : //!! JP 16.03.2001: why??           pSdrView = rSh.GetDrawView();
     402             : //!! JP 16.03.2001: why??           pOutliner = pSdrView->GetTextEditOutliner();
     403           0 :             SdrOutliner * pOutliner = pSdrView->GetTextEditOutliner();
     404           0 :             sal_uInt32 nCtrl = pOutliner->GetControlWord();
     405             : 
     406           0 :             sal_Bool bSet = ((const SfxBoolItem&)rReq.GetArgs()->Get(
     407           0 :                                                     nSlot)).GetValue();
     408           0 :             if(bSet)
     409           0 :                 nCtrl |= EE_CNTRL_ONLINESPELLING|EE_CNTRL_ALLOWBIGOBJS;
     410             :             else
     411           0 :                 nCtrl &= ~EE_CNTRL_ONLINESPELLING;
     412           0 :             pOutliner->SetControlWord(nCtrl);
     413             : 
     414           0 :             rView.ExecuteSlot(rReq);
     415             :         }
     416           0 :         break;
     417             :         case SID_HYPERLINK_SETLINK:
     418             :         {
     419           0 :             const SfxPoolItem* pItem = 0;
     420           0 :             if(pNewAttrs)
     421           0 :                 pNewAttrs->GetItemState(nSlot, sal_False, &pItem);
     422             : 
     423           0 :             if(pItem)
     424             :             {
     425           0 :                 const SvxHyperlinkItem& rHLinkItem = *(const SvxHyperlinkItem *)pItem;
     426           0 :                 SvxURLField aFld(rHLinkItem.GetURL(), rHLinkItem.GetName(), SVXURLFORMAT_APPDEFAULT);
     427           0 :                 aFld.SetTargetFrame(rHLinkItem.GetTargetFrame());
     428             : 
     429           0 :                 const SvxFieldItem* pFieldItem = pOLV->GetFieldAtSelection();
     430             : 
     431           0 :                 if (pFieldItem && pFieldItem->GetField()->ISA(SvxURLField))
     432             :                 {
     433             :                     // Feld selektieren, so dass es beim Insert geloescht wird
     434           0 :                     ESelection aSel = pOLV->GetSelection();
     435           0 :                     aSel.nEndPos++;
     436           0 :                     pOLV->SetSelection(aSel);
     437             :                 }
     438           0 :                 pOLV->InsertField(SvxFieldItem(aFld, EE_FEATURE_FIELD));
     439             :             }
     440             :         }
     441           0 :         break;
     442             : 
     443             :         case SID_TEXTDIRECTION_LEFT_TO_RIGHT:
     444             :         case SID_TEXTDIRECTION_TOP_TO_BOTTOM:
     445             :             // Shellwechsel!
     446             :             {
     447           0 :                 SdrObject* pTmpObj = pSdrView->GetMarkedObjectList().GetMark(0)->GetMarkedSdrObj();
     448           0 :                 SdrPageView* pTmpPV = pSdrView->GetSdrPageView();
     449           0 :                 SdrView* pTmpView = pSdrView;
     450             : 
     451           0 :                 pSdrView->SdrEndTextEdit(sal_True);
     452             : 
     453           0 :                 SfxItemSet aAttr( *aNewAttr.GetPool(),
     454             :                             SDRATTR_TEXTDIRECTION,
     455           0 :                             SDRATTR_TEXTDIRECTION );
     456             : 
     457             :                 aAttr.Put( SvxWritingModeItem(
     458             :                     nSlot == SID_TEXTDIRECTION_LEFT_TO_RIGHT ?
     459             :                         text::WritingMode_LR_TB
     460           0 :                         : text::WritingMode_TB_RL, SDRATTR_TEXTDIRECTION ) );
     461           0 :                 pTmpView->SetAttributes( aAttr );
     462             : 
     463           0 :                 rSh.GetView().BeginTextEdit( pTmpObj, pTmpPV, &rSh.GetView().GetEditWin(), sal_False);
     464           0 :                 rSh.GetView().AttrChangedNotify( &rSh );
     465             :             }
     466             :             return;
     467             : 
     468             :         case SID_ATTR_PARA_LEFT_TO_RIGHT:
     469             :         case SID_ATTR_PARA_RIGHT_TO_LEFT:
     470             :         {
     471           0 :             SdrObject* pTmpObj = pSdrView->GetMarkedObjectList().GetMark(0)->GetMarkedSdrObj();
     472           0 :             SdrPageView* pTmpPV = pSdrView->GetSdrPageView();
     473           0 :             SdrView* pTmpView = pSdrView;
     474             : 
     475           0 :             pSdrView->SdrEndTextEdit(sal_True);
     476           0 :             sal_Bool bLeftToRight = nSlot == SID_ATTR_PARA_LEFT_TO_RIGHT;
     477             : 
     478             :             const SfxPoolItem* pPoolItem;
     479           0 :             if( pNewAttrs && SFX_ITEM_SET == pNewAttrs->GetItemState( nSlot, sal_True, &pPoolItem ) )
     480             :             {
     481           0 :                 if( !( (SfxBoolItem*)pPoolItem)->GetValue() )
     482           0 :                     bLeftToRight = !bLeftToRight;
     483             :             }
     484           0 :             SfxItemSet aAttr( *aNewAttr.GetPool(),
     485             :                         EE_PARA_JUST, EE_PARA_JUST,
     486             :                         EE_PARA_WRITINGDIR, EE_PARA_WRITINGDIR,
     487           0 :                         0 );
     488             : 
     489           0 :             sal_uInt16 nAdjust = SVX_ADJUST_LEFT;
     490           0 :             if( SFX_ITEM_ON == aEditAttr.GetItemState(EE_PARA_JUST, sal_True, &pPoolItem ) )
     491           0 :                 nAdjust = ( (SvxAdjustItem*)pPoolItem)->GetEnumValue();
     492             : 
     493           0 :             if( bLeftToRight )
     494             :             {
     495           0 :                 aAttr.Put( SvxFrameDirectionItem( FRMDIR_HORI_LEFT_TOP, EE_PARA_WRITINGDIR ) );
     496           0 :                 if( nAdjust == SVX_ADJUST_RIGHT )
     497           0 :                     aAttr.Put( SvxAdjustItem( SVX_ADJUST_LEFT, EE_PARA_JUST ) );
     498             :             }
     499             :             else
     500             :             {
     501           0 :                 aAttr.Put( SvxFrameDirectionItem( FRMDIR_HORI_RIGHT_TOP, EE_PARA_WRITINGDIR ) );
     502           0 :                 if( nAdjust == SVX_ADJUST_LEFT )
     503           0 :                     aAttr.Put( SvxAdjustItem( SVX_ADJUST_RIGHT, EE_PARA_JUST ) );
     504             :             }
     505           0 :             pTmpView->SetAttributes( aAttr );
     506           0 :             rSh.GetView().BeginTextEdit( pTmpObj, pTmpPV, &rSh.GetView().GetEditWin(), sal_False );
     507           0 :             rSh.GetView().AttrChangedNotify( &rSh );
     508             :         }
     509             :         return;
     510             :         default:
     511             :             OSL_ENSURE(!this, "wrong dispatcher");
     512             :             return;
     513             :     }
     514           0 :     if(nEEWhich && pNewAttrs)
     515           0 :         aNewAttr.Put(pNewAttrs->Get(nWhich), nEEWhich);
     516             : 
     517           0 :     SetAttrToMarked(aNewAttr);
     518             : 
     519           0 :     GetView().GetViewFrame()->GetBindings().InvalidateAll(sal_False);
     520             : 
     521           0 :     if (IsTextEdit() && pOLV->GetOutliner()->IsModified())
     522           0 :         rSh.SetModified();
     523             : 
     524           0 :     if (bRestoreSelection)
     525             :     {
     526             :         // restore selection
     527           0 :         pOLV->GetEditView().SetSelection( aOldSelection );
     528           0 :     }
     529             : }
     530             : 
     531           0 : void SwDrawTextShell::GetState(SfxItemSet& rSet)
     532             : {
     533           0 :     if (!IsTextEdit())  // Sonst manchmal Absturz!
     534           0 :         return;
     535             : 
     536           0 :     OutlinerView* pOLV = pSdrView->GetTextEditOutlinerView();
     537           0 :     SfxWhichIter aIter(rSet);
     538           0 :     sal_uInt16 nWhich = aIter.FirstWhich();
     539             : 
     540           0 :     SfxItemSet aEditAttr( pOLV->GetAttribs() );
     541           0 :     const SfxPoolItem *pAdjust = 0, *pLSpace = 0, *pEscItem = 0;
     542             :     int eAdjust, nLSpace, nEsc;
     543             : 
     544           0 :     while(nWhich)
     545             :     {
     546           0 :         sal_uInt16 nSlotId = GetPool().GetSlotId( nWhich );
     547           0 :         sal_Bool bFlag = sal_False;
     548           0 :         switch( nSlotId )
     549             :         {
     550             :             case SID_LANGUAGE_STATUS://20412:
     551             :             {
     552           0 :                 nSlotId = SwLangHelper::GetLanguageStatus(pOLV,rSet);
     553           0 :                 break;
     554             :             }
     555             : 
     556             :             case SID_THES:
     557             :             {
     558           0 :                 String          aStatusVal;
     559           0 :                 LanguageType    nLang = LANGUAGE_NONE;
     560           0 :                 bool bIsLookUpWord = GetStatusValueForThesaurusFromContext( aStatusVal, nLang, pOLV->GetEditView() );
     561           0 :                 rSet.Put( SfxStringItem( SID_THES, aStatusVal ) );
     562             : 
     563             :                 // disable "Thesaurus" context menu entry if there is nothing to look up
     564           0 :                 uno::Reference< linguistic2::XThesaurus >  xThes( ::GetThesaurus() );
     565           0 :                 if (!bIsLookUpWord ||
     566           0 :                     !xThes.is() || nLang == LANGUAGE_NONE || !xThes->hasLocale( LanguageTag( nLang ).getLocale() ))
     567           0 :                     rSet.DisableItem( SID_THES );
     568             : 
     569             :                 //! avoid puting the same item as SfxBoolItem at the end of this function
     570           0 :                 nSlotId = 0;
     571           0 :                 break;
     572             :             }
     573             : 
     574           0 :         case SID_ATTR_PARA_ADJUST_LEFT:     eAdjust = SVX_ADJUST_LEFT; goto ASK_ADJUST;
     575           0 :         case SID_ATTR_PARA_ADJUST_RIGHT:    eAdjust = SVX_ADJUST_RIGHT; goto ASK_ADJUST;
     576           0 :         case SID_ATTR_PARA_ADJUST_CENTER:   eAdjust = SVX_ADJUST_CENTER; goto ASK_ADJUST;
     577           0 :         case SID_ATTR_PARA_ADJUST_BLOCK:    eAdjust = SVX_ADJUST_BLOCK; goto ASK_ADJUST;
     578             : ASK_ADJUST:
     579             :             {
     580           0 :                 if( !pAdjust )
     581           0 :                     aEditAttr.GetItemState( EE_PARA_JUST, sal_False, &pAdjust);
     582             : 
     583           0 :                 if( !pAdjust || IsInvalidItem( pAdjust ))
     584           0 :                     rSet.InvalidateItem( nSlotId ), nSlotId = 0;
     585             :                 else
     586           0 :                     bFlag = eAdjust == ((SvxAdjustItem*)pAdjust)->GetAdjust();
     587             :             }
     588           0 :             break;
     589             : 
     590           0 :         case SID_ATTR_PARA_LINESPACE_10:    nLSpace = 100;  goto ASK_LINESPACE;
     591           0 :         case SID_ATTR_PARA_LINESPACE_15:    nLSpace = 150;  goto ASK_LINESPACE;
     592           0 :         case SID_ATTR_PARA_LINESPACE_20:    nLSpace = 200;  goto ASK_LINESPACE;
     593             : ASK_LINESPACE:
     594             :             {
     595           0 :                 if( !pLSpace )
     596           0 :                     aEditAttr.GetItemState( EE_PARA_SBL, sal_False, &pLSpace );
     597             : 
     598           0 :                 if( !pLSpace || IsInvalidItem( pLSpace ))
     599           0 :                     rSet.InvalidateItem( nSlotId ), nSlotId = 0;
     600           0 :                 else if( nLSpace == ((const SvxLineSpacingItem*)pLSpace)->
     601           0 :                                                 GetPropLineSpace() )
     602           0 :                     bFlag = sal_True;
     603             :                 else
     604           0 :                     nSlotId = 0;
     605             :             }
     606           0 :             break;
     607             : 
     608           0 :         case FN_SET_SUPER_SCRIPT:   nEsc = SVX_ESCAPEMENT_SUPERSCRIPT;
     609           0 :                                     goto ASK_ESCAPE;
     610           0 :         case FN_SET_SUB_SCRIPT:     nEsc = SVX_ESCAPEMENT_SUBSCRIPT;
     611           0 :                                     goto ASK_ESCAPE;
     612             : ASK_ESCAPE:
     613             :             {
     614           0 :                 if( !pEscItem )
     615           0 :                     pEscItem = &aEditAttr.Get( EE_CHAR_ESCAPEMENT );
     616             : 
     617           0 :                 if( nEsc == ((const SvxEscapementItem*)
     618           0 :                                                 pEscItem)->GetEnumValue() )
     619           0 :                     bFlag = sal_True;
     620             :                 else
     621           0 :                     nSlotId = 0;
     622             :             }
     623           0 :             break;
     624             : 
     625             :         case SID_THESAURUS:
     626             :         {
     627             :             // disable "Thesaurus" if the language is not supported
     628           0 :             const SfxPoolItem &rItem = GetShell().GetDoc()->GetDefault(
     629             :                             GetWhichOfScript( RES_CHRATR_LANGUAGE,
     630           0 :                             GetI18NScriptTypeOfLanguage( (sal_uInt16)GetAppLanguage())) );
     631           0 :             LanguageType nLang = ((const SvxLanguageItem &) rItem).GetLanguage();
     632             : 
     633           0 :             uno::Reference< linguistic2::XThesaurus >  xThes( ::GetThesaurus() );
     634           0 :             if (!xThes.is() || nLang == LANGUAGE_NONE || !xThes->hasLocale( LanguageTag( nLang ).getLocale() ))
     635           0 :                 rSet.DisableItem( SID_THESAURUS );
     636           0 :             nSlotId = 0;
     637             :         }
     638           0 :         break;
     639             :         case SID_HANGUL_HANJA_CONVERSION:
     640             :         case SID_CHINESE_CONVERSION:
     641             :         {
     642           0 :             if (!SvtCJKOptions().IsAnyEnabled())
     643             :             {
     644           0 :                 GetView().GetViewFrame()->GetBindings().SetVisibleState( nWhich, sal_False );
     645           0 :                 rSet.DisableItem(nWhich);
     646             :             }
     647             :             else
     648           0 :                 GetView().GetViewFrame()->GetBindings().SetVisibleState( nWhich, sal_True );
     649             :         }
     650           0 :         break;
     651             : 
     652             :         case SID_TEXTDIRECTION_LEFT_TO_RIGHT:
     653             :         case SID_TEXTDIRECTION_TOP_TO_BOTTOM:
     654           0 :             if ( !SvtLanguageOptions().IsVerticalTextEnabled() )
     655             :             {
     656           0 :                 rSet.DisableItem( nSlotId );
     657           0 :                 nSlotId = 0;
     658             :             }
     659             :             else
     660             :             {
     661           0 :                 SdrOutliner * pOutliner = pSdrView->GetTextEditOutliner();
     662           0 :                 if( pOutliner )
     663           0 :                     bFlag = pOutliner->IsVertical() ==
     664           0 :                             (SID_TEXTDIRECTION_TOP_TO_BOTTOM == nSlotId);
     665             :                 else
     666             :                 {
     667             :                     text::WritingMode eMode = (text::WritingMode)
     668           0 :                                     ( (const SvxWritingModeItem&) aEditAttr.Get( SDRATTR_TEXTDIRECTION ) ).GetValue();
     669             : 
     670           0 :                     if( nSlotId == SID_TEXTDIRECTION_LEFT_TO_RIGHT )
     671             :                     {
     672           0 :                         bFlag = eMode == text::WritingMode_LR_TB;
     673             :                     }
     674             :                     else
     675             :                     {
     676           0 :                         bFlag = eMode != text::WritingMode_TB_RL;
     677             :                     }
     678             :                 }
     679             :             }
     680           0 :             break;
     681             :         case SID_ATTR_PARA_LEFT_TO_RIGHT:
     682             :         case SID_ATTR_PARA_RIGHT_TO_LEFT:
     683             :         {
     684           0 :             if ( !SvtLanguageOptions().IsCTLFontEnabled() )
     685             :             {
     686           0 :                 rSet.DisableItem( nWhich );
     687           0 :                 nSlotId = 0;
     688             :             }
     689             :             else
     690             :             {
     691           0 :                 SdrOutliner * pOutliner = pSdrView->GetTextEditOutliner();
     692           0 :                 if(pOutliner && pOutliner->IsVertical())
     693             :                 {
     694           0 :                     rSet.DisableItem( nWhich );
     695           0 :                     nSlotId = 0;
     696             :                 }
     697             :                 else
     698             :                 {
     699           0 :                     switch( ( ( (SvxFrameDirectionItem&) aEditAttr.Get( EE_PARA_WRITINGDIR ) ) ).GetValue() )
     700             :                     {
     701             :                         case FRMDIR_HORI_LEFT_TOP:
     702           0 :                             bFlag = nWhich == SID_ATTR_PARA_LEFT_TO_RIGHT;
     703           0 :                         break;
     704             : 
     705             :                         case FRMDIR_HORI_RIGHT_TOP:
     706           0 :                             bFlag = nWhich != SID_ATTR_PARA_LEFT_TO_RIGHT;
     707           0 :                         break;
     708             :                     }
     709             :                 }
     710             :             }
     711             :         }
     712           0 :         break;
     713             :         case SID_TRANSLITERATE_HALFWIDTH:
     714             :         case SID_TRANSLITERATE_FULLWIDTH:
     715             :         case SID_TRANSLITERATE_HIRAGANA:
     716             :         case SID_TRANSLITERATE_KATAGANA:
     717             :         {
     718           0 :             SvtCJKOptions aCJKOptions;
     719           0 :             if(!aCJKOptions.IsChangeCaseMapEnabled())
     720             :             {
     721           0 :                 rSet.DisableItem(nWhich);
     722           0 :                 GetView().GetViewFrame()->GetBindings().SetVisibleState( nWhich, sal_False );
     723             :             }
     724             :             else
     725           0 :                 GetView().GetViewFrame()->GetBindings().SetVisibleState( nWhich, sal_True );
     726             :         }
     727           0 :         break;
     728             :         case SID_INSERT_RLM :
     729             :         case SID_INSERT_LRM :
     730             :         case SID_INSERT_ZWNBSP :
     731             :         case SID_INSERT_ZWSP:
     732             :         {
     733           0 :             SvtCTLOptions aCTLOptions;
     734           0 :             sal_Bool bEnabled = aCTLOptions.IsCTLFontEnabled();
     735           0 :             GetView().GetViewFrame()->GetBindings().SetVisibleState( nWhich, bEnabled );
     736           0 :             if(!bEnabled)
     737           0 :                 rSet.DisableItem(nWhich);
     738             :         }
     739           0 :         break;
     740             :         default:
     741           0 :             nSlotId = 0;                // don't know this slot
     742           0 :             break;
     743             :         }
     744             : 
     745           0 :         if( nSlotId )
     746           0 :             rSet.Put( SfxBoolItem( nWhich, bFlag ));
     747             : 
     748           0 :         nWhich = aIter.NextWhich();
     749           0 :     }
     750             : }
     751             : 
     752           0 : void SwDrawTextShell::GetDrawTxtCtrlState(SfxItemSet& rSet)
     753             : {
     754           0 :     if (!IsTextEdit())  // Sonst Absturz!
     755           0 :         return;
     756             : 
     757           0 :     OutlinerView* pOLV = pSdrView->GetTextEditOutlinerView();
     758           0 :     SfxItemSet aEditAttr(pOLV->GetAttribs());
     759             : 
     760           0 :     SfxWhichIter aIter(rSet);
     761           0 :     sal_uInt16 nWhich = aIter.FirstWhich();
     762           0 :     sal_uInt16 nScriptType = pOLV->GetSelectedScriptType();
     763           0 :     while(nWhich)
     764             :     {
     765           0 :         sal_uInt16 nEEWhich = 0;
     766           0 :         sal_uInt16 nSlotId = GetPool().GetSlotId( nWhich );
     767           0 :         switch( nSlotId )
     768             :         {
     769             :             case SID_ATTR_CHAR_FONT:
     770             :             case SID_ATTR_CHAR_FONTHEIGHT:
     771             :             case SID_ATTR_CHAR_WEIGHT:
     772             :             case SID_ATTR_CHAR_POSTURE:
     773             :             {
     774           0 :                 SfxItemPool* pEditPool = aEditAttr.GetPool()->GetSecondaryPool();
     775           0 :                 if( !pEditPool )
     776           0 :                     pEditPool = aEditAttr.GetPool();
     777           0 :                 SvxScriptSetItem aSetItem( nSlotId, *pEditPool );
     778           0 :                 aSetItem.GetItemSet().Put( aEditAttr, sal_False );
     779           0 :                 const SfxPoolItem* pI = aSetItem.GetItemOfScript( nScriptType );
     780           0 :                 if( pI )
     781           0 :                     rSet.Put( *pI, nWhich );
     782             :                 else
     783           0 :                     rSet.InvalidateItem( nWhich );
     784             :             }
     785           0 :             break;
     786           0 :             case SID_ATTR_CHAR_COLOR: nEEWhich = EE_CHAR_COLOR; break;
     787           0 :             case SID_ATTR_CHAR_UNDERLINE: nEEWhich = EE_CHAR_UNDERLINE;break;
     788           0 :             case SID_ATTR_CHAR_OVERLINE: nEEWhich = EE_CHAR_OVERLINE;break;
     789           0 :             case SID_ATTR_CHAR_CONTOUR: nEEWhich = EE_CHAR_OUTLINE; break;
     790           0 :             case SID_ATTR_CHAR_SHADOWED:  nEEWhich = EE_CHAR_SHADOW;break;
     791           0 :             case SID_ATTR_CHAR_STRIKEOUT: nEEWhich = EE_CHAR_STRIKEOUT;break;
     792             :             case SID_AUTOSPELL_CHECK:
     793             :             {
     794           0 :                 const SfxPoolItem* pState = rView.GetSlotState(nWhich);
     795           0 :                 if (pState)
     796           0 :                     rSet.Put(SfxBoolItem(nWhich, ((const SfxBoolItem*)pState)->GetValue()));
     797             :                 else
     798           0 :                     rSet.DisableItem( nWhich );
     799           0 :                 break;
     800             :             }
     801           0 :             case SID_ATTR_CHAR_WORDLINEMODE: nEEWhich = EE_CHAR_WLM; break;
     802           0 :             case SID_ATTR_CHAR_RELIEF      : nEEWhich = EE_CHAR_RELIEF;  break;
     803           0 :             case SID_ATTR_CHAR_LANGUAGE    : nEEWhich = EE_CHAR_LANGUAGE;break;
     804           0 :             case SID_ATTR_CHAR_KERNING     : nEEWhich = EE_CHAR_KERNING; break;
     805           0 :             case SID_ATTR_CHAR_SCALEWIDTH:   nEEWhich = EE_CHAR_FONTWIDTH;break;
     806           0 :             case SID_ATTR_CHAR_AUTOKERN  :   nEEWhich = EE_CHAR_PAIRKERNING; break;
     807           0 :             case SID_ATTR_CHAR_ESCAPEMENT:   nEEWhich = EE_CHAR_ESCAPEMENT; break;
     808             :         }
     809           0 :         if(nEEWhich)
     810           0 :             rSet.Put(aEditAttr.Get(nEEWhich, sal_True), nWhich);
     811             : 
     812           0 :         nWhich = aIter.NextWhich();
     813           0 :     }
     814             : }
     815             : 
     816           0 : void SwDrawTextShell::ExecClpbrd(SfxRequest &rReq)
     817             : {
     818           0 :     if (!IsTextEdit())  // Sonst Absturz!
     819             :         return;
     820             : 
     821           0 :     OutlinerView* pOLV = pSdrView->GetTextEditOutlinerView();
     822             : 
     823           0 :     ESelection aSel(pOLV->GetSelection());
     824           0 :     const sal_Bool bCopy = (aSel.nStartPara != aSel.nEndPara) || (aSel.nStartPos != aSel.nEndPos);
     825           0 :     sal_uInt16 nId = rReq.GetSlot();
     826           0 :     switch( nId )
     827             :     {
     828             :         case SID_CUT:
     829           0 :             if (bCopy)
     830           0 :                 pOLV->Cut();
     831             :             return;
     832             : 
     833             :         case SID_COPY:
     834           0 :             if (bCopy)
     835           0 :                 pOLV->Copy();
     836             :             return;
     837             : 
     838             :         case SID_PASTE:
     839           0 :             pOLV->PasteSpecial();
     840           0 :             break;
     841             : 
     842             :         default:
     843             :             OSL_FAIL("wrong dispatcher");
     844             :             return;
     845             :     }
     846             : }
     847             : 
     848             : /*--------------------------------------------------------------------
     849             :     Beschreibung:   ClipBoard-Status
     850             :  --------------------------------------------------------------------*/
     851           0 : void SwDrawTextShell::StateClpbrd(SfxItemSet &rSet)
     852             : {
     853           0 :     if (!IsTextEdit())  // Sonst Absturz!
     854           0 :         return;
     855             : 
     856           0 :     OutlinerView* pOLV = pSdrView->GetTextEditOutlinerView();
     857           0 :     ESelection aSel(pOLV->GetSelection());
     858             :     const sal_Bool bCopy = (aSel.nStartPara != aSel.nEndPara) ||
     859           0 :                            (aSel.nStartPos != aSel.nEndPos);
     860             : 
     861             : 
     862           0 :     SfxWhichIter aIter(rSet);
     863           0 :     sal_uInt16 nWhich = aIter.FirstWhich();
     864             : 
     865           0 :     while(nWhich)
     866             :     {
     867           0 :         switch(nWhich)
     868             :         {
     869             :             case SID_CUT:
     870             :             case SID_COPY:
     871           0 :                 if( !bCopy )
     872           0 :                     rSet.DisableItem( nWhich );
     873           0 :                 break;
     874             : 
     875             :             case SID_PASTE:
     876             :                 {
     877             :                     TransferableDataHelper aDataHelper(
     878             :                         TransferableDataHelper::CreateFromSystemClipboard(
     879           0 :                                 &GetView().GetEditWin() ) );
     880             : 
     881           0 :                     if( !aDataHelper.GetXTransferable().is() ||
     882           0 :                         !SwTransferable::IsPaste( GetShell(), aDataHelper ))
     883           0 :                         rSet.DisableItem( SID_PASTE );
     884             :                 }
     885           0 :                 break;
     886             : 
     887             :             case SID_PASTE_SPECIAL:
     888           0 :                 rSet.DisableItem( SID_PASTE_SPECIAL );
     889           0 :                 break;
     890             :             // #151110#
     891             :             case SID_CLIPBOARD_FORMAT_ITEMS:
     892           0 :                 rSet.DisableItem( SID_CLIPBOARD_FORMAT_ITEMS );
     893           0 :                 break;
     894             :         }
     895           0 :         nWhich = aIter.NextWhich();
     896           0 :     }
     897             : }
     898             : 
     899             : /*--------------------------------------------------------------------
     900             :     Beschreibung:   Hyperlink-Status
     901             :  --------------------------------------------------------------------*/
     902           0 : void SwDrawTextShell::StateInsert(SfxItemSet &rSet)
     903             : {
     904           0 :     if (!IsTextEdit())  // Sonst Absturz!
     905           0 :         return;
     906             : 
     907           0 :     OutlinerView* pOLV = pSdrView->GetTextEditOutlinerView();
     908           0 :     SfxWhichIter aIter(rSet);
     909           0 :     sal_uInt16 nWhich = aIter.FirstWhich();
     910             : 
     911           0 :     while(nWhich)
     912             :     {
     913           0 :         switch(nWhich)
     914             :         {
     915             :             case SID_HYPERLINK_GETLINK:
     916             :                 {
     917           0 :                     SvxHyperlinkItem aHLinkItem;
     918           0 :                     aHLinkItem.SetInsertMode(HLINK_FIELD);
     919             : 
     920           0 :                     const SvxFieldItem* pFieldItem = pOLV->GetFieldAtSelection();
     921             : 
     922           0 :                     if (pFieldItem)
     923             :                     {
     924           0 :                         const SvxFieldData* pField = pFieldItem->GetField();
     925             : 
     926           0 :                         if (pField->ISA(SvxURLField))
     927             :                         {
     928           0 :                             aHLinkItem.SetName(((const SvxURLField*) pField)->GetRepresentation());
     929           0 :                             aHLinkItem.SetURL(((const SvxURLField*) pField)->GetURL());
     930           0 :                             aHLinkItem.SetTargetFrame(((const SvxURLField*) pField)->GetTargetFrame());
     931             :                         }
     932             :                     }
     933             :                     else
     934             :                     {
     935           0 :                         String sSel(pOLV->GetSelected());
     936           0 :                         sSel.Erase(255);
     937           0 :                         aHLinkItem.SetName(comphelper::string::stripEnd(sSel, ' '));
     938             :                     }
     939             : 
     940           0 :                     sal_uInt16 nHtmlMode = ::GetHtmlMode(GetView().GetDocShell());
     941           0 :                     aHLinkItem.SetInsertMode((SvxLinkInsertMode)(aHLinkItem.GetInsertMode() |
     942           0 :                         ((nHtmlMode & HTMLMODE_ON) != 0 ? HLINK_HTMLMODE : 0)));
     943             : 
     944           0 :                     rSet.Put(aHLinkItem);
     945             :                 }
     946           0 :                 break;
     947             :         }
     948           0 :         nWhich = aIter.NextWhich();
     949           0 :     }
     950          30 : }
     951             : 
     952             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10