LCOV - code coverage report
Current view: top level - sw/source/uibase/shells - textsh1.cxx (source / functions) Hit Total Coverage
Test: commit 10e77ab3ff6f4314137acd6e2702a6e5c1ce1fae Lines: 94 874 10.8 %
Date: 2014-11-03 Functions: 3 6 50.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #include <com/sun/star/i18n/WordType.hpp>
      21             : #include <com/sun/star/ui/dialogs/XSLTFilterDialog.hpp>
      22             : 
      23             : #include <comphelper/processfactory.hxx>
      24             : #include <hintids.hxx>
      25             : #include <cmdid.h>
      26             : #include <helpid.h>
      27             : 
      28             : #include <i18nlangtag/languagetag.hxx>
      29             : #include <svl/languageoptions.hxx>
      30             : #include <editeng/langitem.hxx>
      31             : #include <svtools/langtab.hxx>
      32             : #include <svl/slstitm.hxx>
      33             : #include <string.h>
      34             : #include <svl/stritem.hxx>
      35             : #include <sfx2/htmlmode.hxx>
      36             : #include <svl/whiter.hxx>
      37             : #include <sfx2/bindings.hxx>
      38             : #include <sfx2/dispatch.hxx>
      39             : #include <sfx2/objitem.hxx>
      40             : #include <vcl/unohelp2.hxx>
      41             : #include <sfx2/request.hxx>
      42             : #include <svl/eitem.hxx>
      43             : #include <svl/macitem.hxx>
      44             : #include <editeng/lrspitem.hxx>
      45             : #include <editeng/colritem.hxx>
      46             : #include <editeng/tstpitem.hxx>
      47             : #include <editeng/brushitem.hxx>
      48             : #include <editeng/svxacorr.hxx>
      49             : #include <svl/cjkoptions.hxx>
      50             : #include <svl/ctloptions.hxx>
      51             : #include <IDocumentDrawModelAccess.hxx>
      52             : #include <IDocumentSettingAccess.hxx>
      53             : #include <charfmt.hxx>
      54             : #include <editeng/fontitem.hxx>
      55             : #include <svx/SmartTagItem.hxx>
      56             : #include <fmtinfmt.hxx>
      57             : #include <swwait.hxx>
      58             : #include <wrtsh.hxx>
      59             : #include <wview.hxx>
      60             : #include <swmodule.hxx>
      61             : #include <viewopt.hxx>
      62             : #include <uitool.hxx>
      63             : #include <swevent.hxx>
      64             : #include <pagedesc.hxx>
      65             : #include <textsh.hxx>
      66             : #include <IMark.hxx>
      67             : #include <swdtflvr.hxx>
      68             : #include <docstat.hxx>
      69             : #include <outline.hxx>
      70             : #include <tablemgr.hxx>
      71             : #include <swundo.hxx>
      72             : #include <reffld.hxx>
      73             : #include <docsh.hxx>
      74             : #include <mdiexp.hxx>
      75             : #include <inputwin.hxx>
      76             : #include <chrdlgmodes.hxx>
      77             : #include <pardlg.hxx>
      78             : #include <frmatr.hxx>
      79             : #include <fmtcol.hxx>
      80             : #include <cellatr.hxx>
      81             : #include <edtwin.hxx>
      82             : #include <redlndlg.hxx>
      83             : #include "fldmgr.hxx"
      84             : #include <globals.hrc>
      85             : #include <shells.hrc>
      86             : #include <app.hrc>
      87             : #include <web.hrc>
      88             : #include "paratr.hxx"
      89             : #include <crsskip.hxx>
      90             : #include <vcl/svapp.hxx>
      91             : #include <sfx2/app.hxx>
      92             : #include <breakit.hxx>
      93             : #include <SwSmartTagMgr.hxx>
      94             : #include <editeng/acorrcfg.hxx>
      95             : #include "swabstdlg.hxx"
      96             : #include "misc.hrc"
      97             : #include "chrdlg.hrc"
      98             : #include <IDocumentStatistics.hxx>
      99             : #include <sfx2/sfxdlg.hxx>
     100             : #include <unotools/lingucfg.hxx>
     101             : #include <com/sun/star/beans/XPropertySet.hpp>
     102             : #include <com/sun/star/util/XChangesBatch.hpp>
     103             : #include <com/sun/star/uno/Any.hxx>
     104             : #include <editeng/unolingu.hxx>
     105             : #include <unotools/syslocaleoptions.hxx>
     106             : #include <doc.hxx>
     107             : #include <drawdoc.hxx>
     108             : #include <view.hxx>
     109             : #include <ndtxt.hxx>
     110             : #include <pam.hxx>
     111             : #include <sfx2/objface.hxx>
     112             : #include <langhelper.hxx>
     113             : #include <uiitems.hxx>
     114             : #include <wordcountdialog.hxx>
     115             : #include <tools/diagnose_ex.h>
     116             : #include <svx/nbdtmgfact.hxx>
     117             : #include <svx/nbdtmg.hxx>
     118             : 
     119             : #include <svx/svdmodel.hxx>
     120             : #include <svx/drawitem.hxx>
     121             : #include <numrule.hxx>
     122             : #include <boost/scoped_ptr.hpp>
     123             : 
     124             : using namespace ::com::sun::star;
     125             : using namespace svx::sidebar;
     126             : 
     127           0 : void sw_CharDialog( SwWrtShell &rWrtSh, bool bUseDialog, sal_uInt16 nSlot,const SfxItemSet *pArgs, SfxRequest *pReq )
     128             : {
     129           0 :     FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebView, &rWrtSh.GetView()));
     130           0 :     SW_MOD()->PutItem(SfxUInt16Item(SID_ATTR_METRIC, static_cast< sal_uInt16 >(eMetric)));
     131           0 :     SfxItemSet aCoreSet( rWrtSh.GetView().GetPool(),
     132             :                         RES_CHRATR_BEGIN,      RES_CHRATR_END-1,
     133             :                         RES_TXTATR_INETFMT,    RES_TXTATR_INETFMT,
     134             :                         RES_BACKGROUND,        RES_BACKGROUND,
     135             :                         RES_BOX,               RES_BOX,
     136             :                         RES_SHADOW,            RES_SHADOW,
     137             :                         SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER,
     138             :                         FN_PARAM_SELECTION,    FN_PARAM_SELECTION,
     139             :                         SID_HTML_MODE,         SID_HTML_MODE,
     140             :                         SID_ATTR_CHAR_WIDTH_FIT_TO_LINE,   SID_ATTR_CHAR_WIDTH_FIT_TO_LINE,
     141           0 :                         0 );
     142           0 :     rWrtSh.GetCurAttr( aCoreSet );
     143           0 :     bool bSel = rWrtSh.HasSelection();
     144           0 :     bool bSelectionPut = false;
     145           0 :     if(bSel || rWrtSh.IsInWord())
     146             :     {
     147           0 :         if(!bSel)
     148             :         {
     149           0 :             rWrtSh.StartAction();
     150           0 :             rWrtSh.Push();
     151           0 :             if(!rWrtSh.SelectTxtAttr( RES_TXTATR_INETFMT ))
     152           0 :                 rWrtSh.SelWrd();
     153             :         }
     154           0 :         aCoreSet.Put(SfxStringItem(FN_PARAM_SELECTION, rWrtSh.GetSelTxt()));
     155           0 :         bSelectionPut = true;
     156           0 :         if(!bSel)
     157             :         {
     158           0 :             rWrtSh.Pop(false);
     159           0 :             rWrtSh.EndAction();
     160             :         }
     161             :     }
     162             :         aCoreSet.Put( SfxUInt16Item( SID_ATTR_CHAR_WIDTH_FIT_TO_LINE,
     163           0 :                     rWrtSh.GetScalingOfSelectedText() ) );
     164             : 
     165           0 :     ::ConvertAttrCharToGen(aCoreSet, CONV_ATTR_STD);
     166             : 
     167             :     // Setting the BoxInfo
     168           0 :     ::PrepareBoxInfo( aCoreSet, rWrtSh );
     169             : 
     170           0 :     aCoreSet.Put(SfxUInt16Item(SID_HTML_MODE, ::GetHtmlMode(rWrtSh.GetView().GetDocShell())));
     171           0 :     boost::scoped_ptr<SfxAbstractTabDialog> pDlg;
     172           0 :     if ( bUseDialog && GetActiveView() )
     173             :     {
     174           0 :         SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
     175             :         OSL_ENSURE(pFact, "SwAbstractDialogFactory fail!");
     176             : 
     177           0 :         pDlg.reset(pFact->CreateSwCharDlg(rWrtSh.GetView().GetWindow(), rWrtSh.GetView(), aCoreSet, DLG_CHAR_STD));
     178             :         OSL_ENSURE(pDlg, "Dialog creation failed!");
     179           0 :         if( FN_INSERT_HYPERLINK == nSlot )
     180           0 :             pDlg->SetCurPageId("hyperlink");
     181             :     }
     182           0 :     if (pDlg && nSlot == SID_CHAR_DLG_EFFECT)
     183             :     {
     184           0 :         pDlg->SetCurPageId("fonteffects");
     185             :     }
     186           0 :     else if (pDlg && (nSlot == SID_ATTR_CHAR_FONT || nSlot == SID_CHAR_DLG_FOR_PARAGRAPH))
     187             :     {
     188           0 :         pDlg->SetCurPageId("font");
     189             :     }
     190           0 :     else if (pDlg && pReq)
     191             :     {
     192           0 :         SFX_REQUEST_ARG((*pReq), pItem, SfxStringItem, FN_PARAM_1, false);
     193           0 :         if (pItem)
     194           0 :             pDlg->SetCurPageId(OUStringToOString(pItem->GetValue(), RTL_TEXTENCODING_UTF8));
     195             :     }
     196             : 
     197           0 :     const SfxItemSet* pSet = NULL;
     198           0 :     if ( !bUseDialog )
     199           0 :         pSet = pArgs;
     200           0 :     else if ( pDlg && pDlg->Execute() == RET_OK ) /* #110771# pDlg can be NULL */
     201             :     {
     202           0 :         pSet = pDlg->GetOutputItemSet();
     203             :     }
     204             : 
     205           0 :     if ( pSet)
     206             :     {
     207           0 :         SfxItemSet aTmpSet( *pSet );
     208           0 :         ::ConvertAttrGenToChar(aTmpSet, CONV_ATTR_STD);
     209             : 
     210             :         const SfxPoolItem* pSelectionItem;
     211           0 :         bool bInsert = false;
     212           0 :         sal_Int32 nInsert = 0;
     213             : 
     214             :         // The old item is for unknown reasons back in the set again.
     215           0 :         if( !bSelectionPut && SfxItemState::SET == aTmpSet.GetItemState(FN_PARAM_SELECTION, false, &pSelectionItem) )
     216             :         {
     217           0 :             OUString sInsert = ((const SfxStringItem*)pSelectionItem)->GetValue();
     218           0 :             bInsert = !sInsert.isEmpty();
     219           0 :             if(bInsert)
     220             :             {
     221           0 :                 nInsert = sInsert.getLength();
     222           0 :                 rWrtSh.StartAction();
     223           0 :                 rWrtSh.Insert( sInsert );
     224           0 :                 rWrtSh.SetMark();
     225           0 :                 rWrtSh.ExtendSelection(false, sInsert.getLength());
     226           0 :                 SfxRequest aReq( rWrtSh.GetView().GetViewFrame(), FN_INSERT_STRING );
     227           0 :                 aReq.AppendItem( SfxStringItem( FN_INSERT_STRING, sInsert ) );
     228           0 :                 aReq.Done();
     229           0 :                 SfxRequest aReq1( rWrtSh.GetView().GetViewFrame(), FN_CHAR_LEFT );
     230           0 :                 aReq1.AppendItem( SfxInt32Item(FN_PARAM_MOVE_COUNT, nInsert) );
     231           0 :                 aReq1.AppendItem( SfxBoolItem(FN_PARAM_MOVE_SELECTION, true) );
     232           0 :                 aReq1.Done();
     233           0 :             }
     234             :         }
     235           0 :         aTmpSet.ClearItem(FN_PARAM_SELECTION);
     236             : 
     237           0 :         SwTxtFmtColl* pColl = rWrtSh.GetCurTxtFmtColl();
     238           0 :         if(bSel && rWrtSh.IsSelFullPara() && pColl && pColl->IsAutoUpdateFmt())
     239             :         {
     240           0 :             rWrtSh.AutoUpdatePara(pColl, aTmpSet);
     241             :         }
     242             :         else
     243           0 :             rWrtSh.SetAttrSet( aTmpSet );
     244           0 :         if (pReq)
     245           0 :             pReq->Done(aTmpSet);
     246           0 :         if(bInsert)
     247             :         {
     248           0 :             SfxRequest aReq1( rWrtSh.GetView().GetViewFrame(), FN_CHAR_RIGHT );
     249           0 :             aReq1.AppendItem( SfxInt32Item(FN_PARAM_MOVE_COUNT, nInsert) );
     250           0 :             aReq1.AppendItem( SfxBoolItem(FN_PARAM_MOVE_SELECTION, false) );
     251           0 :             aReq1.Done();
     252           0 :             rWrtSh.SwapPam();
     253           0 :             rWrtSh.ClearMark();
     254           0 :             rWrtSh.DontExpandFmt();
     255           0 :             rWrtSh.EndAction();
     256           0 :         }
     257           0 :     }
     258           0 : }
     259             : 
     260           0 : static short lcl_AskRedlineMode(vcl::Window *pWin)
     261             : {
     262             :     MessBox aQBox( pWin, 0,
     263             :                     OUString( SW_RES( STR_REDLINE_TITLE ) ),
     264           0 :                     OUString( SW_RES( STR_REDLINE_MSG ) ) );
     265           0 :     aQBox.SetImage( QueryBox::GetStandardImage() );
     266             :     const sal_uInt16 nBtnFlags = BUTTONDIALOG_DEFBUTTON |
     267             :                         BUTTONDIALOG_OKBUTTON |
     268           0 :                         BUTTONDIALOG_FOCUSBUTTON;
     269             : 
     270           0 :     aQBox.AddButton(OUString(SW_RES(STR_REDLINE_ACCEPT_ALL)), RET_OK, nBtnFlags);
     271           0 :     aQBox.GetPushButton( RET_OK )->SetHelpId(HID_AUTOFORMAT_ACCEPT);
     272           0 :     aQBox.AddButton(OUString(SW_RES(STR_REDLINE_REJECT_ALL)), RET_CANCEL, BUTTONDIALOG_CANCELBUTTON);
     273           0 :     aQBox.GetPushButton( RET_CANCEL )->SetHelpId(HID_AUTOFORMAT_REJECT  );
     274           0 :     aQBox.AddButton(OUString(SW_RES(STR_REDLINE_EDIT)), 2, 0);
     275           0 :     aQBox.GetPushButton( 2 )->SetHelpId(HID_AUTOFORMAT_EDIT_CHG);
     276           0 :     aQBox.SetButtonHelpText( RET_OK, OUString() );
     277             : 
     278           0 :     return aQBox.Execute();
     279             : }
     280             : 
     281           0 : void SwTextShell::Execute(SfxRequest &rReq)
     282             : {
     283           0 :     bool bUseDialog = true;
     284           0 :     const SfxItemSet *pArgs = rReq.GetArgs();
     285           0 :     SwWrtShell& rWrtSh = GetShell();
     286           0 :     const SfxPoolItem* pItem = 0;
     287           0 :     const sal_uInt16 nSlot = rReq.GetSlot();
     288           0 :     if(pArgs)
     289           0 :         pArgs->GetItemState(GetPool().GetWhich(nSlot), false, &pItem);
     290           0 :     switch( nSlot )
     291             :     {
     292             :         case SID_LANGUAGE_STATUS:
     293             :         {
     294             :             // get the language
     295           0 :             OUString aNewLangTxt;
     296           0 :             SFX_REQUEST_ARG( rReq, pItem2, SfxStringItem, SID_LANGUAGE_STATUS , false );
     297           0 :             if (pItem2)
     298           0 :                 aNewLangTxt = pItem2->GetValue();
     299             : 
     300             :             //!! Remember the view frame right now...
     301             :             //!! (call to GetView().GetViewFrame() will break if the
     302             :             //!! SwTextShell got destroyed meanwhile.)
     303           0 :             SfxViewFrame *pViewFrame = GetView().GetViewFrame();
     304             : 
     305           0 :             if (aNewLangTxt == "*")
     306             :             {
     307             :                 // open the dialog "Tools/Options/Language Settings - Language"
     308             :                 // to set the documents default language
     309           0 :                 SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create();
     310           0 :                 if (pFact)
     311             :                 {
     312           0 :                     boost::scoped_ptr<VclAbstractDialog> pDlg(pFact->CreateVclDialog( GetView().GetWindow(), SID_LANGUAGE_OPTIONS ));
     313           0 :                     pDlg->Execute();
     314             :                 }
     315             :             }
     316             :             else
     317             :             {
     318             :                 //!! We have to use StartAction / EndAction bracketing in
     319             :                 //!! order to prevent possible destruction of the SwTextShell
     320             :                 //!! due to the selection changes coming below.
     321           0 :                 rWrtSh.StartAction();
     322             :                 // prevent view from jumping because of (temporary) selection changes
     323           0 :                 rWrtSh.LockView( true );
     324             : 
     325             :                 // setting the new language...
     326           0 :                 if (!aNewLangTxt.isEmpty())
     327             :                 {
     328           0 :                     const OUString aSelectionLangPrefix("Current_");
     329           0 :                     const OUString aParagraphLangPrefix("Paragraph_");
     330           0 :                     const OUString aDocumentLangPrefix("Default_");
     331           0 :                     const OUString aStrNone("LANGUAGE_NONE");
     332           0 :                     const OUString aStrResetLangs("RESET_LANGUAGES");
     333             : 
     334           0 :                     SfxItemSet aCoreSet( GetPool(),
     335             :                             RES_CHRATR_LANGUAGE,        RES_CHRATR_LANGUAGE,
     336             :                             RES_CHRATR_CJK_LANGUAGE,    RES_CHRATR_CJK_LANGUAGE,
     337             :                             RES_CHRATR_CTL_LANGUAGE,    RES_CHRATR_CTL_LANGUAGE,
     338           0 :                             0 );
     339             : 
     340           0 :                     sal_Int32 nPos = 0;
     341           0 :                     bool bForSelection = true;
     342           0 :                     bool bForParagraph = false;
     343           0 :                     if (-1 != (nPos = aNewLangTxt.indexOf( aSelectionLangPrefix, 0 )))
     344             :                     {
     345             :                         // ... for the current selection
     346           0 :                         aNewLangTxt = aNewLangTxt.replaceAt(nPos, aSelectionLangPrefix.getLength(), "");
     347           0 :                         bForSelection = true;
     348             :                     }
     349           0 :                     else if (-1 != (nPos = aNewLangTxt.indexOf(aParagraphLangPrefix, 0)))
     350             :                     {
     351             :                         // ... for the current paragraph language
     352           0 :                         aNewLangTxt = aNewLangTxt.replaceAt(nPos, aParagraphLangPrefix.getLength(), "");
     353           0 :                         bForSelection = true;
     354           0 :                         bForParagraph = true;
     355             :                     }
     356           0 :                     else if (-1 != (nPos = aNewLangTxt.indexOf(aDocumentLangPrefix, 0)))
     357             :                     {
     358             :                         // ... as default document language
     359           0 :                         aNewLangTxt = aNewLangTxt.replaceAt(nPos, aDocumentLangPrefix.getLength(), "");
     360           0 :                         bForSelection = false;
     361             :                     }
     362             : 
     363           0 :                     if (bForParagraph || !bForSelection)
     364             :                     {
     365           0 :                         rWrtSh.Push(); // save selection for later restoration
     366           0 :                         rWrtSh.ClearMark(); // fdo#67796: invalidate table crsr
     367             :                     }
     368             : 
     369           0 :                     if (bForParagraph)
     370           0 :                         SwLangHelper::SelectCurrentPara( rWrtSh );
     371             : 
     372           0 :                     if (!bForSelection) // document language to be changed...
     373             :                     {
     374           0 :                         rWrtSh.SelAll();
     375           0 :                         rWrtSh.ExtendedSelectAll();
     376             :                     }
     377             : 
     378           0 :                     rWrtSh.StartUndo( ( !bForParagraph && !bForSelection ) ? UNDO_SETDEFTATTR : UNDO_EMPTY );
     379           0 :                     if (aNewLangTxt == aStrNone)
     380           0 :                         SwLangHelper::SetLanguage_None( rWrtSh, bForSelection, aCoreSet );
     381           0 :                     else if (aNewLangTxt == aStrResetLangs)
     382           0 :                         SwLangHelper::ResetLanguages( rWrtSh, bForSelection );
     383             :                     else
     384           0 :                         SwLangHelper::SetLanguage( rWrtSh, aNewLangTxt, bForSelection, aCoreSet );
     385           0 :                     rWrtSh.EndUndo();
     386             : 
     387           0 :                     if (bForParagraph || !bForSelection)
     388             :                     {
     389           0 :                         rWrtSh.Pop(false); // restore selection...
     390           0 :                     }
     391             :                 }
     392             : 
     393           0 :                 rWrtSh.LockView( false );
     394           0 :                 rWrtSh.EndAction();
     395             :             }
     396             : 
     397             :             // invalidate slot to get the new language displayed
     398           0 :             pViewFrame->GetBindings().Invalidate( nSlot );
     399             : 
     400           0 :             rReq.Done();
     401           0 :             break;
     402             :         }
     403             : 
     404             :         case SID_THES:
     405             :         {
     406             :             // replace word/selection with text from selected sub menu entry
     407           0 :             OUString aReplaceText;
     408           0 :             SFX_REQUEST_ARG( rReq, pItem2, SfxStringItem, SID_THES , false );
     409           0 :             if (pItem2)
     410           0 :                 aReplaceText = pItem2->GetValue();
     411           0 :             if (!aReplaceText.isEmpty())
     412             :             {
     413           0 :                 SwView &rView2 = rWrtSh.GetView();
     414           0 :                 const bool bSelection = rWrtSh.HasSelection();
     415           0 :                 const OUString aLookUpText = rView2.GetThesaurusLookUpText( bSelection );
     416           0 :                 rView2.InsertThesaurusSynonym( aReplaceText, aLookUpText, bSelection );
     417           0 :             }
     418             :         }
     419           0 :         break;
     420             : 
     421             :         case SID_CHARMAP:
     422             :         {
     423           0 :             InsertSymbol( rReq );
     424             :         }
     425           0 :         break;
     426             :         case FN_INSERT_FOOTNOTE:
     427             :         case FN_INSERT_ENDNOTE:
     428             :         {
     429           0 :             OUString aStr;
     430           0 :             SFX_REQUEST_ARG( rReq, pFont, SfxStringItem, FN_PARAM_1 , false );
     431           0 :             SFX_REQUEST_ARG( rReq, pNameItem, SfxStringItem, nSlot , false );
     432           0 :             if ( pNameItem )
     433           0 :                 aStr = pNameItem->GetValue();
     434           0 :             bool bFont = pFont && !pFont->GetValue().isEmpty();
     435           0 :             rWrtSh.StartUndo( UNDO_UI_INSERT_FOOTNOTE );
     436           0 :             rWrtSh.InsertFootnote( aStr, nSlot == FN_INSERT_ENDNOTE, !bFont );
     437           0 :             if ( bFont )
     438             :             {
     439           0 :                 rWrtSh.Left( CRSR_SKIP_CHARS, true, 1, false );
     440           0 :                 SfxItemSet aSet( rWrtSh.GetAttrPool(), RES_CHRATR_FONT, RES_CHRATR_FONT );
     441           0 :                 rWrtSh.GetCurAttr( aSet );
     442           0 :                 SvxFontItem &rFont = (SvxFontItem &) aSet.Get( RES_CHRATR_FONT );
     443           0 :                 SvxFontItem aFont( rFont.GetFamily(), pFont->GetValue(),
     444           0 :                                     rFont.GetStyleName(), rFont.GetPitch(), RTL_TEXTENCODING_DONTKNOW, RES_CHRATR_FONT );
     445           0 :                 rWrtSh.SetAttrSet( aSet, nsSetAttrMode::SETATTR_DONTEXPAND );
     446           0 :                 rWrtSh.ResetSelect(0, false);
     447           0 :                 rWrtSh.EndSelect();
     448           0 :                 rWrtSh.GotoFtnTxt();
     449             :             }
     450           0 :             rWrtSh.EndUndo( UNDO_UI_INSERT_FOOTNOTE );
     451           0 :             rReq.Done();
     452             :         }
     453           0 :         break;
     454             :         case FN_INSERT_FOOTNOTE_DLG:
     455             :         {
     456           0 :             SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
     457             :             OSL_ENSURE(pFact, "Dialog creation failed!");
     458             :             boost::scoped_ptr<AbstractInsFootNoteDlg> pDlg(pFact->CreateInsFootNoteDlg(
     459           0 :                 GetView().GetWindow(), rWrtSh, false));
     460             :             OSL_ENSURE(pDlg, "Dialog creation failed!");
     461           0 :             pDlg->SetHelpId(GetStaticInterface()->GetSlot(nSlot)->GetCommand());
     462           0 :             if ( pDlg->Execute() == RET_OK )
     463             :             {
     464           0 :                 const sal_uInt16 nId = pDlg->IsEndNote() ? FN_INSERT_ENDNOTE : FN_INSERT_FOOTNOTE;
     465           0 :                 SfxRequest aReq( GetView().GetViewFrame(), nId );
     466           0 :                 if ( !pDlg->GetStr().isEmpty() )
     467           0 :                     aReq.AppendItem( SfxStringItem( nId, pDlg->GetStr() ) );
     468           0 :                 if ( !pDlg->GetFontName().isEmpty() )
     469           0 :                     aReq.AppendItem( SfxStringItem( FN_PARAM_1, pDlg->GetFontName() ) );
     470           0 :                 ExecuteSlot( aReq );
     471             :             }
     472             : 
     473           0 :             rReq.Ignore();
     474             :         }
     475           0 :         break;
     476             :         case FN_FORMAT_FOOTNOTE_DLG:
     477             :         {
     478           0 :             SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
     479             :             OSL_ENSURE(pFact, "SwAbstractDialogFactory fail!");
     480             : 
     481           0 :             boost::scoped_ptr<VclAbstractDialog> pDlg(pFact->CreateSwFootNoteOptionDlg(GetView().GetWindow(), rWrtSh));
     482             :             OSL_ENSURE(pDlg, "Dialog creation failed!");
     483           0 :             pDlg->Execute();
     484           0 :             break;
     485             :         }
     486             :         case SID_INSERTDOC:
     487             :         {
     488           0 :             GetView().ExecuteInsertDoc( rReq, pItem );
     489           0 :             break;
     490             :         }
     491             :         case FN_FORMAT_RESET:
     492             :         {
     493             :             // #i78856, reset all attributes but not the language attributes
     494             :             // (for this build an array of all relevant attributes and
     495             :             // remove the languages from that)
     496           0 :             std::set<sal_uInt16> aAttribs;
     497             : 
     498             :             sal_uInt16 aResetableSetRange[] = {
     499             :                 RES_FRMATR_BEGIN, RES_FRMATR_END-1,
     500             :                 RES_CHRATR_BEGIN, RES_CHRATR_LANGUAGE - 1,
     501             :                 RES_CHRATR_LANGUAGE + 1, RES_CHRATR_CJK_LANGUAGE - 1,
     502             :                 RES_CHRATR_CJK_LANGUAGE + 1, RES_CHRATR_CTL_LANGUAGE - 1,
     503             :                 RES_CHRATR_CTL_LANGUAGE + 1, RES_CHRATR_END-1,
     504             :                 RES_PARATR_BEGIN, RES_PARATR_END-1,
     505             :                 RES_TXTATR_UNKNOWN_CONTAINER, RES_TXTATR_UNKNOWN_CONTAINER,
     506             :                 RES_UNKNOWNATR_BEGIN, RES_UNKNOWNATR_END-1,
     507             :                 0
     508           0 :             };
     509           0 :             const sal_uInt16 *pUShorts = aResetableSetRange;
     510           0 :             while (*pUShorts)
     511             :             {
     512           0 :                 for (sal_uInt16 i = pUShorts[0]; i <= pUShorts[1]; ++i)
     513           0 :                     aAttribs.insert( aAttribs.end(), i );
     514           0 :                 pUShorts += 2;
     515             :             }
     516             :             // we don't want to change writing direction.
     517           0 :             aAttribs.erase( RES_FRAMEDIR );
     518           0 :             rWrtSh.ResetAttr( aAttribs );
     519           0 :             rReq.Done();
     520           0 :             break;
     521             :         }
     522             :         case FN_INSERT_BREAK_DLG:
     523             :         {
     524           0 :             sal_uInt16 nKind=0;
     525           0 :             ::boost::optional<sal_uInt16> oPageNumber;
     526           0 :             OUString aTemplateName;
     527           0 :             if ( pItem )
     528             :             {
     529           0 :                 nKind = ((SfxInt16Item*)pItem)->GetValue();
     530           0 :                 SFX_REQUEST_ARG( rReq, pTemplate, SfxStringItem, FN_PARAM_1 , false );
     531           0 :                 SFX_REQUEST_ARG( rReq, pNumber, SfxUInt16Item, FN_PARAM_2 , false );
     532           0 :                 SFX_REQUEST_ARG( rReq, pIsNumberFilled, SfxBoolItem, FN_PARAM_3, false );
     533           0 :                 if ( pTemplate )
     534           0 :                     aTemplateName = pTemplate->GetValue();
     535           0 :                 if ( pNumber && pIsNumberFilled && pIsNumberFilled->GetValue() )
     536           0 :                     oPageNumber = pNumber->GetValue();
     537             :             }
     538             :             else
     539             :             {
     540           0 :                 SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
     541             :                 OSL_ENSURE(pFact, "SwAbstractDialogFactory fail!");
     542             : 
     543           0 :                 boost::scoped_ptr<AbstractSwBreakDlg> pDlg(pFact->CreateSwBreakDlg(GetView().GetWindow(), rWrtSh));
     544             :                 OSL_ENSURE(pDlg, "Dialog creation failed!");
     545           0 :                 if ( pDlg->Execute() == RET_OK )
     546             :                 {
     547           0 :                     nKind = pDlg->GetKind();
     548           0 :                     aTemplateName = pDlg->GetTemplateName();
     549           0 :                     oPageNumber = pDlg->GetPageNumber();
     550             : 
     551           0 :                     bool bIsNumberFilled = false;
     552           0 :                     sal_uInt16 nPageNumber = 0;
     553             : 
     554           0 :                     if (oPageNumber)
     555             :                     {
     556           0 :                         bIsNumberFilled = true;
     557           0 :                         nPageNumber = oPageNumber.get();
     558             :                     }
     559             : 
     560           0 :                     rReq.AppendItem( SfxInt16Item ( FN_INSERT_BREAK_DLG, nKind ) );
     561           0 :                     rReq.AppendItem( SfxStringItem( FN_PARAM_1, aTemplateName ) );
     562           0 :                     rReq.AppendItem( SfxUInt16Item( FN_PARAM_2, nPageNumber ) );
     563           0 :                     rReq.AppendItem( SfxBoolItem  ( FN_PARAM_3, bIsNumberFilled ) );
     564           0 :                     rReq.Done();
     565             :                 }
     566             :                 else
     567           0 :                     rReq.Ignore();
     568             :             }
     569             : 
     570           0 :             switch ( nKind )
     571             :             {
     572             :                 case 1 :
     573           0 :                     rWrtSh.InsertLineBreak(); break;
     574             :                 case 2 :
     575           0 :                     rWrtSh.InsertColumnBreak(); break;
     576             :                 case 3 :
     577             :                 {
     578           0 :                     rWrtSh.StartAllAction();
     579           0 :                     if( !aTemplateName.isEmpty() )
     580           0 :                         rWrtSh.InsertPageBreak( &aTemplateName, oPageNumber );
     581             :                     else
     582           0 :                         rWrtSh.InsertPageBreak();
     583           0 :                     rWrtSh.EndAllAction();
     584             :                 }
     585             :             }
     586             : 
     587           0 :             break;
     588             :         }
     589             :         case FN_INSERT_BOOKMARK:
     590             :         {
     591           0 :             if ( pItem )
     592             :             {
     593           0 :                 OUString sName = ((SfxStringItem*)pItem)->GetValue();
     594           0 :                 rWrtSh.SetBookmark( vcl::KeyCode(), sName, OUString() );
     595             :             }
     596             :             else
     597             :             {
     598           0 :                 SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
     599             :                 OSL_ENSURE(pFact, "SwAbstractDialogFactory fail!");
     600             : 
     601           0 :                 boost::scoped_ptr<VclAbstractDialog> pDlg(pFact->CreateSwInsertBookmarkDlg( GetView().GetWindow(), rWrtSh, rReq, DLG_INSERT_BOOKMARK ));
     602             :                 OSL_ENSURE(pDlg, "Dialog creation failed!");
     603           0 :                 pDlg->Execute();
     604             :             }
     605             : 
     606           0 :             break;
     607             :         }
     608             :         case FN_DELETE_BOOKMARK:
     609             :         {
     610           0 :             if ( pItem )
     611             :             {
     612           0 :                 IDocumentMarkAccess* const pMarkAccess = rWrtSh.getIDocumentMarkAccess();
     613           0 :                 pMarkAccess->deleteMark( pMarkAccess->findMark(((SfxStringItem*)pItem)->GetValue()) );
     614             :             }
     615           0 :             break;
     616             :         }
     617             :         case FN_AUTOFORMAT_REDLINE_APPLY:
     618             :         {
     619           0 :             SvxSwAutoFmtFlags aFlags(SvxAutoCorrCfg::Get().GetAutoCorrect()->GetSwFlags());
     620             :             // This must always be sal_False for the postprocessing.
     621           0 :             aFlags.bAFmtByInput = false;
     622           0 :             aFlags.bWithRedlining = true;
     623           0 :             rWrtSh.AutoFormat( &aFlags );
     624           0 :             aFlags.bWithRedlining = false;
     625             : 
     626           0 :             SfxViewFrame* pVFrame = GetView().GetViewFrame();
     627           0 :             if (pVFrame->HasChildWindow(FN_REDLINE_ACCEPT))
     628           0 :                 pVFrame->ToggleChildWindow(FN_REDLINE_ACCEPT);
     629             : 
     630           0 :             SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
     631             :             OSL_ENSURE(pFact, "SwAbstractDialogFactory fail!");
     632             : 
     633           0 :             boost::scoped_ptr<AbstractSwModalRedlineAcceptDlg> pDlg(pFact->CreateSwModalRedlineAcceptDlg(&GetView().GetEditWin()));
     634             :             OSL_ENSURE(pDlg, "Dialog creation failed!");
     635             : 
     636           0 :             switch (lcl_AskRedlineMode(&GetView().GetEditWin()))
     637             :             {
     638             :                 case RET_OK:
     639             :                 {
     640           0 :                     pDlg->AcceptAll(true);
     641           0 :                     SfxRequest aReq( pVFrame, FN_AUTOFORMAT_APPLY );
     642           0 :                     aReq.Done();
     643           0 :                     rReq.Ignore();
     644           0 :                     break;
     645             :                 }
     646             : 
     647             :                 case RET_CANCEL:
     648           0 :                     pDlg->AcceptAll(false);
     649           0 :                     rReq.Ignore();
     650           0 :                     break;
     651             : 
     652             :                 case 2:
     653           0 :                     pDlg->Execute();
     654           0 :                     rReq.Done();
     655           0 :                     break;
     656           0 :             }
     657             :         }
     658           0 :         break;
     659             : 
     660             :         case FN_AUTOFORMAT_APPLY:
     661             :         {
     662           0 :             SvxSwAutoFmtFlags aFlags(SvxAutoCorrCfg::Get().GetAutoCorrect()->GetSwFlags());
     663             :             // This must always be sal_False for the postprocessing.
     664           0 :             aFlags.bAFmtByInput = false;
     665           0 :             rWrtSh.AutoFormat( &aFlags );
     666           0 :             rReq.Done();
     667             :         }
     668           0 :         break;
     669             :         case FN_AUTOFORMAT_AUTO:
     670             :         {
     671           0 :             SvxAutoCorrCfg& rACfg = SvxAutoCorrCfg::Get();
     672           0 :             bool bSet = pItem ? ((const SfxBoolItem*)pItem)->GetValue() : !rACfg.IsAutoFmtByInput();
     673           0 :             if( bSet != rACfg.IsAutoFmtByInput() )
     674             :             {
     675           0 :                 rACfg.SetAutoFmtByInput( bSet );
     676           0 :                 GetView().GetViewFrame()->GetBindings().Invalidate( nSlot );
     677           0 :                 if ( !pItem )
     678           0 :                     rReq.AppendItem( SfxBoolItem( GetPool().GetWhich(nSlot), bSet ) );
     679           0 :                 rReq.Done();
     680             :             }
     681             :         }
     682           0 :         break;
     683             :         case FN_AUTO_CORRECT:
     684             :         {
     685             :             // At first set to blank as default.
     686           0 :             sal_Unicode cChar = ' ';
     687           0 :             rWrtSh.AutoCorrect( *SvxAutoCorrCfg::Get().GetAutoCorrect(), cChar );
     688           0 :             rReq.Done();
     689             :         }
     690           0 :         break;
     691             :         case FN_TABLE_SORT_DIALOG:
     692             :         case FN_SORTING_DLG:
     693             :         {
     694           0 :             SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
     695             :             OSL_ENSURE(pFact, "SwAbstractDialogFactory fail!");
     696             : 
     697           0 :             boost::scoped_ptr<VclAbstractDialog> pDlg(pFact->CreateVclAbstractDialog( GetView().GetWindow(), rWrtSh, DLG_SORTING ));
     698             :             OSL_ENSURE(pDlg, "Dialog creation failed!");
     699           0 :             pDlg->Execute();
     700           0 :             pDlg.reset();
     701           0 :             rReq.Done();
     702             :         }
     703           0 :         break;
     704             :         case FN_NUMBERING_OUTLINE_DLG:
     705             :         {
     706           0 :             SfxItemSet aTmp(GetPool(), FN_PARAM_1, FN_PARAM_1);
     707           0 :             SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
     708             :             OSL_ENSURE(pFact, "Dialog creation failed!");
     709             :             boost::scoped_ptr<SfxAbstractTabDialog> pDlg(pFact->CreateSwTabDialog( DLG_TAB_OUTLINE,
     710           0 :                                                         GetView().GetWindow(), &aTmp, rWrtSh));
     711             :             OSL_ENSURE(pDlg, "Dialog creation failed!");
     712           0 :             pDlg->Execute();
     713           0 :             pDlg.reset();
     714           0 :             rReq.Done();
     715             :         }
     716           0 :             break;
     717             :         case FN_CALCULATE:
     718             :             {
     719           0 :                 SwTransferable* pTransfer = new SwTransferable( rWrtSh );
     720             : /*??*/          uno::Reference<
     721             :                     datatransfer::XTransferable > xRef(
     722           0 :                                                     pTransfer );
     723           0 :                 pTransfer->CalculateAndCopy();
     724           0 :                 rReq.Done();
     725             :             }
     726           0 :             break;
     727             :         case FN_GOTO_REFERENCE:
     728             :         {
     729           0 :             SwField *pFld = rWrtSh.GetCurFld();
     730           0 :             if(pFld && pFld->GetTypeId() == TYP_GETREFFLD)
     731             :             {
     732           0 :                 rWrtSh.StartAllAction();
     733             :                 rWrtSh.SwCrsrShell::GotoRefMark( ((SwGetRefField*)pFld)->GetSetRefName(),
     734           0 :                                     ((SwGetRefField*)pFld)->GetSubType(),
     735           0 :                                     ((SwGetRefField*)pFld)->GetSeqNo() );
     736           0 :                 rWrtSh.EndAllAction();
     737           0 :                 rReq.Done();
     738             :             }
     739             :         }
     740           0 :             break;
     741             :         case FN_EDIT_FORMULA:
     742             :         {
     743           0 :             const sal_uInt16 nId = SwInputChild::GetChildWindowId();
     744           0 :             SfxViewFrame* pVFrame = GetView().GetViewFrame();
     745           0 :             if(pItem)
     746             :             {
     747             :                 //if the ChildWindow is active it has to be removed
     748           0 :                 if( pVFrame->HasChildWindow( nId ) )
     749             :                 {
     750           0 :                     pVFrame->ToggleChildWindow( nId );
     751           0 :                     pVFrame->GetBindings().InvalidateAll( true );
     752             :                 }
     753             : 
     754           0 :                 OUString sFormula(((const SfxStringItem*)pItem)->GetValue());
     755           0 :                 SwFldMgr aFldMgr;
     756           0 :                 rWrtSh.StartAllAction();
     757             :                 bool bDelSel;
     758           0 :                 if( (bDelSel = rWrtSh.HasSelection()) )
     759             :                 {
     760           0 :                     rWrtSh.StartUndo( UNDO_START );
     761           0 :                     rWrtSh.DelRight();
     762             :                 }
     763             :                 else
     764             :                 {
     765           0 :                     rWrtSh.EnterStdMode();
     766             :                 }
     767             : 
     768           0 :                 if( !bDelSel && aFldMgr.GetCurFld() && TYP_FORMELFLD == aFldMgr.GetCurTypeId() )
     769           0 :                     aFldMgr.UpdateCurFld( aFldMgr.GetCurFld()->GetFormat(), OUString(), sFormula );
     770           0 :                 else if( !sFormula.isEmpty() )
     771             :                 {
     772           0 :                     if( rWrtSh.IsCrsrInTbl() )
     773             :                     {
     774           0 :                         SfxItemSet aSet( rWrtSh.GetAttrPool(), RES_BOXATR_FORMULA, RES_BOXATR_FORMULA );
     775           0 :                         aSet.Put( SwTblBoxFormula( sFormula ));
     776           0 :                         rWrtSh.SetTblBoxFormulaAttrs( aSet );
     777           0 :                         rWrtSh.UpdateTable();
     778             :                     }
     779             :                     else
     780             :                     {
     781           0 :                         SvNumberFormatter* pFormatter = rWrtSh.GetNumberFormatter();
     782           0 :                         sal_uLong nSysNumFmt = pFormatter->GetFormatIndex( NF_NUMBER_STANDARD, LANGUAGE_SYSTEM);
     783           0 :                         SwInsertFld_Data aData(TYP_FORMELFLD, nsSwGetSetExpType::GSE_FORMULA, OUString(), sFormula, nSysNumFmt);
     784           0 :                         aFldMgr.InsertFld(aData);
     785             :                     }
     786             :                 }
     787             : 
     788           0 :                 if( bDelSel )
     789           0 :                     rWrtSh.EndUndo( UNDO_END );
     790           0 :                 rWrtSh.EndAllAction();
     791           0 :                 rReq.Done();
     792             :             }
     793             :             else
     794             :             {
     795           0 :                 rWrtSh.EndAllTblBoxEdit();
     796           0 :                 pVFrame->ToggleChildWindow( nId );
     797           0 :                 if( !pVFrame->HasChildWindow( nId ) )
     798           0 :                     pVFrame->GetBindings().InvalidateAll( true );
     799           0 :                 rReq.Ignore();
     800             :             }
     801             :         }
     802             : 
     803           0 :         break;
     804             :         case FN_TABLE_UNSET_READ_ONLY:
     805             :         {
     806           0 :             rWrtSh.UnProtectTbls();
     807             :         }
     808           0 :         break;
     809             :         case FN_EDIT_HYPERLINK:
     810           0 :             GetView().GetViewFrame()->SetChildWindow(SID_HYPERLINK_DIALOG, true);
     811           0 :         break;
     812             :         case FN_REMOVE_HYPERLINK:
     813             :         {
     814           0 :             bool bSel = rWrtSh.HasSelection();
     815           0 :             if(!bSel)
     816             :             {
     817           0 :                 rWrtSh.StartAction();
     818           0 :                 rWrtSh.Push();
     819           0 :                 if(!rWrtSh.SelectTxtAttr( RES_TXTATR_INETFMT ))
     820           0 :                     rWrtSh.SelWrd();
     821             :             }
     822             :             //now remove the attribute
     823           0 :             std::set<sal_uInt16> aAttribs;
     824           0 :             aAttribs.insert( RES_TXTATR_INETFMT );
     825           0 :             rWrtSh.ResetAttr( aAttribs );
     826           0 :             if(!bSel)
     827             :             {
     828           0 :                 rWrtSh.Pop(false);
     829           0 :                 rWrtSh.EndAction();
     830           0 :             }
     831             :         }
     832           0 :         break;
     833             :         case SID_ATTR_BRUSH_CHAR :
     834             :         case SID_ATTR_CHAR_SCALEWIDTH :
     835             :         case SID_ATTR_CHAR_ROTATED :
     836             :         case FN_TXTATR_INET :
     837             :         case FN_INSERT_HYPERLINK:
     838             :         {
     839           0 :             const sal_uInt16 nWhich = GetPool().GetWhich( nSlot );
     840           0 :             if ( pArgs && pArgs->GetItemState( nWhich ) == SfxItemState::SET )
     841           0 :                 bUseDialog = false;
     842             :             // intentionally no break
     843             :         }
     844             :         case SID_CHAR_DLG:
     845             :         case SID_CHAR_DLG_EFFECT:
     846             :         {
     847           0 :             sw_CharDialog( rWrtSh, bUseDialog, nSlot, pArgs, &rReq );
     848             :         }
     849           0 :         break;
     850             :         case SID_CHAR_DLG_FOR_PARAGRAPH:
     851             :         {
     852           0 :             rWrtSh.Push();          //save current cursor
     853           0 :             SwLangHelper::SelectCurrentPara( rWrtSh );
     854           0 :             sw_CharDialog( rWrtSh, bUseDialog, nSlot, pArgs, &rReq );
     855           0 :             rWrtSh.Pop( false );    //restore old cursor
     856             :         }
     857           0 :         break;
     858             :         case SID_ATTR_LRSPACE :
     859             :         case SID_ATTR_ULSPACE :
     860             :         case SID_ATTR_BRUSH :
     861             :         case SID_PARA_VERTALIGN :
     862             :         case SID_ATTR_PARA_NUMRULE :
     863             :         case SID_ATTR_PARA_REGISTER :
     864             :         case SID_ATTR_PARA_PAGENUM :
     865             :         case FN_FORMAT_LINENUMBER :
     866             :         case FN_NUMBER_NEWSTART :
     867             :         case FN_NUMBER_NEWSTART_AT :
     868             :         case FN_FORMAT_DROPCAPS :
     869             :         case FN_DROP_TEXT:
     870             :         case SID_ATTR_PARA_LRSPACE:
     871             :         {
     872           0 :             const sal_uInt16 nWhich = GetPool().GetWhich( nSlot );
     873           0 :             if ( pArgs && pArgs->GetItemState( nWhich ) == SfxItemState::SET )
     874           0 :                 bUseDialog = false;
     875             :             // intentionally no break
     876             : 
     877             :         }
     878             :         case SID_PARA_DLG:
     879             :         {
     880           0 :             SwPaM* pPaM = NULL;
     881             : 
     882           0 :             if ( pArgs )
     883             :             {
     884           0 :                 const SfxPoolItem* pPaMItem = 0;
     885           0 :                 pArgs->GetItemState( GetPool().GetWhich( FN_PARAM_PAM ), false, &pPaMItem );
     886           0 :                 if ( pPaMItem )
     887           0 :                     pPaM = static_cast< const SwPaMItem* >( pPaMItem )->GetValue( );
     888             :             }
     889             : 
     890           0 :             if ( !pPaM )
     891           0 :                 pPaM = rWrtSh.GetCrsr();
     892             : 
     893           0 :             FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebView, &GetView()));
     894           0 :             SW_MOD()->PutItem(SfxUInt16Item(SID_ATTR_METRIC, static_cast< sal_uInt16 >(eMetric)));
     895             : 
     896           0 :             bool bApplyCharUnit = ::HasCharUnit(0 != PTR_CAST(SwWebView, &GetView()));
     897           0 :             SW_MOD()->PutItem(SfxBoolItem(SID_ATTR_APPLYCHARUNIT, bApplyCharUnit));
     898             : 
     899           0 :             SfxItemSet aCoreSet( GetPool(), //UUUU sorted by indices, one group of three concatenated
     900             :                             RES_PARATR_BEGIN,           RES_PARATR_END - 1,         // [60
     901             :                             RES_PARATR_LIST_BEGIN,      RES_PARATR_LIST_END - 1,    // [77
     902             :                             RES_FRMATR_BEGIN,           RES_FRMATR_END - 1,         // [82
     903             : 
     904             :                             //UUUU FillAttribute support
     905             :                             XATTR_FILL_FIRST, XATTR_FILL_LAST,                      // [1014
     906             : 
     907             :                             // includes SID_ATTR_TABSTOP_POS
     908             :                             SID_ATTR_TABSTOP_DEFAULTS,  SID_ATTR_TABSTOP_OFFSET,    // [10003 .. 10005
     909             : 
     910             :                             SID_ATTR_BORDER_INNER,      SID_ATTR_BORDER_INNER,      // [10023
     911             :                             SID_ATTR_PARA_MODEL,        SID_ATTR_PARA_KEEP,         // [10065
     912             : 
     913             :                             //UUUU items to hand over XPropertyList things like
     914             :                             // XColorList, XHatchList, XGradientList and XBitmapList
     915             :                             // to the Area TabPage
     916             :                             SID_COLOR_TABLE,        SID_BITMAP_LIST,                // [10179
     917             : 
     918             :                             SID_HTML_MODE,              SID_HTML_MODE,              // [10414
     919             :                             SID_ATTR_PARA_PAGENUM,      SID_ATTR_PARA_PAGENUM,      // [10457
     920             :                             FN_PARAM_1,                 FN_PARAM_1,                 // [21160
     921             :                             FN_NUMBER_NEWSTART,         FN_NUMBER_NEWSTART_AT,      // [21738
     922             :                             FN_DROP_TEXT,               FN_DROP_CHAR_STYLE_NAME,    // [22418
     923           0 :                             0);
     924             : 
     925             :             // get also the list level indent values merged as LR-SPACE item, if needed.
     926           0 :             rWrtSh.GetCurAttr( aCoreSet, true );
     927             : 
     928             :             //UUUU create needed items for XPropertyList entries from the DrawModel so that
     929             :             // the Area TabPage can access them
     930             :             // Do this after GetCurAttr, this resets the ItemSet content again
     931           0 :             const SwDrawModel* pDrawModel = GetView().GetDocShell()->GetDoc()->getIDocumentDrawModelAccess().GetDrawModel();
     932             : 
     933           0 :             aCoreSet.Put(SvxColorListItem(pDrawModel->GetColorList(), SID_COLOR_TABLE));
     934           0 :             aCoreSet.Put(SvxGradientListItem(pDrawModel->GetGradientList(), SID_GRADIENT_LIST));
     935           0 :             aCoreSet.Put(SvxHatchListItem(pDrawModel->GetHatchList(), SID_HATCH_LIST));
     936           0 :             aCoreSet.Put(SvxBitmapListItem(pDrawModel->GetBitmapList(), SID_BITMAP_LIST));
     937             : 
     938             :             aCoreSet.Put(SfxUInt16Item(SID_HTML_MODE,
     939           0 :                             ::GetHtmlMode(GetView().GetDocShell())));
     940             : 
     941             :             // Tabulators: Put DefaultTabs into ItemSet
     942             :             const SvxTabStopItem& rDefTabs = (const SvxTabStopItem&)
     943           0 :                             GetPool().GetDefaultItem(RES_PARATR_TABSTOP);
     944             : 
     945           0 :             const sal_uInt16 nDefDist = static_cast<sal_uInt16>(::GetTabDist( rDefTabs ));
     946           0 :             SfxUInt16Item aDefDistItem( SID_ATTR_TABSTOP_DEFAULTS, nDefDist );
     947           0 :             aCoreSet.Put( aDefDistItem );
     948             : 
     949             :             // Current tabulator
     950           0 :             SfxUInt16Item aTabPos( SID_ATTR_TABSTOP_POS, 0 );
     951           0 :             aCoreSet.Put( aTabPos );
     952             : 
     953             :             // Left border as offset
     954             :             //#i24363# tab stops relative to indent
     955           0 :             const long nOff = rWrtSh.getIDocumentSettingAccess()->get(IDocumentSettingAccess::TABS_RELATIVE_TO_INDENT) ?
     956           0 :                 ((SvxLRSpaceItem&)aCoreSet.Get( RES_LR_SPACE )).GetTxtLeft() : 0;
     957           0 :             SfxInt32Item aOff( SID_ATTR_TABSTOP_OFFSET, nOff );
     958           0 :             aCoreSet.Put( aOff );
     959             : 
     960             :             // Setting the BoxInfo
     961           0 :             ::PrepareBoxInfo( aCoreSet, rWrtSh );
     962             : 
     963             :             // Current page format
     964           0 :             ::SwToSfxPageDescAttr( aCoreSet );
     965             : 
     966             :             // Properties of numbering
     967           0 :             if (rWrtSh.GetNumRuleAtCurrCrsrPos())
     968             :             {
     969           0 :                 SfxBoolItem aStart( FN_NUMBER_NEWSTART, rWrtSh.IsNumRuleStart( pPaM ) );
     970           0 :                 aCoreSet.Put(aStart);
     971             :                 SfxUInt16Item aStartAt( FN_NUMBER_NEWSTART_AT,
     972           0 :                                         rWrtSh.GetNodeNumStart( pPaM ) );
     973           0 :                 aCoreSet.Put(aStartAt);
     974             :             }
     975           0 :             boost::scoped_ptr<SfxAbstractTabDialog> pDlg;
     976             : 
     977           0 :             if ( bUseDialog && GetActiveView() )
     978             :             {
     979           0 :                 OString sDefPage;
     980           0 :                 if (pItem)
     981           0 :                     sDefPage = OUStringToOString(((const SfxStringItem*)pItem)->GetValue(), RTL_TEXTENCODING_UTF8);
     982             : 
     983           0 :                 SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
     984             :                 OSL_ENSURE(pFact, "SwAbstractDialogFactory fail!");
     985             : 
     986           0 :                 pDlg.reset(pFact->CreateSwParaDlg( GetView().GetWindow(),GetView(), aCoreSet, DLG_STD, NULL, false, sDefPage ));
     987           0 :                 OSL_ENSURE(pDlg, "Dialog creation failed!");
     988             :             }
     989           0 :             SfxItemSet* pSet = NULL;
     990           0 :             if ( !bUseDialog )
     991             :             {
     992           0 :                 if ( nSlot == SID_ATTR_PARA_LRSPACE)
     993             :                 {
     994           0 :                     SvxLRSpaceItem aParaMargin((const SvxLRSpaceItem&)pArgs->Get(nSlot));
     995           0 :                     aParaMargin.SetWhich( RES_LR_SPACE);
     996           0 :                     aCoreSet.Put(aParaMargin);
     997           0 :                     pSet = &aCoreSet;
     998             : 
     999             :                 } else
    1000           0 :                     pSet = (SfxItemSet*) pArgs;
    1001             : 
    1002             :             }
    1003           0 :             else if ( pDlg && pDlg->Execute() == RET_OK )
    1004             :             {
    1005             :                 // Apply defaults if nessecary.
    1006           0 :                 pSet = (SfxItemSet*)pDlg->GetOutputItemSet();
    1007             :                 sal_uInt16 nNewDist;
    1008           0 :                 if( SfxItemState::SET == pSet->GetItemState( SID_ATTR_TABSTOP_DEFAULTS, false, &pItem ) &&
    1009           0 :                     nDefDist != (nNewDist = ((SfxUInt16Item*)pItem)->GetValue()) )
    1010             :                 {
    1011           0 :                     SvxTabStopItem aDefTabs( 0, 0, SVX_TAB_ADJUST_DEFAULT, RES_PARATR_TABSTOP );
    1012           0 :                     MakeDefTabs( nNewDist, aDefTabs );
    1013           0 :                     rWrtSh.SetDefault( aDefTabs );
    1014           0 :                     pSet->ClearItem( SID_ATTR_TABSTOP_DEFAULTS );
    1015             :                 }
    1016             : 
    1017           0 :                 if ( SfxItemState::SET == pSet->GetItemState(FN_PARAM_1,false,&pItem) )
    1018             :                 {
    1019           0 :                     pSet->Put(SfxStringItem(FN_DROP_TEXT, ((const SfxStringItem*)pItem)->GetValue()));
    1020           0 :                     pSet->ClearItem(FN_PARAM_1);
    1021             :                 }
    1022             : 
    1023           0 :                 if( SfxItemState::SET == pSet->GetItemState( RES_PARATR_DROP, false, &pItem ))
    1024             :                 {
    1025           0 :                     OUString sCharStyleName;
    1026           0 :                     if(((const SwFmtDrop*)pItem)->GetCharFmt())
    1027           0 :                         sCharStyleName = ((const SwFmtDrop*)pItem)->GetCharFmt()->GetName();
    1028           0 :                     pSet->Put(SfxStringItem(FN_DROP_CHAR_STYLE_NAME, sCharStyleName));
    1029             :                 }
    1030             :             }
    1031             : 
    1032           0 :             if ( pSet )
    1033             :             {
    1034           0 :                 rReq.Done( *pSet );
    1035           0 :                 ::SfxToSwPageDescAttr( rWrtSh, *pSet );
    1036             :                 // #i56253#
    1037             :                 // enclose all undos.
    1038             :                 // Thus, check conditions, if actions will be performed.
    1039           0 :                 const bool bUndoNeeded( pSet->Count() ||
    1040           0 :                         SfxItemState::SET == pSet->GetItemState(FN_NUMBER_NEWSTART) ||
    1041           0 :                         SfxItemState::SET == pSet->GetItemState(FN_NUMBER_NEWSTART_AT) );
    1042           0 :                 if ( bUndoNeeded )
    1043             :                 {
    1044           0 :                     rWrtSh.StartUndo( UNDO_INSATTR );
    1045             :                 }
    1046           0 :                 if( pSet->Count() )
    1047             :                 {
    1048           0 :                     rWrtSh.StartAction();
    1049           0 :                     if ( SfxItemState::SET == pSet->GetItemState(FN_DROP_TEXT, false, &pItem) )
    1050             :                     {
    1051           0 :                         if ( !((SfxStringItem*)pItem)->GetValue().isEmpty() )
    1052           0 :                             rWrtSh.ReplaceDropTxt(((SfxStringItem*)pItem)->GetValue(), pPaM);
    1053             :                     }
    1054           0 :                     rWrtSh.SetAttrSet( *pSet, 0, pPaM );
    1055           0 :                     rWrtSh.EndAction();
    1056           0 :                     SwTxtFmtColl* pColl = rWrtSh.GetPaMTxtFmtColl( pPaM );
    1057           0 :                     if(pColl && pColl->IsAutoUpdateFmt())
    1058             :                     {
    1059           0 :                         rWrtSh.AutoUpdatePara(pColl, *pSet, pPaM);
    1060             :                     }
    1061             :                 }
    1062             : 
    1063           0 :                 if( SfxItemState::SET == pSet->GetItemState(FN_NUMBER_NEWSTART) )
    1064             :                 {
    1065             :                     //SetNumRuleStart(sal_True) restarts the numbering at the value
    1066             :                     //that is defined at the starting point of the numbering level
    1067             :                     //otherwise the SetNodeNumStart() value determines the start
    1068             :                     //if it's set to something different than USHRT_MAX
    1069             : 
    1070           0 :                     bool bStart = ((SfxBoolItem&)pSet->Get(FN_NUMBER_NEWSTART)).GetValue();
    1071             : 
    1072             :                     // Default value for restart value has to be USHRT_MAX
    1073             :                     // in order to indicate that the restart value of the list
    1074             :                     // style has to be used on restart.
    1075           0 :                     sal_uInt16 nNumStart = USHRT_MAX;
    1076           0 :                     if( SfxItemState::SET == pSet->GetItemState(FN_NUMBER_NEWSTART_AT) )
    1077             :                     {
    1078           0 :                         nNumStart = ((SfxUInt16Item&)pSet->Get(FN_NUMBER_NEWSTART_AT)).GetValue();
    1079             :                     }
    1080           0 :                     rWrtSh.SetNumRuleStart(bStart, pPaM);
    1081           0 :                     rWrtSh.SetNodeNumStart(nNumStart);
    1082             :                 }
    1083           0 :                 else if( SfxItemState::SET == pSet->GetItemState(FN_NUMBER_NEWSTART_AT) )
    1084             :                 {
    1085           0 :                     rWrtSh.SetNodeNumStart(((SfxUInt16Item&)pSet->Get(FN_NUMBER_NEWSTART_AT)).GetValue());
    1086           0 :                     rWrtSh.SetNumRuleStart(false, pPaM);
    1087             :                 }
    1088             :                 // #i56253#
    1089           0 :                 if ( bUndoNeeded )
    1090             :                 {
    1091           0 :                     rWrtSh.EndUndo( UNDO_INSATTR );
    1092             :                 }
    1093           0 :             }
    1094             :         }
    1095           0 :         break;
    1096             :         case FN_NUM_CONTINUE:
    1097             :         {
    1098           0 :             OUString sContinuedListId;
    1099             :             const SwNumRule* pRule =
    1100           0 :                 rWrtSh.SearchNumRule( false, true, false, -1, sContinuedListId );
    1101             :             // #i86492#
    1102             :             // Search also for bullet list
    1103           0 :             if ( !pRule )
    1104             :             {
    1105           0 :                 pRule = rWrtSh.SearchNumRule( false, false, false, -1, sContinuedListId );
    1106             :             }
    1107           0 :             if ( pRule )
    1108             :             {
    1109           0 :                 rWrtSh.SetCurNumRule( *pRule, false, sContinuedListId );
    1110           0 :             }
    1111             :         }
    1112           0 :         break;
    1113             : 
    1114             :         case FN_SELECT_PARA:
    1115             :         {
    1116           0 :             if ( !rWrtSh.IsSttOfPara() )
    1117           0 :                 rWrtSh.SttPara( false );
    1118             :             else
    1119           0 :                 rWrtSh.EnterStdMode();
    1120           0 :             rWrtSh.EndPara( true );
    1121             :         }
    1122           0 :         break;
    1123             : 
    1124             :         case SID_DEC_INDENT:
    1125             :         case SID_INC_INDENT:
    1126             :         //According to the requirement, modified the behavior when user
    1127             :         //using the indent button on the toolbar. Now if we increase/decrease indent for a
    1128             :         //paragraph which has bullet style it will increase/decrease the bullet level.
    1129             :         {
    1130             :             //If the current paragraph has bullet call the function to
    1131             :             //increase or decrease the bullet level.
    1132             :             //Why could I know wheter a paragraph has bullet or not by checking the below conditions?
    1133             :             //Please refer to the "case KEY_TAB:" section in SwEditWin::KeyInput(..) :
    1134             :             //      if( rSh.GetCurNumRule() && rSh.IsSttOfPara() &&
    1135             :             //                  !rSh.HasReadonlySel() )
    1136             :             //              eKeyState = KS_NumDown;
    1137             :             //Above code demonstrates that when the cursor is at the start of a paragraph which has bullet,
    1138             :             //press TAB will increase the bullet level.
    1139             :             //So I copied from that ^^
    1140           0 :             if ( rWrtSh.GetNumRuleAtCurrCrsrPos() && !rWrtSh.HasReadonlySel() )
    1141             :             {
    1142           0 :                 rWrtSh.NumUpDown( SID_INC_INDENT == nSlot );
    1143             :             }
    1144             :             else                //execute the original processing functions
    1145             :             {
    1146             :                 //below is copied of the old codes
    1147           0 :                 rWrtSh.MoveLeftMargin( SID_INC_INDENT == nSlot, rReq.GetModifier() != KEY_MOD1 );
    1148             :             }
    1149             :         }
    1150           0 :         rReq.Done();
    1151           0 :         break;
    1152             : 
    1153             :         case FN_DEC_INDENT_OFFSET:
    1154             :         case FN_INC_INDENT_OFFSET:
    1155           0 :             rWrtSh.MoveLeftMargin( FN_INC_INDENT_OFFSET == nSlot, rReq.GetModifier() == KEY_MOD1 );
    1156           0 :             rReq.Done();
    1157           0 :             break;
    1158             : 
    1159             :         case SID_ATTR_CHAR_COLOR2:
    1160             :         {
    1161           0 :             if(pItem)
    1162             :             {
    1163           0 :                 Color aSet = ((const SvxColorItem*)pItem)->GetValue();
    1164           0 :                 SwEditWin& rEditWin = GetView().GetEditWin();
    1165           0 :                 rEditWin.SetTextColor(aSet);
    1166           0 :                 SwApplyTemplate* pApply = rEditWin.GetApplyTemplate();
    1167             : 
    1168             :                 // If there is a selection, then set the color on it
    1169             :                 // otherwise, it'll be the color for the next text to be typed
    1170           0 :                 if(!pApply || pApply->nColor != SID_ATTR_CHAR_COLOR_EXT)
    1171             :                 {
    1172           0 :                     rWrtSh.SetAttrItem(SvxColorItem (aSet, RES_CHRATR_COLOR));
    1173             :                 }
    1174             : 
    1175           0 :                 rReq.Done();
    1176             :             }
    1177             :         }
    1178           0 :         break;
    1179             :         case SID_ATTR_CHAR_COLOR_BACKGROUND:
    1180             :         {
    1181           0 :             Color aSet;
    1182           0 :             if(pItem)
    1183           0 :                 aSet = ((const SvxColorItem*)pItem)->GetValue();
    1184             :             else
    1185           0 :                 aSet = COL_TRANSPARENT;
    1186             : 
    1187           0 :             SwEditWin& rEdtWin = GetView().GetEditWin();
    1188           0 :             rEdtWin.SetTextBackColor(aSet);
    1189           0 :             SwApplyTemplate* pApply = rEdtWin.GetApplyTemplate();
    1190             : 
    1191           0 :             if(!pApply && (rWrtSh.HasSelection() || rReq.IsAPI()))
    1192             :             {
    1193           0 :                 SvxBrushItem aBrushItem(RES_CHRATR_BACKGROUND);
    1194           0 :                 aBrushItem.SetColor(aSet);
    1195           0 :                 rWrtSh.SetAttrItem( aBrushItem );
    1196             :             }
    1197           0 :             else if(!pApply || pApply->nColor != SID_ATTR_CHAR_COLOR_BACKGROUND_EXT)
    1198             :             {
    1199           0 :                 GetView().GetViewFrame()->GetDispatcher()->Execute(SID_ATTR_CHAR_COLOR_BACKGROUND_EXT);
    1200             :             }
    1201             : 
    1202           0 :             rReq.Done();
    1203             :         }
    1204           0 :         break;
    1205             :         case SID_ATTR_CHAR_COLOR_BACKGROUND_EXT:
    1206             :         case SID_ATTR_CHAR_COLOR_EXT:
    1207             :         {
    1208           0 :             SwEditWin& rEdtWin = GetView().GetEditWin();
    1209           0 :             if (pItem)
    1210             :             {
    1211             :                 // The reason we need this argument here is that when a toolbar is closed
    1212             :                 // and reopened, its color resets, while SwEditWin still holds the old one.
    1213           0 :                 Color aSet = ((const SvxColorItem*)pItem)->GetValue();
    1214           0 :                 if( nSlot == SID_ATTR_CHAR_COLOR_BACKGROUND_EXT )
    1215           0 :                     rEdtWin.SetTextBackColor(aSet);
    1216             :                 else
    1217           0 :                     rEdtWin.SetTextColor(aSet);
    1218             :             }
    1219             : 
    1220           0 :             SwApplyTemplate* pApply = rEdtWin.GetApplyTemplate();
    1221           0 :             SwApplyTemplate aTempl;
    1222           0 :             if ( rWrtSh.HasSelection() )
    1223             :             {
    1224           0 :                 if(nSlot == SID_ATTR_CHAR_COLOR_BACKGROUND_EXT)
    1225             :                 {
    1226             :                     rWrtSh.SetAttrItem(
    1227           0 :                         SvxBrushItem( rEdtWin.GetTextBackColor(), RES_CHRATR_BACKGROUND) );
    1228             :                 }
    1229             :                 else
    1230             :                     rWrtSh.SetAttrItem(
    1231           0 :                         SvxColorItem( rEdtWin.GetTextColor(), RES_CHRATR_COLOR) );
    1232             :             }
    1233             :             else
    1234             :             {
    1235           0 :                 if(!pApply || pApply->nColor != nSlot)
    1236           0 :                     aTempl.nColor = nSlot;
    1237           0 :                 rEdtWin.SetApplyTemplate(aTempl);
    1238             :             }
    1239             : 
    1240           0 :             rReq.Done();
    1241             :         }
    1242           0 :         break;
    1243             : 
    1244             :         case FN_NUM_BULLET_MOVEDOWN:
    1245           0 :             if (!rWrtSh.IsAddMode())
    1246           0 :                 rWrtSh.MoveParagraph(1);
    1247           0 :             rReq.Done();
    1248           0 :             break;
    1249             : 
    1250             :         case FN_NUM_BULLET_MOVEUP:
    1251           0 :             if (!rWrtSh.IsAddMode())
    1252           0 :                 rWrtSh.MoveParagraph(-1);
    1253           0 :             rReq.Done();
    1254           0 :             break;
    1255             :         case SID_RUBY_DIALOG:
    1256             :         case SID_HYPERLINK_DIALOG:
    1257             :         {
    1258           0 :             SfxRequest aReq(nSlot, SfxCallMode::SLOT, SfxGetpApp()->GetPool());
    1259           0 :             GetView().GetViewFrame()->ExecuteSlot( aReq);
    1260           0 :             rReq.Ignore();
    1261             :         }
    1262           0 :         break;
    1263             :     case FN_INSERT_PAGEHEADER:
    1264             :     case FN_INSERT_PAGEFOOTER:
    1265           0 :     if(pArgs && pArgs->Count())
    1266             :     {
    1267           0 :         OUString sStyleName;
    1268           0 :         if(pItem)
    1269           0 :             sStyleName = ((const SfxStringItem*)pItem)->GetValue();
    1270           0 :         bool bOn = true;
    1271           0 :         if( SfxItemState::SET == pArgs->GetItemState(FN_PARAM_1, false, &pItem))
    1272           0 :             bOn = ((const SfxBoolItem*)pItem)->GetValue();
    1273           0 :         rWrtSh.ChangeHeaderOrFooter(sStyleName, FN_INSERT_PAGEHEADER == nSlot, bOn, !rReq.IsAPI());
    1274           0 :         rReq.Done();
    1275             :     }
    1276           0 :     break;
    1277             :     case FN_READONLY_SELECTION_MODE :
    1278           0 :         if(GetView().GetDocShell()->IsReadOnly())
    1279             :         {
    1280             :             rWrtSh.SetReadonlySelectionOption(
    1281           0 :                 !rWrtSh.GetViewOptions()->IsSelectionInReadonly());
    1282           0 :             rWrtSh.ShowCrsr();
    1283             :         }
    1284           0 :     break;
    1285             :     case FN_SELECTION_MODE_DEFAULT:
    1286             :     case FN_SELECTION_MODE_BLOCK :
    1287             :     {
    1288           0 :         bool bSetBlockMode = !rWrtSh.IsBlockMode();
    1289           0 :         if( pArgs && SfxItemState::SET == pArgs->GetItemState(nSlot, false, &pItem))
    1290           0 :             bSetBlockMode = ((const SfxBoolItem*)pItem)->GetValue();
    1291           0 :         if( ( nSlot == FN_SELECTION_MODE_DEFAULT ) != bSetBlockMode )
    1292           0 :             rWrtSh.EnterBlockMode();
    1293             :         else
    1294           0 :             rWrtSh.EnterStdMode();
    1295           0 :         SfxBindings &rBnd = GetView().GetViewFrame()->GetBindings();
    1296           0 :         rBnd.Invalidate(FN_STAT_SELMODE);
    1297           0 :         rBnd.Update(FN_STAT_SELMODE);
    1298             :     }
    1299           0 :     break;
    1300             :     case SID_OPEN_HYPERLINK:
    1301             :     case FN_COPY_HYPERLINK_LOCATION:
    1302             :     {
    1303           0 :         SfxItemSet aSet(GetPool(),
    1304             :                         RES_TXTATR_INETFMT,
    1305           0 :                         RES_TXTATR_INETFMT);
    1306           0 :         rWrtSh.GetCurAttr(aSet);
    1307           0 :         if(SfxItemState::SET <= aSet.GetItemState( RES_TXTATR_INETFMT, true ))
    1308             :         {
    1309           0 :             const SwFmtINetFmt& rINetFmt = dynamic_cast<const SwFmtINetFmt&>( aSet.Get(RES_TXTATR_INETFMT, true) );
    1310           0 :             if( nSlot == FN_COPY_HYPERLINK_LOCATION )
    1311             :             {
    1312           0 :                 ::uno::Reference< datatransfer::clipboard::XClipboard > xClipboard = GetView().GetEditWin().GetClipboard();
    1313             :                 vcl::unohelper::TextDataObject::CopyStringTo(
    1314           0 :                         rINetFmt.GetValue(),
    1315           0 :                         xClipboard );
    1316             :             }
    1317             :             else
    1318           0 :                 rWrtSh.ClickToINetAttr(rINetFmt, URLLOAD_NOFILTER);
    1319           0 :         }
    1320             :     }
    1321           0 :     break;
    1322             :     case SID_OPEN_XML_FILTERSETTINGS:
    1323             :     {
    1324             :         try
    1325             :         {
    1326           0 :             uno::Reference < ui::dialogs::XExecutableDialog > xDialog = ui::dialogs::XSLTFilterDialog::create( ::comphelper::getProcessComponentContext() );
    1327           0 :             xDialog->execute();
    1328             :         }
    1329           0 :         catch (const uno::Exception&)
    1330             :         {
    1331             :         }
    1332           0 :         rReq.Ignore ();
    1333             :     }
    1334           0 :     break;
    1335             :     case FN_FORMAT_APPLY_HEAD1:
    1336             :     {
    1337             :     }
    1338           0 :     break;
    1339             :     case FN_FORMAT_APPLY_HEAD2:
    1340             :     {
    1341             :     }
    1342           0 :     break;
    1343             :     case FN_FORMAT_APPLY_HEAD3:
    1344             :     {
    1345             :     }
    1346           0 :     break;
    1347             :     case FN_FORMAT_APPLY_DEFAULT:
    1348             :     {
    1349             :     }
    1350           0 :     break;
    1351             :     case FN_FORMAT_APPLY_TEXTBODY:
    1352             :     {
    1353             :     }
    1354           0 :     break;
    1355             :     case FN_WORDCOUNT_DIALOG:
    1356             :     {
    1357           0 :         SfxViewFrame* pVFrame = GetView().GetViewFrame();
    1358           0 :         if (pVFrame != NULL)
    1359             :         {
    1360           0 :             pVFrame->ToggleChildWindow(FN_WORDCOUNT_DIALOG);
    1361           0 :             Invalidate(rReq.GetSlot());
    1362             : 
    1363           0 :             SwWordCountWrapper *pWrdCnt = (SwWordCountWrapper*)pVFrame->GetChildWindow(SwWordCountWrapper::GetChildWindowId());
    1364           0 :             if (pWrdCnt)
    1365           0 :                 pWrdCnt->UpdateCounts();
    1366             :         }
    1367             :     }
    1368           0 :     break;
    1369             :     default:
    1370             :         OSL_ENSURE(false, "wrong dispatcher");
    1371           0 :         return;
    1372             :     }
    1373             : }
    1374             : 
    1375       11766 : void SwTextShell::GetState( SfxItemSet &rSet )
    1376             : {
    1377       11766 :     SwWrtShell &rSh = GetShell();
    1378       11766 :     SfxWhichIter aIter( rSet );
    1379       11766 :     sal_uInt16 nWhich = aIter.FirstWhich();
    1380       38055 :     while ( nWhich )
    1381             :     {
    1382       14523 :         switch ( nWhich )
    1383             :         {
    1384             :         case SID_LANGUAGE_STATUS:
    1385             :             {
    1386             :                 // the value of used script types
    1387         199 :                 OUString aScriptTypesInUse( OUString::number( rSh.GetScriptType() ) );
    1388             : 
    1389             :                 // get keyboard language
    1390         398 :                 OUString aKeyboardLang;
    1391         199 :                 SwEditWin& rEditWin = GetView().GetEditWin();
    1392         199 :                 LanguageType nLang = rEditWin.GetInputLanguage();
    1393         199 :                 if (nLang != LANGUAGE_DONTKNOW && nLang != LANGUAGE_SYSTEM)
    1394           0 :                     aKeyboardLang = SvtLanguageTable::GetLanguageString( nLang );
    1395             : 
    1396             :                 // get the language that is in use
    1397         398 :                 OUString aCurrentLang = "*";
    1398         199 :                 nLang = SwLangHelper::GetCurrentLanguage( rSh );
    1399         199 :                 if (nLang != LANGUAGE_DONTKNOW)
    1400         199 :                     aCurrentLang = SvtLanguageTable::GetLanguageString( nLang );
    1401             : 
    1402             :                 // build sequence for status value
    1403         398 :                 uno::Sequence< OUString > aSeq( 4 );
    1404         199 :                 aSeq[0] = aCurrentLang;
    1405         199 :                 aSeq[1] = aScriptTypesInUse;
    1406         199 :                 aSeq[2] = aKeyboardLang;
    1407         199 :                 aSeq[3] = SwLangHelper::GetTextForLanguageGuessing( rSh );
    1408             : 
    1409             :                 // set sequence as status value
    1410         398 :                 SfxStringListItem aItem( SID_LANGUAGE_STATUS );
    1411         199 :                 aItem.SetStringList( aSeq );
    1412         398 :                 rSet.Put( aItem, SID_LANGUAGE_STATUS );
    1413             :             }
    1414         199 :         break;
    1415             : 
    1416             :         case SID_THES:
    1417             :         {
    1418             :             // is there a valid selection to get text from?
    1419           0 :             OUString aText;
    1420           0 :             bool bValid = !rSh.HasSelection() ||
    1421           0 :                     (rSh.IsSelOnePara() && !rSh.IsMultiSelection());
    1422             :             // prevent context menu from showing when cursor is not in or at the end of a word
    1423             :             // (GetCurWord will return the next word if there is none at the current position...)
    1424           0 :             const sal_Int16 nWordType = ::i18n::WordType::DICTIONARY_WORD;
    1425           0 :             bool bWord = rSh.IsInWord( nWordType ) || rSh.IsStartWord( nWordType ) || rSh.IsEndWord( nWordType );
    1426           0 :             if (bValid && bWord)
    1427           0 :                aText = rSh.HasSelection()? OUString(rSh.GetSelTxt()) : rSh.GetCurWord();
    1428             : 
    1429           0 :             LanguageType nLang = rSh.GetCurLang();
    1430           0 :             LanguageTag aLanguageTag( nLang);
    1431           0 :             lang::Locale aLocale( aLanguageTag.getLocale());
    1432           0 :             OUString aLangText( aLanguageTag.getBcp47() );
    1433             : 
    1434             :             // set word and locale to look up as status value
    1435           0 :             OUString aStatusVal = aText + "#" + aLangText;
    1436             : 
    1437           0 :             rSet.Put( SfxStringItem( SID_THES, aStatusVal ) );
    1438             : 
    1439             :             // disable "Thesaurus" context menu entry if there is nothing to look up
    1440           0 :             uno::Reference< linguistic2::XThesaurus >  xThes( ::GetThesaurus() );
    1441           0 :             if (aText.isEmpty() ||
    1442           0 :                 !xThes.is() || nLang == LANGUAGE_NONE || !xThes->hasLocale( aLocale ))
    1443           0 :                 rSet.DisableItem( SID_THES );
    1444             :         }
    1445           0 :         break;
    1446             : 
    1447             :         case FN_NUMBER_NEWSTART :
    1448           0 :             if(!rSh.GetNumRuleAtCurrCrsrPos())
    1449           0 :                     rSet.DisableItem(nWhich);
    1450             :             else
    1451             :                 rSet.Put(SfxBoolItem(FN_NUMBER_NEWSTART,
    1452           0 :                     rSh.IsNumRuleStart()));
    1453           0 :         break;
    1454             : 
    1455             :         case FN_EDIT_FORMULA:
    1456             :         case SID_CHARMAP:
    1457             :             {
    1458         910 :                 const int nType = rSh.GetSelectionType();
    1459         910 :                 if (!(nType & nsSelectionType::SEL_TXT) &&
    1460           0 :                     !(nType & nsSelectionType::SEL_TBL) &&
    1461           0 :                     !(nType & nsSelectionType::SEL_NUM))
    1462             :                 {
    1463           0 :                     rSet.DisableItem(nWhich);
    1464             :                 }
    1465         910 :                 else if ( nWhich == FN_EDIT_FORMULA
    1466         910 :                           && rSh.CrsrInsideInputFld() )
    1467             :                 {
    1468           0 :                     rSet.DisableItem( nWhich );
    1469             :                 }
    1470             :             }
    1471         910 :             break;
    1472             : 
    1473             :         case FN_INSERT_ENDNOTE:
    1474             :         case FN_INSERT_FOOTNOTE:
    1475             :         case FN_INSERT_FOOTNOTE_DLG:
    1476             :             {
    1477             :                 const sal_uInt16 nNoType =
    1478         908 :                     FRMTYPE_FLY_ANY | FRMTYPE_HEADER | FRMTYPE_FOOTER | FRMTYPE_FOOTNOTE;
    1479         908 :                 if ( (rSh.GetFrmType(0,true) & nNoType) )
    1480           0 :                     rSet.DisableItem(nWhich);
    1481             : 
    1482         908 :                 if ( rSh.CrsrInsideInputFld() )
    1483             :                 {
    1484           0 :                     rSet.DisableItem( nWhich );
    1485             :                 }
    1486             :             }
    1487         908 :             break;
    1488             : 
    1489             :         case FN_INSERT_HYPERLINK:
    1490             :         case SID_INSERTDOC:
    1491             :         case FN_INSERT_GLOSSARY:
    1492             :         case FN_EXPAND_GLOSSARY:
    1493           0 :             if ( rSh.CrsrInsideInputFld() )
    1494             :             {
    1495           0 :                 rSet.DisableItem( nWhich );
    1496             :             }
    1497           0 :             break;
    1498             : 
    1499             :         case FN_INSERT_TABLE:
    1500        1804 :             if ( rSh.CrsrInsideInputFld()
    1501         902 :                  || rSh.GetTableFmt()
    1502        1804 :                  || (rSh.GetFrmType(0,true) & FRMTYPE_FOOTNOTE) )
    1503             :             {
    1504           0 :                 rSet.DisableItem( nWhich );
    1505             :             }
    1506         902 :             break;
    1507             : 
    1508             :         case FN_CALCULATE:
    1509           0 :             if ( !rSh.IsSelection() )
    1510           0 :                 rSet.DisableItem(nWhich);
    1511           0 :             break;
    1512             :         case FN_GOTO_REFERENCE:
    1513             :             {
    1514           0 :                 SwField *pFld = rSh.GetCurFld();
    1515           0 :                 if ( !pFld || (pFld &&  pFld->GetTypeId() != TYP_GETREFFLD) )
    1516           0 :                     rSet.DisableItem(nWhich);
    1517             :             }
    1518           0 :             break;
    1519             :         case FN_AUTOFORMAT_AUTO:
    1520             :             {
    1521           0 :                 rSet.Put( SfxBoolItem( nWhich, SvxAutoCorrCfg::Get().IsAutoFmtByInput() ));
    1522             :             }
    1523           0 :             break;
    1524             : 
    1525             :         case SID_DEC_INDENT:
    1526             :         case SID_INC_INDENT:
    1527             :         {
    1528             :             //if the paragrah has bullet we'll do the following things:
    1529             :             //1: if the bullet level is the first level, disable the decrease-indent button
    1530             :             //2: if the bullet level is the last level, disable the increase-indent button
    1531        1820 :             if ( rSh.GetNumRuleAtCurrCrsrPos() && !rSh.HasReadonlySel() )
    1532             :             {
    1533           0 :                 const sal_uInt8 nLevel = rSh.GetNumLevel();
    1534           0 :                 if ( ( nLevel == ( MAXLEVEL - 1 ) && nWhich == SID_INC_INDENT )
    1535           0 :                      || ( nLevel == 0 && nWhich == SID_DEC_INDENT ) )
    1536             :                 {
    1537           0 :                     rSet.DisableItem( nWhich );
    1538             :                 }
    1539             :             }
    1540             :             else
    1541             :             {
    1542        1820 :                 sal_uInt16 nHtmlMode = ::GetHtmlMode( GetView().GetDocShell() );
    1543        1820 :                 nHtmlMode &= HTMLMODE_ON | HTMLMODE_SOME_STYLES;
    1544        1820 :                 if ( ( nHtmlMode == HTMLMODE_ON )
    1545        1820 :                      || !rSh.IsMoveLeftMargin( SID_INC_INDENT == nWhich, true ) )
    1546             :                 {
    1547           0 :                     rSet.DisableItem( nWhich );
    1548             :                 }
    1549             :             }
    1550             :         }
    1551        1820 :         break;
    1552             : 
    1553             :         case FN_DEC_INDENT_OFFSET:
    1554             :         case FN_INC_INDENT_OFFSET:
    1555             :             {
    1556           0 :                 sal_uInt16 nHtmlMode = ::GetHtmlMode(GetView().GetDocShell());
    1557           0 :                 nHtmlMode &= HTMLMODE_ON|HTMLMODE_SOME_STYLES;
    1558           0 :                 if( (nHtmlMode == HTMLMODE_ON) ||
    1559             :                     !rSh.IsMoveLeftMargin( FN_INC_INDENT_OFFSET == nWhich,
    1560           0 :                                             false ))
    1561           0 :                     rSet.DisableItem( nWhich );
    1562             :             }
    1563           0 :             break;
    1564             : 
    1565             :         case SID_ATTR_CHAR_COLOR2:
    1566             :             {
    1567        1648 :                 SfxItemSet aSet( GetPool() );
    1568        1648 :                 rSh.GetCurAttr( aSet );
    1569        1648 :                 const SvxColorItem& aColorItem = static_cast< const SvxColorItem& >( aSet.Get(RES_CHRATR_COLOR) );
    1570        1648 :                 rSet.Put( aColorItem, SID_ATTR_CHAR_COLOR2 );
    1571             :             }
    1572        1648 :             break;
    1573             :         case SID_ATTR_CHAR_COLOR_BACKGROUND:
    1574             :             {
    1575        1648 :                 SfxItemSet aSet( GetPool() );
    1576        1648 :                 rSh.GetCurAttr( aSet );
    1577        1648 :                 const SvxBrushItem& aBrushItem = static_cast< const SvxBrushItem& >( aSet.Get(RES_CHRATR_BACKGROUND) );
    1578        1648 :                 rSet.Put( SvxColorItem(aBrushItem.GetColor(), nWhich) );
    1579             :             }
    1580        1648 :             break;
    1581             :         case SID_ATTR_CHAR_COLOR_BACKGROUND_EXT:
    1582             :         case SID_ATTR_CHAR_COLOR_EXT:
    1583             :             {
    1584        3296 :                 SwEditWin& rEdtWin = GetView().GetEditWin();
    1585        3296 :                 SwApplyTemplate* pApply = rEdtWin.GetApplyTemplate();
    1586        3296 :                 rSet.Put(SfxBoolItem(nWhich, pApply && pApply->nColor == nWhich));
    1587             :             }
    1588        3296 :             break;
    1589             : 
    1590             :         case FN_INSERT_BOOKMARK:
    1591           4 :             if( rSh.IsTableMode()
    1592           2 :                 || rSh.CrsrInsideInputFld() )
    1593             :             {
    1594           0 :                 rSet.DisableItem( nWhich );
    1595             :             }
    1596           2 :             break;
    1597             : 
    1598             :         case FN_INSERT_BREAK:
    1599           0 :             if ( rSh.HasReadonlySel()
    1600           0 :                  && !rSh.CrsrInsideInputFld() )
    1601             :             {
    1602           0 :                 rSet.DisableItem( nWhich );
    1603             :             }
    1604           0 :             break;
    1605             : 
    1606             :         case FN_INSERT_BREAK_DLG:
    1607             :         case FN_INSERT_COLUMN_BREAK:
    1608             :         case FN_INSERT_PAGEBREAK:
    1609           0 :             if( rSh.CrsrInsideInputFld() )
    1610             :             {
    1611           0 :                 rSet.DisableItem( nWhich );
    1612             :             }
    1613           0 :             break;
    1614             : 
    1615             :         case FN_INSERT_PAGEHEADER:
    1616             :         case FN_INSERT_PAGEFOOTER:
    1617             :             {
    1618           0 :                 rSet.Put( SfxObjectShellItem( nWhich, GetView().GetDocShell() ));
    1619             :             }
    1620           0 :             break;
    1621             :             case FN_TABLE_SORT_DIALOG:
    1622             :             case FN_SORTING_DLG:
    1623          12 :                 if(!rSh.HasSelection() ||
    1624           8 :                         (FN_TABLE_SORT_DIALOG == nWhich && !rSh.GetTableFmt()))
    1625           2 :                     rSet.DisableItem( nWhich );
    1626          10 :             break;
    1627             : 
    1628             :             case SID_RUBY_DIALOG:
    1629             :                 {
    1630           0 :                     SvtCJKOptions aCJKOptions;
    1631           0 :                     if( !aCJKOptions.IsRubyEnabled()
    1632           0 :                         || rSh.CrsrInsideInputFld() )
    1633             :                     {
    1634           0 :                         GetView().GetViewFrame()->GetBindings().SetVisibleState( nWhich, false );
    1635           0 :                         rSet.DisableItem(nWhich);
    1636             :                     }
    1637             :                     else
    1638           0 :                         GetView().GetViewFrame()->GetBindings().SetVisibleState( nWhich, true );
    1639             :                 }
    1640           0 :                 break;
    1641             : 
    1642             :             case SID_HYPERLINK_DIALOG:
    1643        1828 :                 if( GetView().GetDocShell()->IsReadOnly()
    1644         910 :                     || ( !GetView().GetViewFrame()->HasChildWindow(nWhich)
    1645         910 :                          && rSh.HasReadonlySel() )
    1646        1824 :                     || rSh.CrsrInsideInputFld() )
    1647             :                 {
    1648           4 :                     rSet.DisableItem(nWhich);
    1649             :                 }
    1650             :                 else
    1651             :                 {
    1652         910 :                     rSet.Put(SfxBoolItem( nWhich, 0 != GetView().GetViewFrame()->GetChildWindow( nWhich ) ));
    1653             :                 }
    1654         914 :                 break;
    1655             : 
    1656             :             case FN_EDIT_HYPERLINK:
    1657             :             case FN_COPY_HYPERLINK_LOCATION:
    1658             :                 {
    1659          18 :                     SfxItemSet aSet(GetPool(),
    1660             :                         RES_TXTATR_INETFMT,
    1661          18 :                         RES_TXTATR_INETFMT);
    1662          18 :                     rSh.GetCurAttr(aSet);
    1663          18 :                     if(SfxItemState::SET > aSet.GetItemState( RES_TXTATR_INETFMT, true ) || rSh.HasReadonlySel())
    1664             :                     {
    1665          18 :                         rSet.DisableItem(nWhich);
    1666          18 :                     }
    1667             :                 }
    1668          18 :             break;
    1669             :             case FN_REMOVE_HYPERLINK:
    1670             :             {
    1671           0 :                 SfxItemSet aSet(GetPool(),
    1672             :                                 RES_TXTATR_INETFMT,
    1673           0 :                                 RES_TXTATR_INETFMT);
    1674           0 :                 rSh.GetCurAttr(aSet);
    1675             : 
    1676             :                 // If a hyperlink is selected, either alone or along with other text...
    1677           0 :                 if(aSet.GetItemState( RES_TXTATR_INETFMT, true ) != SfxItemState::DONTCARE || rSh.HasReadonlySel())
    1678             :                 {
    1679           0 :                     rSet.DisableItem(nWhich);
    1680           0 :                 }
    1681             :             }
    1682           0 :             break;
    1683             :             case SID_TRANSLITERATE_HALFWIDTH:
    1684             :             case SID_TRANSLITERATE_FULLWIDTH:
    1685             :             case SID_TRANSLITERATE_HIRAGANA:
    1686             :             case SID_TRANSLITERATE_KATAGANA:
    1687             :             {
    1688           0 :                 SvtCJKOptions aCJKOptions;
    1689           0 :                 if(!aCJKOptions.IsChangeCaseMapEnabled())
    1690             :                 {
    1691           0 :                     GetView().GetViewFrame()->GetBindings().SetVisibleState( nWhich, false );
    1692           0 :                     rSet.DisableItem(nWhich);
    1693             :                 }
    1694             :                 else
    1695           0 :                     GetView().GetViewFrame()->GetBindings().SetVisibleState( nWhich, true );
    1696             :             }
    1697           0 :             break;
    1698             :             case FN_READONLY_SELECTION_MODE :
    1699          18 :                 if(!GetView().GetDocShell()->IsReadOnly())
    1700          18 :                     rSet.DisableItem( nWhich );
    1701             :                 else
    1702             :                 {
    1703           0 :                     rSet.Put(SfxBoolItem(nWhich, rSh.GetViewOptions()->IsSelectionInReadonly()));
    1704             :                 }
    1705          18 :             break;
    1706             :             case FN_SELECTION_MODE_DEFAULT:
    1707             :             case FN_SELECTION_MODE_BLOCK :
    1708           0 :                     rSet.Put(SfxBoolItem(nWhich, (nWhich == FN_SELECTION_MODE_DEFAULT) != rSh.IsBlockMode()));
    1709           0 :             break;
    1710             :             case  SID_OPEN_HYPERLINK:
    1711             :             {
    1712           0 :                 SfxItemSet aSet(GetPool(),
    1713             :                                 RES_TXTATR_INETFMT,
    1714           0 :                                 RES_TXTATR_INETFMT);
    1715           0 :                 rSh.GetCurAttr(aSet);
    1716           0 :                 if(SfxItemState::SET > aSet.GetItemState( RES_TXTATR_INETFMT, false ))
    1717           0 :                     rSet.DisableItem(nWhich);
    1718             :             }
    1719           0 :             break;
    1720             :             case  SID_OPEN_SMARTTAGMENU:
    1721             :             {
    1722           0 :                  uno::Sequence< OUString > aSmartTagTypes;
    1723           0 :                  uno::Sequence< uno::Reference< container::XStringKeyMap > > aStringKeyMaps;
    1724           0 :                  uno::Reference<text::XTextRange> xRange;
    1725             : 
    1726           0 :                  rSh.GetSmartTagTerm( aSmartTagTypes, aStringKeyMaps, xRange );
    1727             : 
    1728           0 :                  if ( xRange.is() && aSmartTagTypes.getLength() )
    1729             :                  {
    1730           0 :                      uno::Sequence < uno::Sequence< uno::Reference< smarttags::XSmartTagAction > > > aActionComponentsSequence;
    1731           0 :                      uno::Sequence < uno::Sequence< sal_Int32 > > aActionIndicesSequence;
    1732             : 
    1733           0 :                      const SmartTagMgr& rSmartTagMgr = SwSmartTagMgr::Get();
    1734             :                      rSmartTagMgr.GetActionSequences( aSmartTagTypes,
    1735             :                                                       aActionComponentsSequence,
    1736           0 :                                                       aActionIndicesSequence );
    1737             : 
    1738           0 :                      uno::Reference <frame::XController> xController = GetView().GetController();
    1739           0 :                      const lang::Locale aLocale( SW_BREAKITER()->GetLocale( GetAppLanguageTag() ) );
    1740           0 :                      const OUString aApplicationName( rSmartTagMgr.GetApplicationName() );
    1741           0 :                      const OUString aRangeText = xRange->getString();
    1742             : 
    1743             :                      const SvxSmartTagItem aItem( nWhich,
    1744             :                                                   aActionComponentsSequence,
    1745             :                                                   aActionIndicesSequence,
    1746             :                                                   aStringKeyMaps,
    1747             :                                                   xRange,
    1748             :                                                   xController,
    1749             :                                                   aLocale,
    1750             :                                                   aApplicationName,
    1751           0 :                                                   aRangeText );
    1752             : 
    1753           0 :                      rSet.Put( aItem );
    1754             :                  }
    1755             :                  else
    1756           0 :                      rSet.DisableItem(nWhich);
    1757             :             }
    1758           0 :             break;
    1759             : 
    1760             :             case FN_NUM_NUMBERING_ON:
    1761         910 :                 rSet.Put(SfxBoolItem(FN_NUM_NUMBERING_ON,rSh.SelectionHasNumber()));
    1762         910 :             break;
    1763             : 
    1764             :             case FN_NUM_BULLET_ON:
    1765         910 :                 rSet.Put(SfxBoolItem(FN_NUM_BULLET_ON,rSh.SelectionHasBullet()));
    1766         910 :             break;
    1767             : 
    1768             :             case FN_BUL_NUM_RULE_INDEX:
    1769             :             case FN_NUM_NUM_RULE_INDEX:
    1770             :         {
    1771         392 :             SwNumRule* pCurRule = (SwNumRule*)(GetShell().GetNumRuleAtCurrCrsrPos());
    1772         392 :             sal_uInt16  nActNumLvl = USHRT_MAX;
    1773         392 :             rSet.Put(SfxUInt16Item(FN_NUM_NUM_RULE_INDEX,DEFAULT_NONE));
    1774         392 :             rSet.Put(SfxUInt16Item(FN_BUL_NUM_RULE_INDEX,DEFAULT_NONE));
    1775         392 :             if( pCurRule )
    1776             :             {
    1777           0 :                 nActNumLvl = GetShell().GetNumLevel();
    1778           0 :                 if( nActNumLvl < MAXLEVEL )
    1779             :                 {
    1780           0 :                     nActNumLvl = 1<<nActNumLvl;
    1781             :                 }
    1782           0 :                 SvxNumRule aSvxRule = pCurRule->MakeSvxNumRule();
    1783           0 :                 if ( GetShell().HasBullet())
    1784             :                 {
    1785           0 :                     rSet.Put(SfxUInt16Item(FN_BUL_NUM_RULE_INDEX, USHRT_MAX));
    1786           0 :                     rSet.Put(SfxUInt16Item(FN_NUM_NUM_RULE_INDEX, USHRT_MAX));
    1787           0 :                     NBOTypeMgrBase* pBullets = NBOutlineTypeMgrFact::CreateInstance(eNBOType::MIXBULLETS);
    1788           0 :                     if ( pBullets )
    1789             :                     {
    1790           0 :                         const sal_uInt16 nBulIndex = pBullets->GetNBOIndexForNumRule(aSvxRule,nActNumLvl);
    1791           0 :                         rSet.Put(SfxUInt16Item(FN_BUL_NUM_RULE_INDEX,nBulIndex));
    1792             :                     }
    1793           0 :                 }else if ( GetShell().HasNumber() )
    1794             :                 {
    1795           0 :                     rSet.Put(SfxUInt16Item(FN_BUL_NUM_RULE_INDEX, USHRT_MAX));
    1796           0 :                     rSet.Put(SfxUInt16Item(FN_NUM_NUM_RULE_INDEX, USHRT_MAX));
    1797           0 :                     NBOTypeMgrBase* pNumbering = NBOutlineTypeMgrFact::CreateInstance(eNBOType::NUMBERING);
    1798           0 :                     if ( pNumbering )
    1799             :                     {
    1800           0 :                         const sal_uInt16 nBulIndex = pNumbering->GetNBOIndexForNumRule(aSvxRule,nActNumLvl);
    1801           0 :                         rSet.Put(SfxUInt16Item(FN_NUM_NUM_RULE_INDEX,nBulIndex));
    1802             :                     }
    1803           0 :                 }
    1804             :             }
    1805             :         }
    1806         392 :             break;
    1807             :             case FN_NUM_CONTINUE:
    1808             :             {
    1809             :                 {
    1810             :                     // #i86492#
    1811             :                     // Search also for bullet list
    1812           0 :                     OUString aDummy;
    1813             :                     const SwNumRule* pRule =
    1814           0 :                             rSh.SearchNumRule( false, true, false, -1, aDummy );
    1815           0 :                     if ( !pRule )
    1816             :                     {
    1817           0 :                         pRule = rSh.SearchNumRule( false, false, false, -1, aDummy );
    1818             :                     }
    1819           0 :                     if ( !pRule )
    1820           0 :                         rSet.DisableItem(nWhich);
    1821             :                 }
    1822             :             }
    1823           0 :             break;
    1824             :             case SID_INSERT_RLM :
    1825             :             case SID_INSERT_LRM :
    1826             :             case SID_INSERT_ZWNBSP :
    1827             :             case SID_INSERT_ZWSP:
    1828             :             {
    1829           0 :                 SvtCTLOptions aCTLOptions;
    1830           0 :                 bool bEnabled = aCTLOptions.IsCTLFontEnabled();
    1831           0 :                 GetView().GetViewFrame()->GetBindings().SetVisibleState( nWhich, bEnabled );
    1832           0 :                 if(!bEnabled)
    1833           0 :                     rSet.DisableItem(nWhich);
    1834             :             }
    1835           0 :             break;
    1836             :         }
    1837       14523 :         nWhich = aIter.NextWhich();
    1838       11766 :     }
    1839       12036 : }
    1840             : 
    1841             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10