LCOV - code coverage report
Current view: top level - sc/source/ui/view - formatsh.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 184 1055 17.4 %
Date: 2012-08-25 Functions: 14 30 46.7 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 190 2152 8.8 %

           Branch data     Line data    Source code
       1                 :            : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2                 :            : /*************************************************************************
       3                 :            :  *
       4                 :            :  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       5                 :            :  *
       6                 :            :  * Copyright 2000, 2010 Oracle and/or its affiliates.
       7                 :            :  *
       8                 :            :  * OpenOffice.org - a multi-platform office productivity suite
       9                 :            :  *
      10                 :            :  * This file is part of OpenOffice.org.
      11                 :            :  *
      12                 :            :  * OpenOffice.org is free software: you can redistribute it and/or modify
      13                 :            :  * it under the terms of the GNU Lesser General Public License version 3
      14                 :            :  * only, as published by the Free Software Foundation.
      15                 :            :  *
      16                 :            :  * OpenOffice.org is distributed in the hope that it will be useful,
      17                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      18                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      19                 :            :  * GNU Lesser General Public License version 3 for more details
      20                 :            :  * (a copy is included in the LICENSE file that accompanied this code).
      21                 :            :  *
      22                 :            :  * You should have received a copy of the GNU Lesser General Public License
      23                 :            :  * version 3 along with OpenOffice.org.  If not, see
      24                 :            :  * <http://www.openoffice.org/license.html>
      25                 :            :  * for a copy of the LGPLv3 License.
      26                 :            :  *
      27                 :            :  ************************************************************************/
      28                 :            : 
      29                 :            : #include <com/sun/star/style/XStyleFamiliesSupplier.hpp>
      30                 :            : #include <com/sun/star/beans/XPropertySet.hpp>
      31                 :            : #include <com/sun/star/container/XNameAccess.hpp>
      32                 :            : 
      33                 :            : #include "scitems.hxx"
      34                 :            : #include <editeng/eeitem.hxx>
      35                 :            : 
      36                 :            : #include <sfx2/app.hxx>
      37                 :            : #include <sfx2/viewfrm.hxx>
      38                 :            : #include <sfx2/bindings.hxx>
      39                 :            : #include <sfx2/objface.hxx>
      40                 :            : #include <sfx2/request.hxx>
      41                 :            : #include <svl/whiter.hxx>
      42                 :            : #include <vcl/msgbox.hxx>
      43                 :            : 
      44                 :            : #include <svl/stritem.hxx>
      45                 :            : #include <svl/zformat.hxx>
      46                 :            : #include <svl/languageoptions.hxx>
      47                 :            : #include <editeng/boxitem.hxx>
      48                 :            : #include <editeng/langitem.hxx>
      49                 :            : #include <svx/numinf.hxx>
      50                 :            : #include <sfx2/dispatch.hxx>
      51                 :            : #include <sfx2/templdlg.hxx>
      52                 :            : #include <sfx2/tplpitem.hxx>
      53                 :            : #include <editeng/svxenum.hxx>
      54                 :            : #include <svx/algitem.hxx>
      55                 :            : #include <editeng/wghtitem.hxx>
      56                 :            : #include <editeng/postitem.hxx>
      57                 :            : #include <editeng/udlnitem.hxx>
      58                 :            : #include <editeng/bolnitem.hxx>
      59                 :            : #include <editeng/colritem.hxx>
      60                 :            : #include <editeng/brshitem.hxx>
      61                 :            : #include <editeng/frmdiritem.hxx>
      62                 :            : #include <editeng/scripttypeitem.hxx>
      63                 :            : #include <svtools/colorcfg.hxx>
      64                 :            : #include <editeng/shaditem.hxx>
      65                 :            : #include <editeng/justifyitem.hxx>
      66                 :            : 
      67                 :            : #include "formatsh.hxx"
      68                 :            : #include "sc.hrc"
      69                 :            : #include "globstr.hrc"
      70                 :            : #include "docsh.hxx"
      71                 :            : #include "patattr.hxx"
      72                 :            : #include "scmod.hxx"
      73                 :            : #include "attrdlg.hrc"
      74                 :            : #include "stlpool.hxx"
      75                 :            : #include "stlsheet.hxx"
      76                 :            : #include "printfun.hxx"
      77                 :            : #include "docpool.hxx"
      78                 :            : #include "scresid.hxx"
      79                 :            : #include "tabvwsh.hxx"
      80                 :            : #include "undostyl.hxx"
      81                 :            : #include "markdata.hxx"
      82                 :            : #include "markarr.hxx"
      83                 :            : 
      84                 :            : 
      85                 :            : #define ScFormatShell
      86                 :            : #define TableFont
      87                 :            : #define FormatForSelection
      88                 :            : #include "scslots.hxx"
      89                 :            : 
      90                 :            : #include "scabstdlg.hxx"
      91                 :            : 
      92                 :            : 
      93                 :            : using namespace ::com::sun::star;
      94                 :            : 
      95                 :            : namespace {
      96                 :            : 
      97                 :          0 : SvxCellHorJustify lclConvertSlotToHAlign( sal_uInt16 nSlot )
      98                 :            : {
      99                 :          0 :     SvxCellHorJustify eHJustify = SVX_HOR_JUSTIFY_STANDARD;
     100   [ #  #  #  #  :          0 :     switch( nSlot )
                   #  # ]
     101                 :            :     {
     102                 :          0 :         case SID_ALIGN_ANY_HDEFAULT:    eHJustify = SVX_HOR_JUSTIFY_STANDARD;   break;
     103                 :          0 :         case SID_ALIGN_ANY_LEFT:        eHJustify = SVX_HOR_JUSTIFY_LEFT;       break;
     104                 :          0 :         case SID_ALIGN_ANY_HCENTER:     eHJustify = SVX_HOR_JUSTIFY_CENTER;     break;
     105                 :          0 :         case SID_ALIGN_ANY_RIGHT:       eHJustify = SVX_HOR_JUSTIFY_RIGHT;      break;
     106                 :          0 :         case SID_ALIGN_ANY_JUSTIFIED:   eHJustify = SVX_HOR_JUSTIFY_BLOCK;      break;
     107                 :            :         default:    OSL_FAIL( "lclConvertSlotToHAlign - invalid slot" );
     108                 :            :     }
     109                 :          0 :     return eHJustify;
     110                 :            : }
     111                 :            : 
     112                 :          0 : SvxCellVerJustify lclConvertSlotToVAlign( sal_uInt16 nSlot )
     113                 :            : {
     114                 :          0 :     SvxCellVerJustify eVJustify = SVX_VER_JUSTIFY_STANDARD;
     115   [ #  #  #  #  :          0 :     switch( nSlot )
                      # ]
     116                 :            :     {
     117                 :          0 :         case SID_ALIGN_ANY_VDEFAULT:    eVJustify = SVX_VER_JUSTIFY_STANDARD;   break;
     118                 :          0 :         case SID_ALIGN_ANY_TOP:         eVJustify = SVX_VER_JUSTIFY_TOP;        break;
     119                 :          0 :         case SID_ALIGN_ANY_VCENTER:     eVJustify = SVX_VER_JUSTIFY_CENTER;     break;
     120                 :          0 :         case SID_ALIGN_ANY_BOTTOM:      eVJustify = SVX_VER_JUSTIFY_BOTTOM;     break;
     121                 :            :         default:    OSL_FAIL( "lclConvertSlotToVAlign - invalid slot" );
     122                 :            :     }
     123                 :          0 :     return eVJustify;
     124                 :            : }
     125                 :            : 
     126                 :            : } // namespace
     127                 :            : 
     128 [ -  + ][ -  + ]:       2784 : TYPEINIT1( ScFormatShell, SfxShell );
     129                 :            : 
     130 [ +  + ][ +  - ]:        204 : SFX_IMPL_INTERFACE(ScFormatShell, SfxShell, ScResId(SCSTR_FORMATSHELL) )
                 [ +  - ]
     131                 :            : {
     132         [ +  - ]:         51 :     SFX_OBJECTBAR_REGISTRATION( SFX_OBJECTBAR_OBJECT | SFX_VISIBILITY_STANDARD |
     133                 :            :                                 SFX_VISIBILITY_SERVER,
     134         [ +  - ]:         51 :                                 ScResId(RID_OBJECTBAR_FORMAT));
     135                 :            : 
     136                 :         51 : }
     137                 :            : 
     138                 :            : 
     139                 :        229 : ScFormatShell::ScFormatShell(ScViewData* pData) :
     140                 :        229 :     SfxShell(pData->GetViewShell()),
     141                 :        229 :     pViewData(pData)
     142                 :            : {
     143                 :        229 :     ScTabViewShell* pTabViewShell = GetViewData()->GetViewShell();
     144                 :            : 
     145                 :        229 :     SetPool( &pTabViewShell->GetPool() );
     146 [ +  - ][ +  - ]:        229 :     ::svl::IUndoManager* pMgr = pViewData->GetSfxDocShell()->GetUndoManager();
     147         [ +  - ]:        229 :     SetUndoManager( pMgr );
     148 [ +  - ][ -  + ]:        229 :     if ( !pViewData->GetDocument()->IsUndoEnabled() )
     149                 :            :     {
     150         [ #  # ]:          0 :         pMgr->SetMaxUndoActionCount( 0 );
     151                 :            :     }
     152         [ +  - ]:        229 :     SetHelpId(HID_SCSHELL_FORMATSH);
     153 [ +  - ][ +  - ]:        229 :     SetName(rtl::OUString("Format"));
                 [ +  - ]
     154                 :        229 : }
     155                 :            : 
     156                 :        225 : ScFormatShell::~ScFormatShell()
     157                 :            : {
     158         [ -  + ]:        225 : }
     159                 :            : 
     160                 :            : //------------------------------------------------------------------
     161                 :            : 
     162                 :        120 : void ScFormatShell::GetStyleState( SfxItemSet& rSet )
     163                 :            : {
     164         [ +  - ]:        120 :     ScDocument*             pDoc        = GetViewData()->GetDocument();
     165                 :        120 :     ScTabViewShell* pTabViewShell       = GetViewData()->GetViewShell();
     166         [ +  - ]:        120 :     SfxStyleSheetBasePool*  pStylePool  = pDoc->GetStyleSheetPool();
     167                 :            : 
     168                 :        120 :     bool bProtected = false;
     169         [ +  - ]:        120 :     SCTAB nTabCount = pDoc->GetTableCount();
     170         [ +  + ]:        276 :     for (SCTAB i=0; i<nTabCount; i++)
     171 [ +  - ][ -  + ]:        156 :         if (pDoc->IsTabProtected(i))                // ueberhaupt eine Tabelle geschuetzt?
     172                 :          0 :             bProtected = true;
     173                 :            : 
     174         [ +  - ]:        120 :     SfxWhichIter    aIter(rSet);
     175         [ +  - ]:        120 :     sal_uInt16          nWhich = aIter.FirstWhich();
     176                 :        120 :     sal_uInt16          nSlotId = 0;
     177                 :            : 
     178         [ +  + ]:        360 :     while ( nWhich )
     179                 :            :     {
     180                 :        240 :         nSlotId = SfxItemPool::IsWhich( nWhich )
     181                 :          0 :                     ? GetPool().GetSlotId( nWhich )
     182   [ -  +  #  # ]:        240 :                     : nWhich;
     183                 :            : 
     184   [ -  +  +  -  :        240 :         switch ( nSlotId )
                -  -  - ]
     185                 :            :         {
     186                 :            :             case SID_STYLE_APPLY:
     187         [ #  # ]:          0 :                 if ( !pStylePool )
     188         [ #  # ]:          0 :                     rSet.DisableItem( nSlotId );
     189                 :          0 :                 break;
     190                 :            : 
     191                 :            :             case SID_STYLE_FAMILY2:     // Zellvorlagen
     192                 :            :             {
     193                 :            :                 SfxStyleSheet* pStyleSheet = (SfxStyleSheet*)
     194         [ +  - ]:        120 :                                              pTabViewShell->GetStyleSheetFromMarked();
     195                 :            : 
     196         [ +  - ]:        120 :                 if ( pStyleSheet )
     197 [ +  - ][ +  - ]:        120 :                     rSet.Put( SfxTemplateItem( nSlotId, pStyleSheet->GetName() ) );
         [ +  - ][ +  - ]
     198                 :            :                 else
     199 [ #  # ][ #  # ]:          0 :                     rSet.Put( SfxTemplateItem( nSlotId, String() ) );
         [ #  # ][ #  # ]
                 [ #  # ]
     200                 :            :             }
     201                 :        120 :             break;
     202                 :            : 
     203                 :            :             case SID_STYLE_FAMILY4:     // Seitenvorlagen
     204                 :            :             {
     205                 :        120 :                 SCTAB           nCurTab     = GetViewData()->GetTabNo();
     206 [ +  - ][ +  - ]:        120 :                 String          aPageStyle  = pDoc->GetPageStyle( nCurTab );
     207                 :            :                 SfxStyleSheet*  pStyleSheet = (SfxStyleSheet*)pStylePool->
     208         [ +  - ]:        120 :                                     Find( aPageStyle, SFX_STYLE_FAMILY_PAGE );
     209                 :            : 
     210         [ +  - ]:        120 :                 if ( pStyleSheet )
     211 [ +  - ][ +  - ]:        120 :                     rSet.Put( SfxTemplateItem( nSlotId, aPageStyle ) );
                 [ +  - ]
     212                 :            :                 else
     213 [ #  # ][ #  # ]:        120 :                     rSet.Put( SfxTemplateItem( nSlotId, String() ) );
         [ #  # ][ #  # ]
         [ #  # ][ +  - ]
     214                 :            :             }
     215                 :        120 :             break;
     216                 :            : 
     217                 :            :             case SID_STYLE_WATERCAN:
     218                 :            :             {
     219 [ #  # ][ #  # ]:          0 :                 rSet.Put( SfxBoolItem( nSlotId, SC_MOD()->GetIsWaterCan() ) );
         [ #  # ][ #  # ]
     220                 :            :             }
     221                 :          0 :             break;
     222                 :            : 
     223                 :            :             case SID_STYLE_UPDATE_BY_EXAMPLE:
     224                 :            :             {
     225                 :            :                 ISfxTemplateCommon* pDesigner = SFX_APP()->
     226 [ #  # ][ #  # ]:          0 :                         GetCurrentTemplateCommon(pTabViewShell->GetViewFrame()->GetBindings());
     227 [ #  # ][ #  # ]:          0 :                 bool bPage = pDesigner && SFX_STYLE_FAMILY_PAGE == pDesigner->GetActualFamily();
                 [ #  # ]
     228                 :            : 
     229 [ #  # ][ #  # ]:          0 :                 if ( bProtected || bPage )
     230         [ #  # ]:          0 :                     rSet.DisableItem( nSlotId );
     231                 :            :             }
     232                 :          0 :             break;
     233                 :            : 
     234                 :            :             case SID_STYLE_EDIT:
     235                 :            :             case SID_STYLE_DELETE:
     236                 :            :             {
     237                 :            :                 ISfxTemplateCommon* pDesigner = SFX_APP()->
     238 [ #  # ][ #  # ]:          0 :                         GetCurrentTemplateCommon(pTabViewShell->GetViewFrame()->GetBindings());
     239 [ #  # ][ #  # ]:          0 :                 bool bPage = pDesigner && SFX_STYLE_FAMILY_PAGE == pDesigner->GetActualFamily();
                 [ #  # ]
     240                 :            : 
     241 [ #  # ][ #  # ]:          0 :                 if ( bProtected && !bPage )
     242         [ #  # ]:          0 :                     rSet.DisableItem( nSlotId );
     243                 :            :             }
     244                 :          0 :             break;
     245                 :            : 
     246                 :            :             default:
     247                 :          0 :                 break;
     248                 :            :         }
     249                 :            : 
     250         [ +  - ]:        240 :         nWhich = aIter.NextWhich();
     251         [ +  - ]:        120 :     }
     252                 :        120 : }
     253                 :            : 
     254                 :            : //------------------------------------------------------------------
     255                 :            : 
     256                 :          0 : void ScFormatShell::ExecuteStyle( SfxRequest& rReq )
     257                 :            : {
     258                 :            :     // Wenn ToolBar vertikal :
     259         [ #  # ]:          0 :     if ( !rReq.GetArgs() )
     260                 :            :     {
     261 [ #  # ][ #  # ]:          0 :         pViewData->GetDispatcher().Execute( SID_STYLE_DESIGNER, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD );
     262                 :          0 :         return;
     263                 :            :     }
     264                 :            : 
     265                 :            :     //--------------------------------------------------------------------
     266         [ #  # ]:          0 :     SfxBindings&        rBindings   = pViewData->GetBindings();
     267                 :          0 :     const SfxItemSet*   pArgs       = rReq.GetArgs();
     268                 :          0 :     const sal_uInt16        nSlotId     = rReq.GetSlot();
     269                 :          0 :     const SCTAB         nCurTab     = GetViewData()->GetTabNo();
     270                 :          0 :     ScDocShell*         pDocSh      = GetViewData()->GetDocShell();
     271                 :          0 :     ScTabViewShell*     pTabViewShell= GetViewData()->GetViewShell();
     272                 :          0 :     ScDocument*         pDoc        = pDocSh->GetDocument();
     273         [ #  # ]:          0 :     ScMarkData&         rMark       = GetViewData()->GetMarkData();
     274         [ #  # ]:          0 :     ScModule*           pScMod      = SC_MOD();
     275         [ #  # ]:          0 :     String              aRefName;
     276                 :          0 :     bool                bUndo       = pDoc->IsUndoEnabled();
     277                 :            : 
     278 [ #  # ][ #  # ]:          0 :     if (   (nSlotId == SID_STYLE_NEW)
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
     279                 :            :         || (nSlotId == SID_STYLE_EDIT)
     280                 :            :         || (nSlotId == SID_STYLE_DELETE)
     281                 :            :         || (nSlotId == SID_STYLE_APPLY)
     282                 :            :         || (nSlotId == SID_STYLE_WATERCAN)
     283                 :            :         || (nSlotId == SID_STYLE_FAMILY)
     284                 :            :         || (nSlotId == SID_STYLE_NEW_BY_EXAMPLE)
     285                 :            :         || (nSlotId == SID_STYLE_UPDATE_BY_EXAMPLE) )
     286                 :            :     {
     287         [ #  # ]:          0 :         SfxStyleSheetBasePool*  pStylePool  = pDoc->GetStyleSheetPool();
     288                 :          0 :         SfxStyleSheetBase*      pStyleSheet = NULL;
     289                 :            : 
     290                 :          0 :         bool bStyleToMarked = false;
     291                 :          0 :         bool bListAction = false;
     292                 :          0 :         bool bAddUndo = false;          // add ScUndoModifyStyle (style modified)
     293         [ #  # ]:          0 :         ScStyleSaveData aOldData;       // for undo/redo
     294         [ #  # ]:          0 :         ScStyleSaveData aNewData;
     295                 :            : 
     296                 :          0 :         SfxStyleFamily eFamily = SFX_STYLE_FAMILY_PARA;
     297                 :            :         const SfxPoolItem* pFamItem;
     298 [ #  # ][ #  # ]:          0 :         if ( pArgs && SFX_ITEM_SET == pArgs->GetItemState( SID_STYLE_FAMILY, sal_True, &pFamItem ) )
         [ #  # ][ #  # ]
     299                 :          0 :             eFamily = (SfxStyleFamily)((const SfxUInt16Item*)pFamItem)->GetValue();
     300                 :            :         else
     301 [ #  # ][ #  # ]:          0 :         if ( pArgs && SFX_ITEM_SET == pArgs->GetItemState( SID_STYLE_FAMILYNAME, sal_True, &pFamItem ) )
         [ #  # ][ #  # ]
     302                 :            :         {
     303         [ #  # ]:          0 :             String sFamily = ((const SfxStringItem*)pFamItem)->GetValue();
     304 [ #  # ][ #  # ]:          0 :             if (sFamily.CompareToAscii("CellStyles") == COMPARE_EQUAL)
     305                 :          0 :                 eFamily = SFX_STYLE_FAMILY_PARA;
     306                 :            :             else
     307 [ #  # ][ #  # ]:          0 :             if (sFamily.CompareToAscii("PageStyles") == COMPARE_EQUAL)
     308         [ #  # ]:          0 :                 eFamily = SFX_STYLE_FAMILY_PAGE;
     309                 :            :         }
     310                 :            : 
     311         [ #  # ]:          0 :         String                  aStyleName;
     312                 :          0 :         sal_uInt16                  nRetMask = 0xffff;
     313                 :            : 
     314         [ #  # ]:          0 :         pStylePool->SetSearchMask( eFamily, SFXSTYLEBIT_ALL );
     315                 :            : 
     316   [ #  #  #  #  :          0 :         switch ( nSlotId )
                      # ]
     317                 :            :         {
     318                 :            :             case SID_STYLE_NEW:
     319                 :            :                 {
     320                 :            :                     const SfxPoolItem* pNameItem;
     321 [ #  # ][ #  # ]:          0 :                     if (pArgs && SFX_ITEM_SET == pArgs->GetItemState( nSlotId, sal_True, &pNameItem ))
         [ #  # ][ #  # ]
     322         [ #  # ]:          0 :                         aStyleName  = ((const SfxStringItem*)pNameItem)->GetValue();
     323                 :            : 
     324                 :          0 :                     const SfxPoolItem* pRefItem=NULL;
     325 [ #  # ][ #  # ]:          0 :                     if (pArgs && SFX_ITEM_SET == pArgs->GetItemState( SID_STYLE_REFERENCE, sal_True, &pRefItem ))
         [ #  # ][ #  # ]
     326                 :            :                     {
     327         [ #  # ]:          0 :                         if(pRefItem!=NULL)
     328         [ #  # ]:          0 :                             aRefName  = ((const SfxStringItem*)pRefItem)->GetValue();
     329                 :            :                     }
     330                 :            : 
     331                 :            :                     pStyleSheet = &(pStylePool->Make( aStyleName, eFamily,
     332         [ #  # ]:          0 :                                                       SFXSTYLEBIT_USERDEF ) );
     333                 :            : 
     334 [ #  # ][ #  # ]:          0 :                     if ( pStyleSheet && pStyleSheet->HasParentSupport() )
         [ #  # ][ #  # ]
     335         [ #  # ]:          0 :                         pStyleSheet->SetParent(aRefName);
     336                 :            :                 }
     337                 :          0 :                 break;
     338                 :            : 
     339                 :            :             case SID_STYLE_APPLY:
     340                 :            :             {
     341 [ #  # ][ #  # ]:          0 :                 SFX_REQUEST_ARG( rReq, pNameItem, SfxStringItem, SID_APPLY_STYLE, false );
     342 [ #  # ][ #  # ]:          0 :                 SFX_REQUEST_ARG( rReq, pFamilyItem, SfxStringItem, SID_STYLE_FAMILYNAME, false );
     343 [ #  # ][ #  # ]:          0 :                 if ( pFamilyItem && pNameItem )
     344                 :            :                 {
     345 [ #  # ][ #  # ]:          0 :                     com::sun::star::uno::Reference< com::sun::star::style::XStyleFamiliesSupplier > xModel(pDocSh->GetModel(), com::sun::star::uno::UNO_QUERY);
     346                 :            :                     try
     347                 :            :                     {
     348                 :          0 :                         com::sun::star::uno::Reference< com::sun::star::container::XNameAccess > xStyles;
     349 [ #  # ][ #  # ]:          0 :                         com::sun::star::uno::Reference< com::sun::star::container::XNameAccess > xCont = xModel->getStyleFamilies();
     350 [ #  # ][ #  # ]:          0 :                         xCont->getByName(pFamilyItem->GetValue()) >>= xStyles;
         [ #  # ][ #  # ]
     351                 :          0 :                         com::sun::star::uno::Reference< com::sun::star::beans::XPropertySet > xInfo;
     352 [ #  # ][ #  # ]:          0 :                         xStyles->getByName( pNameItem->GetValue() ) >>= xInfo;
         [ #  # ][ #  # ]
     353                 :          0 :                         ::rtl::OUString aUIName;
     354 [ #  # ][ #  # ]:          0 :                         xInfo->getPropertyValue( ::rtl::OUString("DisplayName") ) >>= aUIName;
     355         [ #  # ]:          0 :                         if ( !aUIName.isEmpty() )
     356 [ #  # ][ #  # ]:          0 :                             rReq.AppendItem( SfxStringItem( SID_STYLE_APPLY, aUIName ) );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
     357                 :            :                     }
     358         [ #  # ]:          0 :                     catch( com::sun::star::uno::Exception& )
     359                 :            :                     {
     360                 :          0 :                     }
     361                 :            :                 }
     362                 :            :             }
     363                 :            :             case SID_STYLE_EDIT:
     364                 :            :             case SID_STYLE_DELETE:
     365                 :            :             case SID_STYLE_NEW_BY_EXAMPLE:
     366                 :            :                 {
     367                 :            :                     const SfxPoolItem* pNameItem;
     368 [ #  # ][ #  # ]:          0 :                     if (pArgs && SFX_ITEM_SET == pArgs->GetItemState( nSlotId, sal_True, &pNameItem ))
         [ #  # ][ #  # ]
     369         [ #  # ]:          0 :                         aStyleName  = ((const SfxStringItem*)pNameItem)->GetValue();
     370         [ #  # ]:          0 :                     pStyleSheet = pStylePool->Find( aStyleName, eFamily );
     371                 :            : 
     372         [ #  # ]:          0 :                     aOldData.InitFromStyle( pStyleSheet );
     373                 :            :                 }
     374                 :          0 :                 break;
     375                 :            : 
     376                 :            :             case SID_STYLE_WATERCAN:
     377                 :            :             {
     378                 :          0 :                 bool bWaterCan = pScMod->GetIsWaterCan();
     379                 :            : 
     380         [ #  # ]:          0 :                 if( !bWaterCan )
     381                 :            :                 {
     382                 :            :                     const SfxPoolItem* pItem;
     383                 :            : 
     384         [ #  # ]:          0 :                     if ( SFX_ITEM_SET ==
     385         [ #  # ]:          0 :                          pArgs->GetItemState( nSlotId, sal_True, &pItem ) )
     386                 :            :                     {
     387 [ #  # ][ #  # ]:          0 :                         const SfxStringItem* pStrItem = PTR_CAST(SfxStringItem,pItem);
         [ #  # ][ #  # ]
     388         [ #  # ]:          0 :                         if ( pStrItem )
     389                 :            :                         {
     390         [ #  # ]:          0 :                             aStyleName  = pStrItem->GetValue();
     391         [ #  # ]:          0 :                             pStyleSheet = pStylePool->Find( aStyleName, eFamily );
     392                 :            : 
     393         [ #  # ]:          0 :                             if ( pStyleSheet )
     394                 :            :                             {
     395                 :            :                                 ((ScStyleSheetPool*)pStylePool)->
     396                 :          0 :                                         SetActualStyleSheet( pStyleSheet );
     397         [ #  # ]:          0 :                                 rReq.Done();
     398                 :            :                             }
     399                 :            :                         }
     400                 :            :                     }
     401                 :            :                 }
     402                 :            : 
     403 [ #  # ][ #  # ]:          0 :                 if ( !bWaterCan && pStyleSheet )
     404                 :            :                 {
     405                 :          0 :                     pScMod->SetWaterCan( true );
     406         [ #  # ]:          0 :                     pTabViewShell->SetActivePointer( Pointer(POINTER_FILL) );
     407         [ #  # ]:          0 :                     rReq.Done();
     408                 :            :                 }
     409                 :            :                 else
     410                 :            :                 {
     411                 :          0 :                     pScMod->SetWaterCan( false );
     412         [ #  # ]:          0 :                     pTabViewShell->SetActivePointer( Pointer(POINTER_ARROW) );
     413         [ #  # ]:          0 :                     rReq.Done();
     414                 :            :                 }
     415                 :            :             }
     416                 :          0 :             break;
     417                 :            : 
     418                 :            :             default:
     419                 :          0 :                 break;
     420                 :            :         }
     421                 :            : 
     422                 :            :         // Neuen Style fuer WaterCan-Mode setzen
     423 [ #  # ][ #  # ]:          0 :         if ( nSlotId == SID_STYLE_APPLY && pScMod->GetIsWaterCan() && pStyleSheet )
         [ #  # ][ #  # ]
     424                 :          0 :             ((ScStyleSheetPool*)pStylePool)->SetActualStyleSheet( pStyleSheet );
     425                 :            : 
     426      [ #  #  # ]:          0 :         switch ( eFamily )
     427                 :            :         {
     428                 :            :             case SFX_STYLE_FAMILY_PARA:
     429                 :            :             {
     430   [ #  #  #  # ]:          0 :                 switch ( nSlotId )
     431                 :            :                 {
     432                 :            :                     case SID_STYLE_DELETE:
     433                 :            :                     {
     434         [ #  # ]:          0 :                         if ( pStyleSheet )
     435                 :            :                         {
     436         [ #  # ]:          0 :                             pTabViewShell->RemoveStyleSheetInUse( pStyleSheet );
     437         [ #  # ]:          0 :                             pStylePool->Remove( pStyleSheet );
     438         [ #  # ]:          0 :                             pTabViewShell->InvalidateAttribs();
     439                 :          0 :                             nRetMask = true;
     440                 :          0 :                             bAddUndo = true;
     441         [ #  # ]:          0 :                             rReq.Done();
     442                 :            :                         }
     443                 :            :                         else
     444                 :          0 :                             nRetMask = false;
     445                 :            :                     }
     446                 :          0 :                     break;
     447                 :            : 
     448                 :            :                     case SID_STYLE_APPLY:
     449                 :            :                     {
     450 [ #  # ][ #  # ]:          0 :                         if ( pStyleSheet && !pScMod->GetIsWaterCan() )
                 [ #  # ]
     451                 :            :                         {
     452                 :            :                             // Anwenden der Vorlage auf das Dokument
     453         [ #  # ]:          0 :                             pTabViewShell->SetStyleSheetToMarked( (SfxStyleSheet*)pStyleSheet );
     454         [ #  # ]:          0 :                             pTabViewShell->InvalidateAttribs();
     455         [ #  # ]:          0 :                             rReq.Done();
     456                 :            :                         }
     457                 :            :                     }
     458                 :          0 :                     break;
     459                 :            : 
     460                 :            :                     case SID_STYLE_NEW_BY_EXAMPLE:
     461                 :            :                     case SID_STYLE_UPDATE_BY_EXAMPLE:
     462                 :            :                     {
     463                 :            :                         // Vorlage erzeugen/ersetzen durch Attribute
     464                 :            :                         // an der Cursor-Position:
     465                 :            : 
     466                 :          0 :                         const ScPatternAttr* pAttrItem = NULL;
     467                 :            : 
     468                 :            :                         // Die Abfrage, ob markiert ist, war hier immer falsch,
     469                 :            :                         // darum jetzt gar nicht mehr, und einfach vom Cursor.
     470                 :            :                         // Wenn Attribute aus der Selektion genommen werden sollen,
     471                 :            :                         // muss noch darauf geachtet werden, Items aus Vorlagen nicht
     472                 :            :                         // zu uebernehmen (GetSelectionPattern sammelt auch Items aus
     473                 :            :                         // Vorlagen zusammen) (#44748#)
     474                 :            :                         //      pAttrItem = GetSelectionPattern();
     475                 :            : 
     476                 :            :                         // ScViewData* pViewData = GetViewData();
     477                 :          0 :                         SCCOL       nCol = pViewData->GetCurX();
     478                 :          0 :                         SCROW       nRow = pViewData->GetCurY();
     479         [ #  # ]:          0 :                         pAttrItem = pDoc->GetPattern( nCol, nRow, nCurTab );
     480                 :            : 
     481         [ #  # ]:          0 :                         SfxItemSet aAttrSet = pAttrItem->GetItemSet();
     482         [ #  # ]:          0 :                         aAttrSet.ClearItem( ATTR_MERGE );
     483         [ #  # ]:          0 :                         aAttrSet.ClearItem( ATTR_MERGE_FLAG );
     484                 :            :                         //  bedingte Formatierung und Gueltigkeit nicht uebernehmen,
     485                 :            :                         //  weil sie in der Vorlage nicht editiert werden koennen
     486         [ #  # ]:          0 :                         aAttrSet.ClearItem( ATTR_VALIDDATA );
     487         [ #  # ]:          0 :                         aAttrSet.ClearItem( ATTR_CONDITIONAL );
     488                 :            : 
     489         [ #  # ]:          0 :                         if ( SID_STYLE_NEW_BY_EXAMPLE == nSlotId )
     490                 :            :                         {
     491         [ #  # ]:          0 :                             if ( bUndo )
     492                 :            :                             {
     493 [ #  # ][ #  # ]:          0 :                                 String aUndo = ScGlobal::GetRscString( STR_UNDO_EDITCELLSTYLE );
     494 [ #  # ][ #  # ]:          0 :                                 pDocSh->GetUndoManager()->EnterListAction( aUndo, aUndo );
     495         [ #  # ]:          0 :                                 bListAction = true;
     496                 :            :                             }
     497                 :            : 
     498                 :          0 :                             bool bConvertBack = false;
     499                 :            :                             SfxStyleSheet*  pSheetInUse = (SfxStyleSheet*)
     500         [ #  # ]:          0 :                                                           pTabViewShell->GetStyleSheetFromMarked();
     501                 :            : 
     502                 :            :                             // wenn neuer Style vorhanden und in der Selektion
     503                 :            :                             // verwendet wird, so darf der Parent nicht uebernommen
     504                 :            :                             // werden:
     505                 :            : 
     506 [ #  # ][ #  # ]:          0 :                             if ( pStyleSheet && pSheetInUse && pStyleSheet == pSheetInUse )
                 [ #  # ]
     507                 :          0 :                                 pSheetInUse = NULL;
     508                 :            : 
     509                 :            :                             // wenn bereits vorhanden, erstmal entfernen...
     510         [ #  # ]:          0 :                             if ( pStyleSheet )
     511                 :            :                             {
     512                 :            :                                 // Style-Pointer zu Namen vor Erase,
     513                 :            :                                 // weil Zellen sonst ungueltige Pointer
     514                 :            :                                 // enthalten.
     515                 :            :                                 //!!! bei Gelenheit mal eine Methode, die
     516                 :            :                                 //    das fuer einen bestimmten Style macht
     517         [ #  # ]:          0 :                                 pDoc->StylesToNames();
     518                 :          0 :                                 bConvertBack = true;
     519         [ #  # ]:          0 :                                 pStylePool->Remove(pStyleSheet);
     520                 :            :                             }
     521                 :            : 
     522                 :            :                             // ...und neu anlegen
     523                 :            :                             pStyleSheet = &pStylePool->Make( aStyleName, eFamily,
     524         [ #  # ]:          0 :                                                              SFXSTYLEBIT_USERDEF );
     525                 :            : 
     526                 :            :                             // wenn ein Style vorhanden ist, so wird dieser
     527                 :            :                             // Parent der neuen Vorlage:
     528 [ #  # ][ #  # ]:          0 :                             if ( pSheetInUse && pStyleSheet->HasParentSupport() )
         [ #  # ][ #  # ]
     529 [ #  # ][ #  # ]:          0 :                                 pStyleSheet->SetParent( pSheetInUse->GetName() );
     530                 :            : 
     531         [ #  # ]:          0 :                             if ( bConvertBack )
     532                 :            :                                 // Namen zu Style-Pointer
     533         [ #  # ]:          0 :                                 pDoc->UpdStlShtPtrsFrmNms();
     534                 :            :                             else
     535 [ #  # ][ #  # ]:          0 :                                 pDoc->GetPool()->CellStyleCreated( aStyleName );
     536                 :            : 
     537                 :            :                             // Attribute uebernehmen und Style anwenden
     538 [ #  # ][ #  # ]:          0 :                             pStyleSheet->GetItemSet().Put( aAttrSet );
     539         [ #  # ]:          0 :                             pTabViewShell->UpdateStyleSheetInUse( pStyleSheet );
     540                 :            : 
     541                 :            :                             //  call SetStyleSheetToMarked after adding the ScUndoModifyStyle
     542                 :            :                             //  (pStyleSheet pointer is used!)
     543                 :          0 :                             bStyleToMarked = true;
     544                 :            :                         }
     545                 :            :                         else // ( nSlotId == SID_STYLE_UPDATE_BY_EXAMPLE )
     546                 :            :                         {
     547         [ #  # ]:          0 :                             pStyleSheet = (SfxStyleSheet*)pTabViewShell->GetStyleSheetFromMarked();
     548                 :            : 
     549         [ #  # ]:          0 :                             if ( pStyleSheet )
     550                 :            :                             {
     551         [ #  # ]:          0 :                                 aOldData.InitFromStyle( pStyleSheet );
     552                 :            : 
     553         [ #  # ]:          0 :                                 if ( bUndo )
     554                 :            :                                 {
     555 [ #  # ][ #  # ]:          0 :                                     String aUndo = ScGlobal::GetRscString( STR_UNDO_EDITCELLSTYLE );
     556 [ #  # ][ #  # ]:          0 :                                     pDocSh->GetUndoManager()->EnterListAction( aUndo, aUndo );
     557         [ #  # ]:          0 :                                     bListAction = true;
     558                 :            :                                 }
     559                 :            : 
     560 [ #  # ][ #  # ]:          0 :                                 pStyleSheet->GetItemSet().Put( aAttrSet );
     561         [ #  # ]:          0 :                                 pTabViewShell->UpdateStyleSheetInUse( pStyleSheet );
     562                 :            : 
     563                 :            :                                 //  call SetStyleSheetToMarked after adding the ScUndoModifyStyle
     564                 :            :                                 //  (pStyleSheet pointer is used!)
     565                 :          0 :                                 bStyleToMarked = true;
     566                 :            :                             }
     567                 :            :                         }
     568                 :            : 
     569         [ #  # ]:          0 :                         aNewData.InitFromStyle( pStyleSheet );
     570                 :          0 :                         bAddUndo = true;
     571 [ #  # ][ #  # ]:          0 :                         rReq.Done();
     572                 :            :                     }
     573                 :          0 :                     break;
     574                 :            : 
     575                 :            :                     default:
     576                 :          0 :                         break;
     577                 :            :                 }
     578                 :            :             } // case SFX_STYLE_FAMILY_PARA:
     579                 :          0 :             break;
     580                 :            : 
     581                 :            :             case SFX_STYLE_FAMILY_PAGE:
     582                 :            :             {
     583   [ #  #  #  # ]:          0 :                 switch ( nSlotId )
     584                 :            :                 {
     585                 :            :                     case SID_STYLE_DELETE:
     586                 :            :                     {
     587                 :          0 :                         nRetMask = ( NULL != pStyleSheet );
     588         [ #  # ]:          0 :                         if ( pStyleSheet )
     589                 :            :                         {
     590 [ #  # ][ #  # ]:          0 :                             if ( pDoc->RemovePageStyleInUse( pStyleSheet->GetName() ) )
         [ #  # ][ #  # ]
     591                 :            :                             {
     592 [ #  # ][ #  # ]:          0 :                                 ScPrintFunc( pDocSh, pTabViewShell->GetPrinter(true), nCurTab ).UpdatePages();
         [ #  # ][ #  # ]
     593         [ #  # ]:          0 :                                 rBindings.Invalidate( SID_STATUS_PAGESTYLE );
     594         [ #  # ]:          0 :                                 rBindings.Invalidate( FID_RESET_PRINTZOOM );
     595                 :            :                             }
     596         [ #  # ]:          0 :                             pStylePool->Remove( pStyleSheet );
     597         [ #  # ]:          0 :                             rBindings.Invalidate( SID_STYLE_FAMILY4 );
     598         [ #  # ]:          0 :                             pDocSh->SetDocumentModified();
     599                 :          0 :                             bAddUndo = true;
     600         [ #  # ]:          0 :                             rReq.Done();
     601                 :            :                         }
     602                 :            :                     }
     603                 :          0 :                     break;
     604                 :            : 
     605                 :            :                     case SID_STYLE_APPLY:
     606                 :            :                     {
     607                 :          0 :                         nRetMask = ( NULL != pStyleSheet );
     608 [ #  # ][ #  # ]:          0 :                         if ( pStyleSheet && !pScMod->GetIsWaterCan() )
                 [ #  # ]
     609                 :            :                         {
     610                 :          0 :                             ScUndoApplyPageStyle* pUndoAction = 0;
     611         [ #  # ]:          0 :                             SCTAB nTabCount = pDoc->GetTableCount();
     612 [ #  # ][ #  # ]:          0 :                             ScMarkData::iterator itr = rMark.begin(), itrEnd = rMark.end();
     613 [ #  # ][ #  # ]:          0 :                             for (; itr != itrEnd && *itr < nTabCount; ++itr)
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
     614                 :            :                             {
     615 [ #  # ][ #  # ]:          0 :                                 String aOldName = pDoc->GetPageStyle( *itr );
                 [ #  # ]
     616 [ #  # ][ #  # ]:          0 :                                 if ( aOldName != aStyleName )
     617                 :            :                                 {
     618 [ #  # ][ #  # ]:          0 :                                     pDoc->SetPageStyle( *itr, aStyleName );
                 [ #  # ]
     619 [ #  # ][ #  # ]:          0 :                                     ScPrintFunc( pDocSh, pTabViewShell->GetPrinter(true), *itr ).UpdatePages();
         [ #  # ][ #  # ]
                 [ #  # ]
     620         [ #  # ]:          0 :                                     if( !pUndoAction )
     621 [ #  # ][ #  # ]:          0 :                                         pUndoAction = new ScUndoApplyPageStyle( pDocSh, aStyleName );
     622 [ #  # ][ #  # ]:          0 :                                     pUndoAction->AddSheetAction( *itr, aOldName );
     623                 :            :                                 }
     624         [ #  # ]:          0 :                             }
     625         [ #  # ]:          0 :                             if( pUndoAction )
     626                 :            :                             {
     627 [ #  # ][ #  # ]:          0 :                                 pDocSh->GetUndoManager()->AddUndoAction( pUndoAction );
     628         [ #  # ]:          0 :                                 pDocSh->SetDocumentModified();
     629         [ #  # ]:          0 :                                 rBindings.Invalidate( SID_STYLE_FAMILY4 );
     630         [ #  # ]:          0 :                                 rBindings.Invalidate( SID_STATUS_PAGESTYLE );
     631         [ #  # ]:          0 :                                 rBindings.Invalidate( FID_RESET_PRINTZOOM );
     632                 :            :                             }
     633         [ #  # ]:          0 :                             rReq.Done();
     634                 :            :                         }
     635                 :            :                     }
     636                 :          0 :                     break;
     637                 :            : 
     638                 :            :                     case SID_STYLE_NEW_BY_EXAMPLE:
     639                 :            :                     {
     640 [ #  # ][ #  # ]:          0 :                         const String& rStrCurStyle = pDoc->GetPageStyle( nCurTab );
     641                 :            : 
     642 [ #  # ][ #  # ]:          0 :                         if ( rStrCurStyle != aStyleName )
     643                 :            :                         {
     644         [ #  # ]:          0 :                             SfxStyleSheetBase*  pCurStyle = pStylePool->Find( rStrCurStyle, eFamily );
     645 [ #  # ][ #  # ]:          0 :                             SfxItemSet          aAttrSet  = pCurStyle->GetItemSet();
     646                 :            :                             SCTAB               nInTab;
     647 [ #  # ][ #  # ]:          0 :                             bool                bUsed = pDoc->IsPageStyleInUse( aStyleName, &nInTab );
     648                 :            : 
     649                 :            :                             // wenn bereits vorhanden, erstmal entfernen...
     650         [ #  # ]:          0 :                             if ( pStyleSheet )
     651         [ #  # ]:          0 :                                 pStylePool->Remove( pStyleSheet );
     652                 :            : 
     653                 :            :                             // ...und neu anlegen
     654                 :            :                             pStyleSheet = &pStylePool->Make( aStyleName, eFamily,
     655         [ #  # ]:          0 :                                                              SFXSTYLEBIT_USERDEF );
     656                 :            : 
     657                 :            :                             // Attribute uebernehmen
     658 [ #  # ][ #  # ]:          0 :                             pStyleSheet->GetItemSet().Put( aAttrSet );
     659         [ #  # ]:          0 :                             pDocSh->SetDocumentModified();
     660                 :            : 
     661                 :            :                             // wenn in Verwendung -> Update
     662         [ #  # ]:          0 :                             if ( bUsed )
     663 [ #  # ][ #  # ]:          0 :                                 ScPrintFunc( pDocSh, pTabViewShell->GetPrinter(true), nInTab ).UpdatePages();
         [ #  # ][ #  # ]
     664                 :            : 
     665         [ #  # ]:          0 :                             aNewData.InitFromStyle( pStyleSheet );
     666                 :          0 :                             bAddUndo = true;
     667         [ #  # ]:          0 :                             rReq.Done();
     668         [ #  # ]:          0 :                             nRetMask = true;
     669         [ #  # ]:          0 :                         }
     670                 :            :                     }
     671                 :          0 :                     break;
     672                 :            : 
     673                 :            :                     default:
     674                 :          0 :                         break;
     675                 :            :                 } // switch ( nSlotId )
     676                 :            :             } // case SFX_STYLE_FAMILY_PAGE:
     677                 :          0 :             break;
     678                 :            : 
     679                 :            :             default:
     680                 :          0 :                 break;
     681                 :            :         } // switch ( eFamily )
     682                 :            : 
     683                 :            :         // Neu anlegen oder bearbeiten ueber Dialog:
     684 [ #  # ][ #  # ]:          0 :         if ( nSlotId == SID_STYLE_NEW || nSlotId == SID_STYLE_EDIT )
     685                 :            :         {
     686         [ #  # ]:          0 :             if ( pStyleSheet )
     687                 :            :             {
     688                 :          0 :                 SvxNumberInfoItem* pNumberInfoItem = NULL;
     689                 :            : 
     690                 :          0 :                 SfxStyleFamily  eFam    = pStyleSheet->GetFamily();
     691                 :          0 :                 SfxAbstractTabDialog* pDlg    = NULL;
     692                 :          0 :                 sal_uInt16          nRsc    = 0;
     693                 :            : 
     694                 :            :                 // alte Items aus der Vorlage merken
     695 [ #  # ][ #  # ]:          0 :                 SfxItemSet aOldSet = pStyleSheet->GetItemSet();
     696 [ #  # ][ #  # ]:          0 :                 String aOldName = pStyleSheet->GetName();
     697                 :            : 
     698         [ #  # ]:          0 :                 switch ( eFam )
     699                 :            :                 {
     700                 :            :                     case SFX_STYLE_FAMILY_PAGE:
     701                 :          0 :                         nRsc = RID_SCDLG_STYLES_PAGE;
     702                 :          0 :                         break;
     703                 :            : 
     704                 :            :                     case SFX_STYLE_FAMILY_PARA:
     705                 :            :                     default:
     706                 :            :                         {
     707         [ #  # ]:          0 :                             SfxItemSet& rSet = pStyleSheet->GetItemSet();
     708                 :            : 
     709                 :            :                             const SfxPoolItem* pItem;
     710         [ #  # ]:          0 :                             if ( rSet.GetItemState( ATTR_VALUE_FORMAT,
     711         [ #  # ]:          0 :                                     false, &pItem ) == SFX_ITEM_SET )
     712                 :            :                             {
     713                 :            :                                 // NumberFormat Value aus Value und Language
     714                 :            :                                 // erzeugen und eintueten
     715                 :            :                                 sal_uLong nFormat =
     716                 :          0 :                                     ((SfxUInt32Item*)pItem)->GetValue();
     717                 :            :                                 LanguageType eLang =
     718                 :            :                                     ((SvxLanguageItem*)&rSet.Get(
     719         [ #  # ]:          0 :                                     ATTR_LANGUAGE_FORMAT ))->GetLanguage();
     720                 :            :                                 sal_uLong nLangFormat = pDoc->GetFormatTable()->
     721 [ #  # ][ #  # ]:          0 :                                     GetFormatForLanguageIfBuiltIn( nFormat, eLang );
     722         [ #  # ]:          0 :                                 if ( nLangFormat != nFormat )
     723                 :            :                                 {
     724         [ #  # ]:          0 :                                     SfxUInt32Item aNewItem( ATTR_VALUE_FORMAT, nLangFormat );
     725         [ #  # ]:          0 :                                     rSet.Put( aNewItem );
     726 [ #  # ][ #  # ]:          0 :                                     aOldSet.Put( aNewItem );
     727                 :            :                                     // auch in aOldSet fuer Vergleich nach dem Dialog,
     728                 :            :                                     // sonst geht evtl. eine Aenderung der Sprache verloren
     729                 :            :                                 }
     730                 :            :                             }
     731                 :            : 
     732         [ #  # ]:          0 :                             pTabViewShell->MakeNumberInfoItem( pDoc, GetViewData(), &pNumberInfoItem );
     733         [ #  # ]:          0 :                             pDocSh->PutItem( *pNumberInfoItem );
     734                 :          0 :                             nRsc = RID_SCDLG_STYLES_PAR;
     735                 :            : 
     736                 :            :                             //  auf jeden Fall ein SvxBoxInfoItem mit Table = sal_False im Set:
     737                 :            :                             //  (wenn gar kein Item da ist, loescht der Dialog auch das
     738                 :            :                             //   BORDER_OUTER SvxBoxItem aus dem Vorlagen-Set)
     739                 :            : 
     740 [ #  # ][ #  # ]:          0 :                             if ( rSet.GetItemState( ATTR_BORDER_INNER, false ) != SFX_ITEM_SET )
     741                 :            :                             {
     742         [ #  # ]:          0 :                                 SvxBoxInfoItem aBoxInfoItem( ATTR_BORDER_INNER );
     743                 :          0 :                                 aBoxInfoItem.SetTable(false);       // keine inneren Linien
     744                 :          0 :                                 aBoxInfoItem.SetDist(true);
     745                 :          0 :                                 aBoxInfoItem.SetMinDist(false);
     746 [ #  # ][ #  # ]:          0 :                                 rSet.Put( aBoxInfoItem );
     747                 :            :                             }
     748                 :            :                         }
     749                 :          0 :                         break;
     750                 :            :                 }
     751                 :            : 
     752                 :            :                 //  If GetDefDialogParent is a dialog, it must be used
     753                 :            :                 //  (style catalog)
     754                 :            : 
     755         [ #  # ]:          0 :                 Window* pParent = Application::GetDefDialogParent();
     756 [ #  # ][ #  # ]:          0 :                 if ( !pParent || !pParent->IsDialog() )
         [ #  # ][ #  # ]
     757                 :            :                 {
     758                 :            :                     //  GetDefDialogParent currently doesn't return the window
     759                 :            :                     //  that was set with SetDefDialogParent (but dynamically finds the
     760                 :            :                     //  topmost parent of the focus window), so IsDialog above is FALSE
     761                 :            :                     //  even if called from the style catalog.
     762                 :            :                     //  -> Use NULL if a modal dialog is open, to enable the Dialog's
     763                 :            :                     //  default parent handling.
     764 [ #  # ][ #  # ]:          0 :                     if ( Application::IsInModalMode() )
     765                 :          0 :                         pParent = NULL;
     766                 :            :                     else
     767         [ #  # ]:          0 :                         pParent = pTabViewShell->GetDialogParent();
     768                 :            :                 }
     769                 :            : 
     770                 :          0 :                 pTabViewShell->SetInFormatDialog(true);
     771                 :            : 
     772         [ #  # ]:          0 :                 ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create();
     773                 :            :                 OSL_ENSURE(pFact, "ScAbstractFactory create fail!");
     774                 :            : 
     775         [ #  # ]:          0 :                 pDlg = pFact->CreateScStyleDlg( pParent, *pStyleSheet, nRsc, nRsc );
     776                 :            :                 OSL_ENSURE(pDlg, "Dialog create fail!");
     777         [ #  # ]:          0 :                 short nResult = pDlg->Execute();
     778                 :          0 :                 pTabViewShell->SetInFormatDialog(false);
     779                 :            : 
     780         [ #  # ]:          0 :                 if ( nResult == RET_OK )
     781                 :            :                 {
     782         [ #  # ]:          0 :                     const SfxItemSet* pOutSet = pDlg->GetOutputItemSet();
     783                 :            : 
     784         [ #  # ]:          0 :                     if ( pOutSet )
     785                 :            :                     {
     786                 :          0 :                         nRetMask = pStyleSheet->GetMask();
     787                 :            : 
     788                 :            :                         //  Attribut-Vergleiche (frueher in ModifyStyleSheet)
     789                 :            :                         //  jetzt hier mit den alten Werten (Style ist schon veraendert)
     790                 :            : 
     791         [ #  # ]:          0 :                         if ( SFX_STYLE_FAMILY_PARA == eFam )
     792                 :            :                         {
     793         [ #  # ]:          0 :                             SfxItemSet& rNewSet = pStyleSheet->GetItemSet();
     794                 :            :                             bool bNumFormatChanged;
     795         [ #  # ]:          0 :                             if ( ScGlobal::CheckWidthInvalidate(
     796         [ #  # ]:          0 :                                                 bNumFormatChanged, aOldSet, rNewSet ) )
     797         [ #  # ]:          0 :                                 pDoc->InvalidateTextWidth( NULL, NULL, bNumFormatChanged );
     798                 :            : 
     799         [ #  # ]:          0 :                             SCTAB nTabCount = pDoc->GetTableCount();
     800         [ #  # ]:          0 :                             for (SCTAB nTab=0; nTab<nTabCount; nTab++)
     801 [ #  # ][ #  # ]:          0 :                                 if (pDoc->IsStreamValid(nTab))
     802         [ #  # ]:          0 :                                     pDoc->SetStreamValid(nTab, false);
     803                 :            : 
     804                 :            :                             sal_uLong nOldFormat = ((const SfxUInt32Item&)aOldSet.
     805         [ #  # ]:          0 :                                                     Get( ATTR_VALUE_FORMAT )).GetValue();
     806                 :            :                             sal_uLong nNewFormat = ((const SfxUInt32Item&)rNewSet.
     807         [ #  # ]:          0 :                                                     Get( ATTR_VALUE_FORMAT )).GetValue();
     808         [ #  # ]:          0 :                             if ( nNewFormat != nOldFormat )
     809                 :            :                             {
     810         [ #  # ]:          0 :                                 SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
     811         [ #  # ]:          0 :                                 const SvNumberformat* pOld = pFormatter->GetEntry( nOldFormat );
     812         [ #  # ]:          0 :                                 const SvNumberformat* pNew = pFormatter->GetEntry( nNewFormat );
     813 [ #  # ][ #  # ]:          0 :                                 if ( pOld && pNew && pOld->GetLanguage() != pNew->GetLanguage() )
         [ #  # ][ #  # ]
     814                 :            :                                     rNewSet.Put( SvxLanguageItem(
     815 [ #  # ][ #  # ]:          0 :                                                     pNew->GetLanguage(), ATTR_LANGUAGE_FORMAT ) );
                 [ #  # ]
     816                 :            :                             }
     817                 :            : 
     818 [ #  # ][ #  # ]:          0 :                             pDoc->GetPool()->CellStyleCreated( pStyleSheet->GetName() );
                 [ #  # ]
     819                 :            :                         }
     820                 :            :                         else
     821                 :            :                         {
     822                 :            :                             //! auch fuer Seitenvorlagen die Abfragen hier
     823                 :            : 
     824 [ #  # ][ #  # ]:          0 :                             String aNewName = pStyleSheet->GetName();
     825 [ #  # ][ #  # ]:          0 :                             if ( aNewName != aOldName &&
         [ #  # ][ #  # ]
     826 [ #  # ][ #  # ]:          0 :                                     pDoc->RenamePageStyleInUse( aOldName, aNewName ) )
         [ #  # ][ #  # ]
                 [ #  # ]
           [ #  #  #  # ]
     827                 :            :                             {
     828         [ #  # ]:          0 :                                 rBindings.Invalidate( SID_STATUS_PAGESTYLE );
     829         [ #  # ]:          0 :                                 rBindings.Invalidate( FID_RESET_PRINTZOOM );
     830                 :            :                             }
     831                 :            : 
     832         [ #  # ]:          0 :                             pDoc->ModifyStyleSheet( *pStyleSheet, *pOutSet );
     833 [ #  # ][ #  # ]:          0 :                             rBindings.Invalidate( FID_RESET_PRINTZOOM );
     834                 :            :                         }
     835                 :            : 
     836         [ #  # ]:          0 :                         pDocSh->SetDocumentModified();
     837                 :            : 
     838         [ #  # ]:          0 :                         if ( SFX_STYLE_FAMILY_PARA == eFam )
     839                 :            :                         {
     840                 :            :                             pTabViewShell->UpdateNumberFormatter(
     841                 :            :                                 (const SvxNumberInfoItem&)
     842 [ #  # ][ #  # ]:          0 :                                     *(pDocSh->GetItem(SID_ATTR_NUMBERFORMAT_INFO)) );
     843                 :            : 
     844         [ #  # ]:          0 :                             pTabViewShell->UpdateStyleSheetInUse( pStyleSheet );
     845         [ #  # ]:          0 :                             pTabViewShell->InvalidateAttribs();
     846                 :            :                         }
     847                 :            : 
     848         [ #  # ]:          0 :                         aNewData.InitFromStyle( pStyleSheet );
     849                 :          0 :                         bAddUndo = true;
     850                 :            :                     }
     851                 :            :                 }
     852                 :            :                 else
     853                 :            :                 {
     854         [ #  # ]:          0 :                     if ( nSlotId == SID_STYLE_NEW )
     855         [ #  # ]:          0 :                         pStylePool->Remove( pStyleSheet );
     856                 :            :                     else
     857                 :            :                     {
     858                 :            :                         //  falls zwischendurch etwas mit dem temporaer geaenderten
     859                 :            :                         //  ItemSet gepainted wurde:
     860         [ #  # ]:          0 :                         pDocSh->PostPaintGridAll();
     861                 :            :                     }
     862                 :            :                 }
     863 [ #  # ][ #  # ]:          0 :                 delete pDlg;
         [ #  # ][ #  # ]
     864                 :            :             }
     865                 :            :         }
     866                 :            : 
     867 [ #  # ][ #  # ]:          0 :             rReq.SetReturnValue( SfxUInt16Item( nSlotId, nRetMask ) );
                 [ #  # ]
     868                 :            : 
     869 [ #  # ][ #  # ]:          0 :         if ( bAddUndo && bUndo)
     870         [ #  # ]:          0 :             pDocSh->GetUndoManager()->AddUndoAction(
     871 [ #  # ][ #  # ]:          0 :                         new ScUndoModifyStyle( pDocSh, eFamily, aOldData, aNewData ) );
                 [ #  # ]
     872                 :            : 
     873         [ #  # ]:          0 :         if ( bStyleToMarked )
     874                 :            :         {
     875                 :            :             //  call SetStyleSheetToMarked after adding the ScUndoModifyStyle,
     876                 :            :             //  so redo will find the modified style
     877         [ #  # ]:          0 :             pTabViewShell->SetStyleSheetToMarked( (SfxStyleSheet*)pStyleSheet );
     878         [ #  # ]:          0 :             pTabViewShell->InvalidateAttribs();
     879                 :            :         }
     880                 :            : 
     881         [ #  # ]:          0 :         if ( bListAction )
     882 [ #  # ][ #  # ]:          0 :             pDocSh->GetUndoManager()->LeaveListAction();
         [ #  # ][ #  # ]
                 [ #  # ]
     883                 :            :     }
     884                 :            :     else
     885                 :            :     {
     886                 :            :         OSL_FAIL( "Unknown slot (ScViewShell::ExecuteStyle)" );
     887         [ #  # ]:          0 :     }
     888                 :            : }
     889                 :            : 
     890                 :          0 : void ScFormatShell::ExecuteNumFormat( SfxRequest& rReq )
     891                 :            : {
     892         [ #  # ]:          0 :     ScModule*           pScMod      = SC_MOD();
     893                 :          0 :     ScTabViewShell* pTabViewShell   = GetViewData()->GetViewShell();
     894                 :          0 :     const SfxItemSet*   pReqArgs    = rReq.GetArgs();
     895                 :          0 :     sal_uInt16              nSlot       = rReq.GetSlot();
     896                 :          0 :     SfxBindings& rBindings          = pTabViewShell->GetViewFrame()->GetBindings();
     897                 :            : 
     898         [ #  # ]:          0 :     pTabViewShell->HideListBox();                   // Autofilter-DropDown-Listbox
     899                 :            : 
     900                 :            :                                     // Eingabe beenden
     901         [ #  # ]:          0 :     if ( GetViewData()->HasEditView( GetViewData()->GetActivePart() ) )
     902                 :            :     {
     903         [ #  # ]:          0 :         switch ( nSlot )
     904                 :            :         {
     905                 :            :             case SID_NUMBER_TWODEC:
     906                 :            :             case SID_NUMBER_SCIENTIFIC:
     907                 :            :             case SID_NUMBER_DATE:
     908                 :            :             case SID_NUMBER_CURRENCY:
     909                 :            :             case SID_NUMBER_PERCENT:
     910                 :            :             case SID_NUMBER_STANDARD:
     911                 :            :             case SID_NUMBER_FORMAT:
     912                 :            :             case SID_NUMBER_INCDEC:
     913                 :            :             case SID_NUMBER_DECDEC:
     914                 :            :             case FID_DEFINE_NAME:
     915                 :            :             case FID_ADD_NAME:
     916                 :            :             case FID_USE_NAME:
     917                 :            :             case FID_INSERT_NAME:
     918                 :            :             case SID_SPELL_DIALOG:
     919                 :            :             case SID_HANGUL_HANJA_CONVERSION:
     920                 :            : 
     921         [ #  # ]:          0 :             pScMod->InputEnterHandler();
     922         [ #  # ]:          0 :             pTabViewShell->UpdateInputHandler();
     923                 :          0 :             break;
     924                 :            : 
     925                 :            :             default:
     926                 :          0 :             break;
     927                 :            :         }
     928                 :            :     }
     929                 :            : 
     930         [ #  # ]:          0 :     short nType = GetCurrentNumberFormatType();
     931         [ #  # ]:          0 :     SfxItemSet aSet( GetPool(), nSlot, nSlot );
     932   [ #  #  #  #  :          0 :     switch ( nSlot )
          #  #  #  #  #  
                #  #  # ]
     933                 :            :     {
     934                 :            :         case SID_NUMBER_TWODEC:
     935         [ #  # ]:          0 :             pTabViewShell->SetNumberFormat( NUMBERFORMAT_NUMBER, 4 );       // Standard+4 = #.##0,00
     936         [ #  # ]:          0 :             rReq.Done();
     937                 :          0 :             break;
     938                 :            :         case SID_NUMBER_SCIENTIFIC:
     939         [ #  # ]:          0 :             if ((nType & NUMBERFORMAT_SCIENTIFIC))
     940         [ #  # ]:          0 :                 pTabViewShell->SetNumberFormat( NUMBERFORMAT_NUMBER );
     941                 :            :             else
     942         [ #  # ]:          0 :                 pTabViewShell->SetNumberFormat( NUMBERFORMAT_SCIENTIFIC );
     943 [ #  # ][ #  # ]:          0 :             aSet.Put( SfxBoolItem(nSlot, !(nType & NUMBERFORMAT_SCIENTIFIC)) );
                 [ #  # ]
     944         [ #  # ]:          0 :             rBindings.Invalidate( nSlot );
     945         [ #  # ]:          0 :             rReq.Done();
     946                 :          0 :             break;
     947                 :            :         case SID_NUMBER_DATE:
     948         [ #  # ]:          0 :             if ((nType & NUMBERFORMAT_DATE))
     949         [ #  # ]:          0 :                 pTabViewShell->SetNumberFormat( NUMBERFORMAT_NUMBER );
     950                 :            :             else
     951         [ #  # ]:          0 :                 pTabViewShell->SetNumberFormat( NUMBERFORMAT_DATE );
     952 [ #  # ][ #  # ]:          0 :             aSet.Put( SfxBoolItem(nSlot, !(nType & NUMBERFORMAT_DATE)) );
                 [ #  # ]
     953         [ #  # ]:          0 :             rBindings.Invalidate( nSlot );
     954         [ #  # ]:          0 :             rReq.Done();
     955                 :          0 :             break;
     956                 :            :         case SID_NUMBER_TIME:
     957         [ #  # ]:          0 :             if ((nType & NUMBERFORMAT_TIME))
     958         [ #  # ]:          0 :                 pTabViewShell->SetNumberFormat( NUMBERFORMAT_NUMBER );
     959                 :            :             else
     960         [ #  # ]:          0 :                 pTabViewShell->SetNumberFormat( NUMBERFORMAT_TIME );
     961 [ #  # ][ #  # ]:          0 :             aSet.Put( SfxBoolItem(nSlot, !(nType & NUMBERFORMAT_TIME)) );
                 [ #  # ]
     962         [ #  # ]:          0 :             rBindings.Invalidate( nSlot );
     963         [ #  # ]:          0 :             rReq.Done();
     964                 :          0 :             break;
     965                 :            :         case SID_NUMBER_CURRENCY:
     966         [ #  # ]:          0 :             if ((nType & NUMBERFORMAT_CURRENCY))
     967         [ #  # ]:          0 :                 pTabViewShell->SetNumberFormat( NUMBERFORMAT_NUMBER );
     968                 :            :             else
     969         [ #  # ]:          0 :                 pTabViewShell->SetNumberFormat( NUMBERFORMAT_CURRENCY );
     970 [ #  # ][ #  # ]:          0 :             aSet.Put( SfxBoolItem(nSlot, !(nType & NUMBERFORMAT_CURRENCY)) );
                 [ #  # ]
     971         [ #  # ]:          0 :             rBindings.Invalidate( nSlot );
     972         [ #  # ]:          0 :             rReq.Done();
     973                 :          0 :             break;
     974                 :            :         case SID_NUMBER_PERCENT:
     975         [ #  # ]:          0 :             if ((nType & NUMBERFORMAT_PERCENT))
     976         [ #  # ]:          0 :                 pTabViewShell->SetNumberFormat( NUMBERFORMAT_NUMBER );
     977                 :            :             else
     978         [ #  # ]:          0 :                 pTabViewShell->SetNumberFormat( NUMBERFORMAT_PERCENT );
     979 [ #  # ][ #  # ]:          0 :             aSet.Put( SfxBoolItem(nSlot, !(nType & NUMBERFORMAT_PERCENT)) );
                 [ #  # ]
     980         [ #  # ]:          0 :             rBindings.Invalidate( nSlot );
     981         [ #  # ]:          0 :             rReq.Done();
     982                 :          0 :             break;
     983                 :            :         case SID_NUMBER_STANDARD:
     984         [ #  # ]:          0 :             pTabViewShell->SetNumberFormat( NUMBERFORMAT_NUMBER );
     985         [ #  # ]:          0 :             rReq.Done();
     986                 :          0 :             break;
     987                 :            :         case SID_NUMBER_INCDEC:
     988         [ #  # ]:          0 :             pTabViewShell->ChangeNumFmtDecimals( true );
     989         [ #  # ]:          0 :             rReq.Done();
     990                 :          0 :             break;
     991                 :            :         case SID_NUMBER_DECDEC:
     992         [ #  # ]:          0 :             pTabViewShell->ChangeNumFmtDecimals( false );
     993         [ #  # ]:          0 :             rReq.Done();
     994                 :          0 :             break;
     995                 :            : 
     996                 :            :         case SID_NUMBER_FORMAT:
     997         [ #  # ]:          0 :             if ( pReqArgs )
     998                 :            :             {
     999                 :            :                 const SfxPoolItem* pItem;
    1000 [ #  # ][ #  # ]:          0 :                 if(pReqArgs->GetItemState(nSlot, sal_True, &pItem) == SFX_ITEM_SET)
    1001                 :            :                 {
    1002         [ #  # ]:          0 :                     String aCode = ((const SfxStringItem*)pItem)->GetValue();
    1003 [ #  # ][ #  # ]:          0 :                     pTabViewShell->SetNumFmtByStr( aCode );
    1004                 :            :                 }
    1005                 :            :             }
    1006                 :          0 :             break;
    1007                 :            : 
    1008                 :            :         case SID_ATTR_NUMBERFORMAT_VALUE:
    1009         [ #  # ]:          0 :             if ( pReqArgs )
    1010                 :            :             {
    1011                 :            :                 const SfxPoolItem* pItem;
    1012 [ #  # ][ #  # ]:          0 :                 if ( pReqArgs->GetItemState( ATTR_VALUE_FORMAT, sal_True, &pItem ) == SFX_ITEM_SET )
    1013                 :            :                 {
    1014                 :            :                     // We have to accomplish this using ApplyAttributes()
    1015                 :            :                     // because we also need the language information to be
    1016                 :            :                     // considered.
    1017                 :            :                     const SfxItemSet& rOldSet =
    1018         [ #  # ]:          0 :                         pTabViewShell->GetSelectionPattern()->GetItemSet();
    1019 [ #  # ][ #  # ]:          0 :                     SfxItemPool* pDocPool = GetViewData()->GetDocument()->GetPool();
    1020         [ #  # ]:          0 :                     SfxItemSet aNewSet( *pDocPool, ATTR_PATTERN_START, ATTR_PATTERN_END );
    1021         [ #  # ]:          0 :                     aNewSet.Put( *pItem );
    1022 [ #  # ][ #  # ]:          0 :                     pTabViewShell->ApplyAttributes( &aNewSet, &rOldSet, sal_True );
    1023                 :            :                 }
    1024                 :            :             }
    1025                 :          0 :             break;
    1026                 :            : 
    1027                 :            :         default:
    1028                 :            :             OSL_FAIL("falscher Slot bei ExecuteEdit");
    1029                 :          0 :             break;
    1030         [ #  # ]:          0 :     }
    1031                 :          0 : }
    1032                 :            : 
    1033                 :            : 
    1034                 :            : //------------------------------------------------------------------
    1035                 :            : 
    1036                 :          0 : void ScFormatShell::ExecuteAlignment( SfxRequest& rReq )
    1037                 :            : {
    1038                 :          0 :     ScTabViewShell* pTabViewShell       = GetViewData()->GetViewShell();
    1039                 :          0 :     SfxBindings&            rBindings   = pViewData->GetBindings();
    1040                 :          0 :     const SfxItemSet*       pSet        = rReq.GetArgs();
    1041                 :          0 :     sal_uInt16                  nSlot       = rReq.GetSlot();
    1042                 :            : 
    1043                 :          0 :     pTabViewShell->HideListBox();   // Autofilter-DropDown-Listbox
    1044                 :            : 
    1045      [ #  #  # ]:          0 :     switch( nSlot )
    1046                 :            :     {
    1047                 :            :         // pseudo slots for Format menu
    1048                 :            :         case SID_ALIGN_ANY_HDEFAULT:
    1049                 :            :         case SID_ALIGN_ANY_LEFT:
    1050                 :            :         case SID_ALIGN_ANY_HCENTER:
    1051                 :            :         case SID_ALIGN_ANY_RIGHT:
    1052                 :            :         case SID_ALIGN_ANY_JUSTIFIED:
    1053         [ #  # ]:          0 :             pTabViewShell->ApplyAttr( SvxHorJustifyItem( lclConvertSlotToHAlign( nSlot ), ATTR_HOR_JUSTIFY ) );
    1054                 :          0 :         break;
    1055                 :            :         case SID_ALIGN_ANY_VDEFAULT:
    1056                 :            :         case SID_ALIGN_ANY_TOP:
    1057                 :            :         case SID_ALIGN_ANY_VCENTER:
    1058                 :            :         case SID_ALIGN_ANY_BOTTOM:
    1059         [ #  # ]:          0 :             pTabViewShell->ApplyAttr( SvxVerJustifyItem( lclConvertSlotToVAlign( nSlot ), ATTR_VER_JUSTIFY ) );
    1060                 :          0 :         break;
    1061                 :            : 
    1062                 :            :         default:
    1063         [ #  # ]:          0 :             if( pSet )
    1064                 :            :             {
    1065                 :          0 :                 const SfxPoolItem* pItem = NULL;
    1066 [ #  # ][ #  # ]:          0 :                 if( pSet->GetItemState(GetPool().GetWhich(nSlot), sal_True, &pItem  ) == SFX_ITEM_SET )
                 [ #  # ]
    1067                 :            :                 {
    1068                 :            : 
    1069   [ #  #  #  # ]:          0 :                     switch ( nSlot )
    1070                 :            :                     {
    1071                 :            :                         case SID_ATTR_ALIGN_HOR_JUSTIFY:
    1072                 :            :                         case SID_ATTR_ALIGN_VER_JUSTIFY:
    1073                 :            :                         case SID_ATTR_ALIGN_INDENT:
    1074                 :            :                         case SID_ATTR_ALIGN_HYPHENATION:
    1075                 :            :                         case SID_ATTR_ALIGN_DEGREES:
    1076                 :            :                         case SID_ATTR_ALIGN_LOCKPOS:
    1077                 :            :                         case SID_ATTR_ALIGN_MARGIN:
    1078                 :            :                         case SID_ATTR_ALIGN_STACKED:
    1079         [ #  # ]:          0 :                             pTabViewShell->ApplyAttr( *pItem );
    1080                 :          0 :                         break;
    1081                 :            : 
    1082                 :            :                         case SID_H_ALIGNCELL:
    1083                 :            :                         {
    1084                 :          0 :                             SvxCellHorJustify eJust = (SvxCellHorJustify)((const SvxHorJustifyItem*)pItem)->GetValue();
    1085                 :            :                             // #i78476# update alignment of text in cell edit mode
    1086         [ #  # ]:          0 :                             pTabViewShell->UpdateInputHandlerCellAdjust( eJust );
    1087 [ #  # ][ #  # ]:          0 :                             pTabViewShell->ApplyAttr( SvxHorJustifyItem( eJust, ATTR_HOR_JUSTIFY ) );
                 [ #  # ]
    1088                 :            :                         }
    1089                 :          0 :                         break;
    1090                 :            :                         case SID_V_ALIGNCELL:
    1091 [ #  # ][ #  # ]:          0 :                             pTabViewShell->ApplyAttr( SvxVerJustifyItem( (SvxCellVerJustify)((const SvxVerJustifyItem*)pItem)->GetValue(), ATTR_VER_JUSTIFY ) );
                 [ #  # ]
    1092                 :          0 :                         break;
    1093                 :            :                         default:
    1094                 :            :                             OSL_FAIL( "ExecuteAlignment: invalid slot" );
    1095                 :          0 :                             return;
    1096                 :            :                     }
    1097                 :            :                 }
    1098                 :            :             }
    1099                 :            :     }
    1100                 :            : 
    1101                 :          0 :     rBindings.Invalidate( SID_ALIGNLEFT );
    1102                 :          0 :     rBindings.Invalidate( SID_ALIGNRIGHT );
    1103                 :          0 :     rBindings.Invalidate( SID_ALIGNCENTERHOR );
    1104                 :          0 :     rBindings.Invalidate( SID_ALIGNBLOCK );
    1105                 :          0 :     rBindings.Invalidate( SID_ALIGNTOP );
    1106                 :          0 :     rBindings.Invalidate( SID_ALIGNBOTTOM );
    1107                 :          0 :     rBindings.Invalidate( SID_ALIGNCENTERVER );
    1108                 :          0 :     rBindings.Invalidate( SID_V_ALIGNCELL );
    1109                 :          0 :     rBindings.Invalidate( SID_H_ALIGNCELL );
    1110                 :            :     // pseudo slots for Format menu
    1111                 :          0 :     rBindings.Invalidate( SID_ALIGN_ANY_HDEFAULT );
    1112                 :          0 :     rBindings.Invalidate( SID_ALIGN_ANY_LEFT );
    1113                 :          0 :     rBindings.Invalidate( SID_ALIGN_ANY_HCENTER );
    1114                 :          0 :     rBindings.Invalidate( SID_ALIGN_ANY_RIGHT );
    1115                 :          0 :     rBindings.Invalidate( SID_ALIGN_ANY_JUSTIFIED );
    1116                 :          0 :     rBindings.Invalidate( SID_ALIGN_ANY_VDEFAULT );
    1117                 :          0 :     rBindings.Invalidate( SID_ALIGN_ANY_TOP );
    1118                 :          0 :     rBindings.Invalidate( SID_ALIGN_ANY_VCENTER );
    1119                 :          0 :     rBindings.Invalidate( SID_ALIGN_ANY_BOTTOM );
    1120                 :          0 :     rBindings.Update();
    1121                 :            : 
    1122         [ #  # ]:          0 :     if( ! rReq.IsAPI() )
    1123                 :          0 :         rReq.Done();
    1124                 :            : }
    1125                 :            : 
    1126                 :          0 : void ScFormatShell::ExecuteTextAttr( SfxRequest& rReq )
    1127                 :            : {
    1128                 :          0 :     ScTabViewShell* pTabViewShell       = GetViewData()->GetViewShell();
    1129                 :          0 :     SfxBindings&            rBindings   = pViewData->GetBindings();
    1130                 :          0 :     const ScPatternAttr*    pAttrs      = pTabViewShell->GetSelectionPattern();
    1131                 :          0 :     const SfxItemSet*       pSet        = rReq.GetArgs();
    1132                 :          0 :     sal_uInt16                  nSlot       = rReq.GetSlot();
    1133                 :          0 :     SfxAllItemSet*          pNewSet = 0;
    1134                 :            : 
    1135                 :          0 :     pTabViewShell->HideListBox();                   // Autofilter-DropDown-Listbox
    1136                 :            : 
    1137 [ #  # ][ #  # ]:          0 :     if (  (nSlot == SID_ATTR_CHAR_WEIGHT)
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
    1138                 :            :         ||(nSlot == SID_ATTR_CHAR_POSTURE)
    1139                 :            :         ||(nSlot == SID_ATTR_CHAR_UNDERLINE)
    1140                 :            :         ||(nSlot == SID_ULINE_VAL_NONE)
    1141                 :            :         ||(nSlot == SID_ULINE_VAL_SINGLE)
    1142                 :            :         ||(nSlot == SID_ULINE_VAL_DOUBLE)
    1143                 :            :         ||(nSlot == SID_ULINE_VAL_DOTTED) )
    1144                 :            :     {
    1145         [ #  # ]:          0 :         pNewSet = new SfxAllItemSet( GetPool() );
    1146                 :            : 
    1147   [ #  #  #  #  :          0 :         switch ( nSlot )
                   #  # ]
    1148                 :            :         {
    1149                 :            :             case SID_ATTR_CHAR_WEIGHT:
    1150                 :            :             {
    1151                 :            :                 // #i78017 establish the same behaviour as in Writer
    1152                 :          0 :                 sal_uInt8 nScript = SCRIPTTYPE_LATIN | SCRIPTTYPE_ASIAN | SCRIPTTYPE_COMPLEX;
    1153                 :            : 
    1154                 :          0 :                 SfxItemPool& rPool = GetPool();
    1155         [ #  # ]:          0 :                 SvxScriptSetItem aSetItem( nSlot, rPool );
    1156         [ #  # ]:          0 :                 if ( pSet )
    1157 [ #  # ][ #  # ]:          0 :                     aSetItem.PutItemForScriptType( nScript, pSet->Get( ATTR_FONT_WEIGHT ) );
    1158                 :            :                 else
    1159                 :            :                 {
    1160                 :            :                     //  toggle manually
    1161                 :            : 
    1162                 :          0 :                     FontWeight eWeight = WEIGHT_BOLD;
    1163         [ #  # ]:          0 :                     SvxScriptSetItem aOldSetItem( nSlot, rPool );
    1164         [ #  # ]:          0 :                     aOldSetItem.GetItemSet().Put( pAttrs->GetItemSet(), false );
    1165         [ #  # ]:          0 :                     const SfxPoolItem* pCore = aOldSetItem.GetItemOfScript( nScript );
    1166 [ #  # ][ #  # ]:          0 :                     if ( pCore && ((const SvxWeightItem*)pCore)->GetWeight() == WEIGHT_BOLD )
                 [ #  # ]
    1167                 :          0 :                         eWeight = WEIGHT_NORMAL;
    1168                 :            : 
    1169 [ #  # ][ #  # ]:          0 :                     aSetItem.PutItemForScriptType( nScript, SvxWeightItem( eWeight, ATTR_FONT_WEIGHT ) );
         [ #  # ][ #  # ]
    1170                 :            :                 }
    1171         [ #  # ]:          0 :                 pTabViewShell->ApplyUserItemSet( aSetItem.GetItemSet() );
    1172 [ #  # ][ #  # ]:          0 :                 pNewSet->Put( aSetItem.GetItemSet(), false );
    1173                 :            :             }
    1174                 :          0 :             break;
    1175                 :            : 
    1176                 :            :             case SID_ATTR_CHAR_POSTURE:
    1177                 :            :             {
    1178                 :            :                 // #i78017 establish the same behaviour as in Writer
    1179                 :          0 :                 sal_uInt8 nScript = SCRIPTTYPE_LATIN | SCRIPTTYPE_ASIAN | SCRIPTTYPE_COMPLEX;
    1180                 :            : 
    1181                 :          0 :                 SfxItemPool& rPool = GetPool();
    1182         [ #  # ]:          0 :                 SvxScriptSetItem aSetItem( nSlot, rPool );
    1183         [ #  # ]:          0 :                 if ( pSet )
    1184 [ #  # ][ #  # ]:          0 :                     aSetItem.PutItemForScriptType( nScript, pSet->Get( ATTR_FONT_POSTURE ) );
    1185                 :            :                 else
    1186                 :            :                 {
    1187                 :            :                     //  toggle manually
    1188                 :            : 
    1189                 :          0 :                     FontItalic eItalic = ITALIC_NORMAL;
    1190         [ #  # ]:          0 :                     SvxScriptSetItem aOldSetItem( nSlot, rPool );
    1191         [ #  # ]:          0 :                     aOldSetItem.GetItemSet().Put( pAttrs->GetItemSet(), false );
    1192         [ #  # ]:          0 :                     const SfxPoolItem* pCore = aOldSetItem.GetItemOfScript( nScript );
    1193 [ #  # ][ #  # ]:          0 :                     if ( pCore && ((const SvxPostureItem*)pCore)->GetPosture() == ITALIC_NORMAL )
                 [ #  # ]
    1194                 :          0 :                         eItalic = ITALIC_NONE;
    1195                 :            : 
    1196 [ #  # ][ #  # ]:          0 :                     aSetItem.PutItemForScriptType( nScript, SvxPostureItem( eItalic, ATTR_FONT_POSTURE ) );
         [ #  # ][ #  # ]
    1197                 :            :                 }
    1198         [ #  # ]:          0 :                 pTabViewShell->ApplyUserItemSet( aSetItem.GetItemSet() );
    1199 [ #  # ][ #  # ]:          0 :                 pNewSet->Put( aSetItem.GetItemSet(), false );
    1200                 :            :             }
    1201                 :          0 :             break;
    1202                 :            : 
    1203                 :            :             case SID_ATTR_CHAR_UNDERLINE:
    1204                 :            :                 {
    1205                 :            :                     FontUnderline       eUnderline;
    1206                 :            : 
    1207         [ #  # ]:          0 :                     if( pSet )
    1208                 :            :                     {
    1209                 :          0 :                         const SfxPoolItem& rUnderline = pSet->Get( ATTR_FONT_UNDERLINE );
    1210                 :            : 
    1211         [ #  # ]:          0 :                         if( rUnderline.ISA(SvxUnderlineItem) )
    1212                 :            :                         {
    1213                 :          0 :                             pTabViewShell->ApplyAttr( rUnderline );
    1214                 :          0 :                             pNewSet->Put( rUnderline,rUnderline.Which() );
    1215                 :            :                         }
    1216         [ #  # ]:          0 :                         else if ( rUnderline.ISA(SvxTextLineItem) )
    1217                 :            :                         {
    1218                 :            :                             // #i106580# also allow SvxTextLineItem (base class of SvxUnderlineItem)
    1219                 :          0 :                             const SvxTextLineItem& rTextLineItem = static_cast<const SvxTextLineItem&>(rUnderline);
    1220         [ #  # ]:          0 :                             SvxUnderlineItem aNewItem( rTextLineItem.GetLineStyle(), rTextLineItem.Which() );
    1221                 :          0 :                             aNewItem.SetColor( rTextLineItem.GetColor() );
    1222         [ #  # ]:          0 :                             pTabViewShell->ApplyAttr( aNewItem );
    1223 [ #  # ][ #  # ]:          0 :                             pNewSet->Put( aNewItem, aNewItem.Which() );
    1224                 :            :                         }
    1225                 :            :                     }
    1226                 :            :                     else
    1227                 :            :                     {
    1228                 :            :                         SvxUnderlineItem aUnderline( (const SvxUnderlineItem&)
    1229                 :            :                                                         pAttrs->GetItem(
    1230 [ #  # ][ #  # ]:          0 :                                                             ATTR_FONT_UNDERLINE ) );
    1231                 :          0 :                         eUnderline = (UNDERLINE_NONE != aUnderline.GetLineStyle())
    1232                 :            :                                     ? UNDERLINE_NONE
    1233                 :          0 :                                     : UNDERLINE_SINGLE;
    1234                 :          0 :                         aUnderline.SetLineStyle( eUnderline );
    1235         [ #  # ]:          0 :                         pTabViewShell->ApplyAttr( aUnderline );
    1236 [ #  # ][ #  # ]:          0 :                         pNewSet->Put( aUnderline,aUnderline.Which() );
    1237                 :            :                     }
    1238                 :            :                 }
    1239                 :          0 :                 break;
    1240                 :            : 
    1241                 :            :             case SID_ULINE_VAL_NONE:
    1242         [ #  # ]:          0 :                 pTabViewShell->ApplyAttr( SvxUnderlineItem( UNDERLINE_NONE, ATTR_FONT_UNDERLINE ) );
    1243                 :          0 :                 break;
    1244                 :            :             case SID_ULINE_VAL_SINGLE:      // Toggles
    1245                 :            :             case SID_ULINE_VAL_DOUBLE:
    1246                 :            :             case SID_ULINE_VAL_DOTTED:
    1247                 :            :                 {
    1248                 :            :                     FontUnderline eOld = ((const SvxUnderlineItem&)
    1249                 :          0 :                                             pAttrs->GetItem(ATTR_FONT_UNDERLINE)).GetLineStyle();
    1250                 :          0 :                     FontUnderline eNew = eOld;
    1251   [ #  #  #  # ]:          0 :                     switch (nSlot)
    1252                 :            :                     {
    1253                 :            :                         case SID_ULINE_VAL_SINGLE:
    1254                 :          0 :                             eNew = ( eOld == UNDERLINE_SINGLE ) ? UNDERLINE_NONE : UNDERLINE_SINGLE;
    1255                 :          0 :                             break;
    1256                 :            :                         case SID_ULINE_VAL_DOUBLE:
    1257         [ #  # ]:          0 :                             eNew = ( eOld == UNDERLINE_DOUBLE ) ? UNDERLINE_NONE : UNDERLINE_DOUBLE;
    1258                 :          0 :                             break;
    1259                 :            :                         case SID_ULINE_VAL_DOTTED:
    1260         [ #  # ]:          0 :                             eNew = ( eOld == UNDERLINE_DOTTED ) ? UNDERLINE_NONE : UNDERLINE_DOTTED;
    1261                 :          0 :                             break;
    1262                 :            :                     }
    1263         [ #  # ]:          0 :                     pTabViewShell->ApplyAttr( SvxUnderlineItem( eNew, ATTR_FONT_UNDERLINE ) );
    1264                 :            :                 }
    1265                 :          0 :                 break;
    1266                 :            : 
    1267                 :            :             default:
    1268                 :          0 :                 break;
    1269                 :            :         }
    1270                 :          0 :         rBindings.Invalidate( nSlot );
    1271                 :            :     }
    1272                 :            :     else
    1273                 :            :     {
    1274                 :            :         /*
    1275                 :            :          * "Selbstgemachte" RadioButton-Funktionalitaet
    1276                 :            :          * Beim Toggle gibt es den Standard-State, d.h. kein
    1277                 :            :          * Button ist gedrueckt
    1278                 :            :          */
    1279                 :            : 
    1280         [ #  # ]:          0 :         const SfxItemSet&        rAttrSet   = pTabViewShell->GetSelectionPattern()->GetItemSet();
    1281                 :          0 :         const SfxPoolItem*       pItem       = NULL;
    1282                 :          0 :         const SvxHorJustifyItem* pHorJustify = NULL;
    1283                 :          0 :         const SvxVerJustifyItem* pVerJustify = NULL;
    1284                 :          0 :         SvxCellHorJustify        eHorJustify = SVX_HOR_JUSTIFY_STANDARD;
    1285                 :          0 :         SvxCellVerJustify        eVerJustify = SVX_VER_JUSTIFY_STANDARD;
    1286                 :            : 
    1287 [ #  # ][ #  # ]:          0 :         if (rAttrSet.GetItemState(ATTR_HOR_JUSTIFY, sal_True,&pItem ) == SFX_ITEM_SET)
    1288                 :            :         {
    1289                 :          0 :             pHorJustify = (const SvxHorJustifyItem*)pItem;
    1290                 :          0 :             eHorJustify = SvxCellHorJustify( pHorJustify->GetValue() );
    1291                 :            :         }
    1292 [ #  # ][ #  # ]:          0 :         if (rAttrSet.GetItemState(ATTR_VER_JUSTIFY, sal_True,&pItem ) == SFX_ITEM_SET)
    1293                 :            :         {
    1294                 :          0 :             pVerJustify = (const SvxVerJustifyItem*)pItem;
    1295                 :          0 :             eVerJustify = SvxCellVerJustify( pVerJustify->GetValue() );
    1296                 :            :         }
    1297                 :            : 
    1298   [ #  #  #  #  :          0 :         switch ( nSlot )
             #  #  #  # ]
    1299                 :            :         {
    1300                 :            :             case SID_ALIGNLEFT:
    1301                 :          0 :                 rReq.SetSlot( SID_H_ALIGNCELL );
    1302                 :            :                 rReq.AppendItem( SvxHorJustifyItem(
    1303                 :            :                     !pHorJustify || (eHorJustify != SVX_HOR_JUSTIFY_LEFT) ?
    1304 [ #  # ][ #  # ]:          0 :                     SVX_HOR_JUSTIFY_LEFT : SVX_HOR_JUSTIFY_STANDARD, SID_H_ALIGNCELL ) );
         [ #  # ][ #  # ]
                 [ #  # ]
    1305 [ #  # ][ #  # ]:          0 :                 ExecuteSlot( rReq, GetInterface() );
    1306                 :            :                 return;
    1307                 :            :                 //break;
    1308                 :            : 
    1309                 :            :             case SID_ALIGNRIGHT:
    1310                 :          0 :                 rReq.SetSlot( SID_H_ALIGNCELL );
    1311                 :            :                 rReq.AppendItem( SvxHorJustifyItem(
    1312                 :            :                     !pHorJustify || (eHorJustify != SVX_HOR_JUSTIFY_RIGHT) ?
    1313 [ #  # ][ #  # ]:          0 :                     SVX_HOR_JUSTIFY_RIGHT : SVX_HOR_JUSTIFY_STANDARD, SID_H_ALIGNCELL ) );
         [ #  # ][ #  # ]
                 [ #  # ]
    1314 [ #  # ][ #  # ]:          0 :                 ExecuteSlot( rReq, GetInterface() );
    1315                 :            :                 return;
    1316                 :            :                 //break;
    1317                 :            : 
    1318                 :            :             case SID_ALIGNCENTERHOR:
    1319                 :          0 :                 rReq.SetSlot( SID_H_ALIGNCELL );
    1320                 :            :                 rReq.AppendItem( SvxHorJustifyItem(
    1321                 :            :                     !pHorJustify || (eHorJustify != SVX_HOR_JUSTIFY_CENTER) ?
    1322 [ #  # ][ #  # ]:          0 :                     SVX_HOR_JUSTIFY_CENTER : SVX_HOR_JUSTIFY_STANDARD, SID_H_ALIGNCELL ) );
         [ #  # ][ #  # ]
                 [ #  # ]
    1323 [ #  # ][ #  # ]:          0 :                 ExecuteSlot( rReq, GetInterface() );
    1324                 :            :                 return;
    1325                 :            :                 //break;
    1326                 :            : 
    1327                 :            :             case SID_ALIGNBLOCK:
    1328                 :          0 :                 rReq.SetSlot( SID_H_ALIGNCELL );
    1329                 :            :                 rReq.AppendItem( SvxHorJustifyItem(
    1330                 :            :                     !pHorJustify || (eHorJustify != SVX_HOR_JUSTIFY_BLOCK) ?
    1331 [ #  # ][ #  # ]:          0 :                     SVX_HOR_JUSTIFY_BLOCK : SVX_HOR_JUSTIFY_STANDARD, SID_H_ALIGNCELL ) );
         [ #  # ][ #  # ]
                 [ #  # ]
    1332 [ #  # ][ #  # ]:          0 :                 ExecuteSlot( rReq, GetInterface() );
    1333                 :            :                 return;
    1334                 :            :                 //break;
    1335                 :            : 
    1336                 :            :             case SID_ALIGNTOP:
    1337                 :          0 :                 rReq.SetSlot( SID_V_ALIGNCELL );
    1338                 :            :                 rReq.AppendItem( SvxVerJustifyItem(
    1339                 :            :                     !pVerJustify || (eVerJustify != SVX_VER_JUSTIFY_TOP) ?
    1340 [ #  # ][ #  # ]:          0 :                     SVX_VER_JUSTIFY_TOP : SVX_VER_JUSTIFY_STANDARD, SID_V_ALIGNCELL ) );
         [ #  # ][ #  # ]
                 [ #  # ]
    1341 [ #  # ][ #  # ]:          0 :                 ExecuteSlot( rReq, GetInterface() );
    1342                 :            :                 return;
    1343                 :            :                 //break;
    1344                 :            : 
    1345                 :            :             case SID_ALIGNBOTTOM:
    1346                 :          0 :                 rReq.SetSlot( SID_V_ALIGNCELL );
    1347                 :            :                 rReq.AppendItem( SvxVerJustifyItem(
    1348                 :            :                     !pVerJustify || (eVerJustify != SVX_VER_JUSTIFY_BOTTOM) ?
    1349 [ #  # ][ #  # ]:          0 :                     SVX_VER_JUSTIFY_BOTTOM : SVX_VER_JUSTIFY_STANDARD, SID_V_ALIGNCELL ) );
         [ #  # ][ #  # ]
                 [ #  # ]
    1350 [ #  # ][ #  # ]:          0 :                 ExecuteSlot( rReq, GetInterface() );
    1351                 :            :                 return;
    1352                 :            :                 //break;
    1353                 :            : 
    1354                 :            :             case SID_ALIGNCENTERVER:
    1355                 :          0 :                 rReq.SetSlot( SID_V_ALIGNCELL );
    1356                 :            :                 rReq.AppendItem( SvxVerJustifyItem(
    1357                 :            :                     !pVerJustify || (eVerJustify != SVX_VER_JUSTIFY_CENTER) ?
    1358 [ #  # ][ #  # ]:          0 :                     SVX_VER_JUSTIFY_CENTER : SVX_VER_JUSTIFY_STANDARD, SID_V_ALIGNCELL ) );
         [ #  # ][ #  # ]
                 [ #  # ]
    1359 [ #  # ][ #  # ]:          0 :                 ExecuteSlot( rReq, GetInterface() );
    1360                 :            :                 return;
    1361                 :            :                 //break;
    1362                 :            : 
    1363                 :            :             default:
    1364                 :          0 :             break;
    1365                 :            :         }
    1366                 :            : 
    1367                 :            :     }
    1368                 :            : 
    1369                 :          0 :     rBindings.Update();
    1370                 :            : 
    1371         [ #  # ]:          0 :     if( pNewSet )
    1372                 :            :     {
    1373                 :          0 :         rReq.Done( *pNewSet );
    1374         [ #  # ]:          0 :         delete pNewSet;
    1375                 :            :     }
    1376                 :            :     else
    1377                 :            :     {
    1378                 :          0 :         rReq.Done();
    1379                 :            :     }
    1380                 :            : 
    1381                 :            : }
    1382                 :            : 
    1383                 :            : //------------------------------------------------------------------
    1384                 :            : 
    1385                 :          0 : void ScFormatShell::ExecuteAttr( SfxRequest& rReq )
    1386                 :            : {
    1387                 :          0 :     ScTabViewShell* pTabViewShell       = GetViewData()->GetViewShell();
    1388                 :          0 :     SfxBindings&        rBindings = pViewData->GetBindings();
    1389                 :          0 :     const SfxItemSet*   pNewAttrs = rReq.GetArgs();
    1390                 :          0 :     sal_uInt16 nSlot = rReq.GetSlot();
    1391                 :            : 
    1392                 :          0 :     pTabViewShell->HideListBox();                   // Autofilter-DropDown-Listbox
    1393         [ #  # ]:          0 :     if ( !pNewAttrs )
    1394                 :            :     {
    1395   [ #  #  #  # ]:          0 :         switch ( nSlot )
    1396                 :            :         {
    1397                 :            :             case SID_ATTR_CHAR_COLOR:
    1398                 :            :             case SID_ATTR_CHAR_FONT:
    1399                 :            :             case SID_ATTR_CHAR_FONTHEIGHT:
    1400                 :          0 :                 pTabViewShell->ExecuteCellFormatDlg( rReq, TP_FONT );       // wenn ToolBar vertikal
    1401                 :          0 :                 break;
    1402                 :            : 
    1403                 :            :             case SID_BACKGROUND_COLOR:
    1404                 :            :                 {
    1405                 :            :                     SvxBrushItem aBrushItem( (const SvxBrushItem&)
    1406 [ #  # ][ #  # ]:          0 :                                      pTabViewShell->GetSelectionPattern()->GetItem( ATTR_BACKGROUND ) );
                 [ #  # ]
    1407                 :          0 :                     aBrushItem.SetColor( COL_TRANSPARENT );
    1408 [ #  # ][ #  # ]:          0 :                     pTabViewShell->ApplyAttr( aBrushItem );
    1409                 :            :                 }
    1410                 :          0 :                 break;
    1411                 :            : 
    1412                 :            :             case SID_ATTR_ALIGN_LINEBREAK:                  // ohne Parameter als Toggle
    1413                 :            :                 {
    1414         [ #  # ]:          0 :                     const ScPatternAttr* pAttrs = pTabViewShell->GetSelectionPattern();
    1415         [ #  # ]:          0 :                     bool bOld = ((const SfxBoolItem&)pAttrs->GetItem(ATTR_LINEBREAK)).GetValue();
    1416         [ #  # ]:          0 :                     SfxBoolItem aBreakItem( ATTR_LINEBREAK, !bOld );
    1417         [ #  # ]:          0 :                     pTabViewShell->ApplyAttr( aBreakItem );
    1418                 :            : 
    1419         [ #  # ]:          0 :                     SfxAllItemSet aNewSet( GetPool() );
    1420         [ #  # ]:          0 :                     aNewSet.Put( aBreakItem,aBreakItem.Which() );
    1421         [ #  # ]:          0 :                     rReq.Done( aNewSet );
    1422                 :            : 
    1423 [ #  # ][ #  # ]:          0 :                     rBindings.Invalidate( nSlot );
                 [ #  # ]
    1424                 :            :                 }
    1425                 :          0 :                 break;
    1426                 :            :         }
    1427                 :            :     }
    1428                 :            :     else
    1429                 :            :     {
    1430   [ #  #  #  #  :          0 :         switch ( nSlot )
             #  #  #  #  
                      # ]
    1431                 :            :         {
    1432                 :            :             case SID_ATTR_CHAR_OVERLINE:
    1433                 :            :             case SID_ATTR_CHAR_STRIKEOUT:
    1434                 :            :             case SID_ATTR_ALIGN_LINEBREAK:
    1435                 :            :             case SID_ATTR_CHAR_COLOR:
    1436                 :            :             case SID_ATTR_CHAR_CONTOUR:
    1437                 :            :             case SID_ATTR_CHAR_SHADOWED:
    1438                 :            :             case SID_ATTR_CHAR_RELIEF:
    1439                 :            :             case SID_SCATTR_PROTECTION :
    1440                 :          0 :                 pTabViewShell->ApplyAttr( pNewAttrs->Get( pNewAttrs->GetPool()->GetWhich( nSlot ) ) );
    1441                 :          0 :                 rBindings.Invalidate( nSlot );
    1442                 :          0 :                 rBindings.Update( nSlot );
    1443                 :          0 :                 break;
    1444                 :            : 
    1445                 :            :             case SID_ATTR_CHAR_FONT:
    1446                 :            :             case SID_ATTR_CHAR_FONTHEIGHT:
    1447                 :            :                 {
    1448                 :            :                     // #i78017 establish the same behaviour as in Writer
    1449                 :          0 :                     sal_uInt8 nScript = SCRIPTTYPE_LATIN | SCRIPTTYPE_ASIAN | SCRIPTTYPE_COMPLEX;
    1450         [ #  # ]:          0 :                     if (nSlot == SID_ATTR_CHAR_FONT)
    1451         [ #  # ]:          0 :                         nScript = pTabViewShell->GetSelectionScriptType();
    1452                 :            : 
    1453                 :          0 :                     SfxItemPool& rPool = GetPool();
    1454         [ #  # ]:          0 :                     SvxScriptSetItem aSetItem( nSlot, rPool );
    1455         [ #  # ]:          0 :                     sal_uInt16 nWhich = rPool.GetWhich( nSlot );
    1456 [ #  # ][ #  # ]:          0 :                     aSetItem.PutItemForScriptType( nScript, pNewAttrs->Get( nWhich ) );
    1457                 :            : 
    1458         [ #  # ]:          0 :                     pTabViewShell->ApplyUserItemSet( aSetItem.GetItemSet() );
    1459                 :            : 
    1460         [ #  # ]:          0 :                     rBindings.Invalidate( nSlot );
    1461 [ #  # ][ #  # ]:          0 :                     rBindings.Update( nSlot );
    1462                 :            :                 }
    1463                 :          0 :                 break;
    1464                 :            : 
    1465                 :            :             case SID_FRAME_LINESTYLE:
    1466                 :            :                 {
    1467                 :            :                     // Default-Linie aktualisieren
    1468                 :            :                     const ::editeng::SvxBorderLine* pLine =
    1469                 :            :                             ((const SvxLineItem&)
    1470                 :          0 :                                 pNewAttrs->Get( SID_FRAME_LINESTYLE )).
    1471                 :          0 :                                 GetLine();
    1472                 :            : 
    1473         [ #  # ]:          0 :                     if ( pLine )
    1474                 :            :                     {
    1475                 :          0 :                         ::editeng::SvxBorderLine* pDefLine = pTabViewShell->GetDefaultFrameLine();
    1476                 :            : 
    1477         [ #  # ]:          0 :                         if ( pDefLine )
    1478                 :            :                         {
    1479                 :            :                             pDefLine->SetBorderLineStyle(
    1480                 :          0 :                                     pLine->GetBorderLineStyle());
    1481                 :          0 :                             pDefLine->SetWidth( pLine->GetWidth( ) );
    1482                 :          0 :                             pTabViewShell->SetSelectionFrameLines( pDefLine, false );
    1483                 :            :                         }
    1484                 :            :                         else
    1485                 :            :                         {
    1486                 :          0 :                             pTabViewShell->SetDefaultFrameLine( pLine );
    1487                 :          0 :                             pTabViewShell->GetDefaultFrameLine()->SetColor( COL_BLACK );
    1488                 :          0 :                             pTabViewShell->SetSelectionFrameLines( pLine, false );
    1489                 :            :                         }
    1490                 :            :                     }
    1491                 :            :                     else
    1492                 :            :                     {
    1493                 :          0 :                         Color           aColorBlack( COL_BLACK );
    1494                 :            :                         ::editeng::SvxBorderLine aDefLine( &aColorBlack, 20,
    1495         [ #  # ]:          0 :                                 table::BorderLineStyle::SOLID );
    1496         [ #  # ]:          0 :                         pTabViewShell->SetDefaultFrameLine( &aDefLine );
    1497         [ #  # ]:          0 :                         pTabViewShell->SetSelectionFrameLines( NULL, false );
    1498                 :            :                     }
    1499                 :            :                 }
    1500                 :          0 :                 break;
    1501                 :            : 
    1502                 :            :             case SID_FRAME_LINECOLOR:
    1503                 :            :                 {
    1504                 :          0 :                     ::editeng::SvxBorderLine*  pDefLine = pTabViewShell->GetDefaultFrameLine();
    1505                 :            :                     const Color&    rColor = ((const SvxColorItem&)
    1506                 :          0 :                                         pNewAttrs->Get( SID_FRAME_LINECOLOR )).
    1507                 :          0 :                                             GetValue();
    1508                 :            : 
    1509                 :            :                     // Default-Linie aktualisieren
    1510         [ #  # ]:          0 :                     if ( pDefLine )
    1511                 :            :                     {
    1512                 :          0 :                         pDefLine->SetColor( rColor );
    1513                 :          0 :                         pTabViewShell->SetSelectionFrameLines( pDefLine, sal_True );
    1514                 :            :                     }
    1515                 :            :                     else
    1516                 :            :                     {
    1517                 :            :                         ::editeng::SvxBorderLine aDefLine( &rColor, 20,
    1518         [ #  # ]:          0 :                                 table::BorderLineStyle::SOLID );
    1519         [ #  # ]:          0 :                         pTabViewShell->SetDefaultFrameLine( &aDefLine );
    1520         [ #  # ]:          0 :                         pTabViewShell->SetSelectionFrameLines( &aDefLine, false );
    1521                 :            :                     }
    1522                 :            :                 }
    1523                 :          0 :                 break;
    1524                 :            : 
    1525                 :            :             case SID_ATTR_BORDER_OUTER:
    1526                 :            :             case SID_ATTR_BORDER:
    1527                 :            :                 {
    1528                 :          0 :                     ::editeng::SvxBorderLine*          pDefLine = pTabViewShell->GetDefaultFrameLine();
    1529         [ #  # ]:          0 :                     const ScPatternAttr*    pOldAttrs = pTabViewShell->GetSelectionPattern();
    1530         [ #  # ]:          0 :                     ScDocument*             pDoc = GetViewData()->GetDocument();
    1531                 :            :                     SfxItemSet*             pOldSet =
    1532                 :            :                                                 new SfxItemSet(
    1533         [ #  # ]:          0 :                                                         *(pDoc->GetPool()),
    1534                 :            :                                                         ATTR_PATTERN_START,
    1535 [ #  # ][ #  # ]:          0 :                                                         ATTR_PATTERN_END );
    1536                 :            :                     SfxItemSet*             pNewSet =
    1537                 :            :                                                 new SfxItemSet(
    1538         [ #  # ]:          0 :                                                         *(pDoc->GetPool()),
    1539                 :            :                                                         ATTR_PATTERN_START,
    1540 [ #  # ][ #  # ]:          0 :                                                         ATTR_PATTERN_END );
    1541                 :            :                     const SfxPoolItem&      rBorderAttr =
    1542                 :          0 :                                                 pOldAttrs->GetItemSet().
    1543         [ #  # ]:          0 :                                                     Get( ATTR_BORDER );
    1544                 :            : 
    1545                 :            :                     // Border-Items vom Controller auswerten:
    1546                 :          0 :                     const SfxPoolItem* pItem = 0;
    1547                 :            : 
    1548 [ #  # ][ #  # ]:          0 :                     if ( pNewAttrs->GetItemState( ATTR_BORDER, sal_True, &pItem )
    1549                 :            :                          == SFX_ITEM_SET )
    1550                 :            :                     {
    1551                 :            :                         //  The SvxFrameToolBoxControl toolbox controller uses a default
    1552                 :            :                         //  SvxBorderLine (all widths 0) to mark the lines that should be set.
    1553                 :            :                         //  Macro recording uses a SvxBoxItem with the real values (OutWidth > 0)
    1554                 :            :                         //  or NULL pointers for no lines.
    1555                 :            :                         //  -> Substitute existing lines with pDefLine only if widths are 0.
    1556         [ #  # ]:          0 :                         SvxBoxItem aBoxItem ( *(const SvxBoxItem*)pItem );
    1557 [ #  # ][ #  # ]:          0 :                         if ( aBoxItem.GetTop() && aBoxItem.GetTop()->GetOutWidth() == 0 )
         [ #  # ][ #  # ]
    1558         [ #  # ]:          0 :                             aBoxItem.SetLine( pDefLine, BOX_LINE_TOP );
    1559 [ #  # ][ #  # ]:          0 :                         if ( aBoxItem.GetBottom() && aBoxItem.GetBottom()->GetOutWidth() == 0 )
         [ #  # ][ #  # ]
    1560         [ #  # ]:          0 :                             aBoxItem.SetLine( pDefLine, BOX_LINE_BOTTOM );
    1561 [ #  # ][ #  # ]:          0 :                         if ( aBoxItem.GetLeft() && aBoxItem.GetLeft()->GetOutWidth() == 0 )
         [ #  # ][ #  # ]
    1562         [ #  # ]:          0 :                             aBoxItem.SetLine( pDefLine, BOX_LINE_LEFT );
    1563 [ #  # ][ #  # ]:          0 :                         if ( aBoxItem.GetRight() && aBoxItem.GetRight()->GetOutWidth() == 0 )
         [ #  # ][ #  # ]
    1564         [ #  # ]:          0 :                             aBoxItem.SetLine( pDefLine, BOX_LINE_RIGHT );
    1565         [ #  # ]:          0 :                         pNewSet->Put( aBoxItem );
    1566 [ #  # ][ #  # ]:          0 :                         rReq.AppendItem( aBoxItem );
    1567                 :            :                     }
    1568                 :            : 
    1569 [ #  # ][ #  # ]:          0 :                     if ( pNewAttrs->GetItemState( ATTR_BORDER_INNER, sal_True, &pItem )
    1570                 :            :                          == SFX_ITEM_SET )
    1571                 :            :                     {
    1572         [ #  # ]:          0 :                         SvxBoxInfoItem aBoxInfoItem( *(const SvxBoxInfoItem*)pItem );
    1573 [ #  # ][ #  # ]:          0 :                         if ( aBoxInfoItem.GetHori() && aBoxInfoItem.GetHori()->GetOutWidth() == 0 )
         [ #  # ][ #  # ]
    1574         [ #  # ]:          0 :                             aBoxInfoItem.SetLine( pDefLine, BOXINFO_LINE_HORI );
    1575 [ #  # ][ #  # ]:          0 :                         if ( aBoxInfoItem.GetVert() && aBoxInfoItem.GetVert()->GetOutWidth() == 0 )
         [ #  # ][ #  # ]
    1576         [ #  # ]:          0 :                             aBoxInfoItem.SetLine( pDefLine, BOXINFO_LINE_VERT );
    1577         [ #  # ]:          0 :                         pNewSet->Put( aBoxInfoItem );
    1578 [ #  # ][ #  # ]:          0 :                         rReq.AppendItem( aBoxInfoItem );
    1579                 :            :                     }
    1580                 :            :                     else
    1581                 :            :                     {
    1582         [ #  # ]:          0 :                         SvxBoxInfoItem aBoxInfoItem( ATTR_BORDER_INNER );
    1583         [ #  # ]:          0 :                         aBoxInfoItem.SetLine( NULL, BOXINFO_LINE_HORI );
    1584         [ #  # ]:          0 :                         aBoxInfoItem.SetLine( NULL, BOXINFO_LINE_VERT );
    1585 [ #  # ][ #  # ]:          0 :                         pNewSet->Put( aBoxInfoItem );
    1586                 :            :                     }
    1587                 :            : 
    1588         [ #  # ]:          0 :                     pOldSet->Put( rBorderAttr );
    1589         [ #  # ]:          0 :                     pTabViewShell->ApplyAttributes( pNewSet, pOldSet );
    1590                 :            : 
    1591 [ #  # ][ #  # ]:          0 :                     delete pOldSet;
    1592 [ #  # ][ #  # ]:          0 :                     delete pNewSet;
    1593                 :            :                 }
    1594                 :          0 :                 break;
    1595                 :            : 
    1596                 :            :             // ATTR_BACKGROUND (=SID_ATTR_BRUSH) muss ueber zwei IDs
    1597                 :            :             // gesetzt werden:
    1598                 :            :             case SID_BACKGROUND_COLOR:
    1599                 :            :                 {
    1600                 :            :                     const SvxColorItem  rNewColorItem = (const SvxColorItem&)
    1601 [ #  # ][ #  # ]:          0 :                                             pNewAttrs->Get( SID_BACKGROUND_COLOR );
    1602                 :            : 
    1603                 :            :                     SvxBrushItem        aBrushItem( (const SvxBrushItem&)
    1604                 :            :                                             pTabViewShell->GetSelectionPattern()->
    1605 [ #  # ][ #  # ]:          0 :                                                 GetItem( ATTR_BACKGROUND ) );
                 [ #  # ]
    1606                 :            : 
    1607                 :          0 :                     aBrushItem.SetColor( rNewColorItem.GetValue() );
    1608                 :            : 
    1609 [ #  # ][ #  # ]:          0 :                     pTabViewShell->ApplyAttr( aBrushItem );
                 [ #  # ]
    1610                 :            :                 }
    1611                 :          0 :                 break;
    1612                 :            : 
    1613                 :            :                 case SID_ATTR_BRUSH:
    1614                 :            :                 {
    1615                 :            :                     SvxBrushItem        aBrushItem( (const SvxBrushItem&)
    1616                 :            :                                             pTabViewShell->GetSelectionPattern()->
    1617 [ #  # ][ #  # ]:          0 :                                                 GetItem( ATTR_BACKGROUND ) );
                 [ #  # ]
    1618                 :            :                     const SvxBrushItem& rNewBrushItem = (const SvxBrushItem&)
    1619 [ #  # ][ #  # ]:          0 :                                             pNewAttrs->Get( GetPool().GetWhich(nSlot) );
    1620                 :          0 :                     aBrushItem.SetColor(rNewBrushItem.GetColor());
    1621 [ #  # ][ #  # ]:          0 :                     pTabViewShell->ApplyAttr( aBrushItem );
    1622                 :            :                 }
    1623                 :          0 :                 break;
    1624                 :            : 
    1625                 :            :             case SID_ATTR_BORDER_SHADOW:
    1626                 :            :                 {
    1627                 :            :                     const SvxShadowItem& rNewShadowItem = (const SvxShadowItem&)
    1628                 :          0 :                                             pNewAttrs->Get( ATTR_SHADOW );
    1629                 :          0 :                     pTabViewShell->ApplyAttr( rNewShadowItem );
    1630                 :            :                 }
    1631                 :          0 :                 break;
    1632                 :            : 
    1633                 :            :             default:
    1634                 :          0 :             break;
    1635                 :            :         }
    1636                 :            : 
    1637         [ #  # ]:          0 :         if( ! rReq.IsAPI() )
    1638         [ #  # ]:          0 :             if( ! rReq.IsDone() )
    1639                 :          0 :                 rReq.Done();
    1640                 :            :     }
    1641                 :          0 : }
    1642                 :            : 
    1643                 :       1611 : void ScFormatShell::GetAttrState( SfxItemSet& rSet )
    1644                 :            : {
    1645                 :       1611 :     ScTabViewShell* pTabViewShell   = GetViewData()->GetViewShell();
    1646         [ +  - ]:       1611 :     const SfxItemSet&    rAttrSet   = pTabViewShell->GetSelectionPattern()->GetItemSet();
    1647                 :       1611 :     const ::editeng::SvxBorderLine* pLine      = pTabViewShell->GetDefaultFrameLine();
    1648         [ +  - ]:       1611 :     const SvxBrushItem&  rBrushItem = (const SvxBrushItem&)rAttrSet.Get( ATTR_BACKGROUND );
    1649         [ +  - ]:       1611 :     SfxWhichIter aIter( rSet );
    1650         [ +  - ]:       1611 :     sal_uInt16 nWhich = aIter.FirstWhich();
    1651                 :            : 
    1652         [ +  - ]:       1611 :     rSet.Put( rAttrSet, false );
    1653                 :            : 
    1654                 :            :     //  choose font info according to selection script type
    1655                 :       1611 :     sal_uInt8 nScript = 0;      // GetSelectionScriptType never returns 0
    1656 [ +  - ][ +  + ]:       1611 :     if ( rSet.GetItemState( ATTR_FONT ) != SFX_ITEM_UNKNOWN )
    1657                 :            :     {
    1658 [ +  - ][ +  - ]:        459 :         if (!nScript) nScript = pTabViewShell->GetSelectionScriptType();
    1659         [ +  - ]:        459 :         ScViewUtil::PutItemScript( rSet, rAttrSet, ATTR_FONT, nScript );
    1660                 :            :     }
    1661 [ +  - ][ +  + ]:       1611 :     if ( rSet.GetItemState( ATTR_FONT_HEIGHT ) != SFX_ITEM_UNKNOWN )
    1662                 :            :     {
    1663 [ +  + ][ +  - ]:        267 :         if (!nScript) nScript = pTabViewShell->GetSelectionScriptType();
    1664         [ +  - ]:        267 :         ScViewUtil::PutItemScript( rSet, rAttrSet, ATTR_FONT_HEIGHT, nScript );
    1665                 :            :     }
    1666                 :            : 
    1667         [ +  + ]:       3672 :     while ( nWhich )
    1668                 :            :     {
    1669   [ +  +  -  + ]:       2061 :         switch(nWhich)
    1670                 :            :         {
    1671                 :            :             case SID_BACKGROUND_COLOR:
    1672                 :            :             {
    1673 [ +  - ][ +  - ]:        267 :                 rSet.Put( SvxColorItem( rBrushItem.GetColor(), SID_BACKGROUND_COLOR ) );
                 [ +  - ]
    1674                 :            :             }
    1675                 :        267 :             break;
    1676                 :            :             case SID_FRAME_LINECOLOR:
    1677                 :            :             {
    1678 [ +  - ][ +  - ]:        267 :                 rSet.Put( SvxColorItem( pLine ? pLine->GetColor() : Color(), SID_FRAME_LINECOLOR ) );
         [ +  - ][ +  - ]
    1679                 :            :             }
    1680                 :        267 :             break;
    1681                 :            :             case SID_ATTR_BRUSH:
    1682                 :            :             {
    1683 [ #  # ][ #  # ]:          0 :                 rSet.Put( rBrushItem, GetPool().GetWhich(nWhich) );
    1684                 :            :             }
    1685                 :          0 :             break;
    1686                 :            :         }
    1687         [ +  - ]:       2061 :         nWhich = aIter.NextWhich();
    1688         [ +  - ]:       1611 :     }
    1689                 :       1611 : }
    1690                 :            : 
    1691                 :            : //------------------------------------------------------------------
    1692                 :            : 
    1693                 :       2188 : void ScFormatShell::GetTextAttrState( SfxItemSet& rSet )
    1694                 :            : {
    1695                 :       2188 :     ScTabViewShell* pTabViewShell   = GetViewData()->GetViewShell();
    1696         [ +  - ]:       2188 :     const SfxItemSet& rAttrSet  = pTabViewShell->GetSelectionPattern()->GetItemSet();
    1697         [ +  - ]:       2188 :     rSet.Put( rAttrSet, false ); // ItemStates mitkopieren
    1698                 :            : 
    1699                 :            :     //  choose font info according to selection script type
    1700                 :       2188 :     sal_uInt8 nScript = 0;      // GetSelectionScriptType never returns 0
    1701 [ +  - ][ +  + ]:       2188 :     if ( rSet.GetItemState( ATTR_FONT_WEIGHT ) != SFX_ITEM_UNKNOWN )
    1702                 :            :     {
    1703 [ +  - ][ +  - ]:        267 :         if (!nScript) nScript = pTabViewShell->GetSelectionScriptType();
    1704         [ +  - ]:        267 :         ScViewUtil::PutItemScript( rSet, rAttrSet, ATTR_FONT_WEIGHT, nScript );
    1705                 :            :     }
    1706 [ +  - ][ +  + ]:       2188 :     if ( rSet.GetItemState( ATTR_FONT_POSTURE ) != SFX_ITEM_UNKNOWN )
    1707                 :            :     {
    1708 [ +  + ][ +  - ]:        267 :         if (!nScript) nScript = pTabViewShell->GetSelectionScriptType();
    1709         [ +  - ]:        267 :         ScViewUtil::PutItemScript( rSet, rAttrSet, ATTR_FONT_POSTURE, nScript );
    1710                 :            :     }
    1711                 :            : 
    1712                 :            :     SfxItemState eState;
    1713                 :            : //  const SfxPoolItem* pItem;
    1714                 :            : 
    1715                 :            :     //--------------------------------------------------------------------
    1716                 :            :     // eigene Kontrolle ueber RadioButton-Funktionalitaet:
    1717                 :            :     //--------------------------------------------------------------------
    1718                 :            :     // Unterstreichung
    1719                 :            :     //------------------------
    1720                 :            : 
    1721         [ +  - ]:       2188 :     eState = rAttrSet.GetItemState( ATTR_FONT_UNDERLINE, sal_True );
    1722         [ -  + ]:       2188 :     if ( eState == SFX_ITEM_DONTCARE )
    1723                 :            :     {
    1724         [ #  # ]:          0 :         rSet.InvalidateItem( SID_ULINE_VAL_NONE );
    1725         [ #  # ]:          0 :         rSet.InvalidateItem( SID_ULINE_VAL_SINGLE );
    1726         [ #  # ]:          0 :         rSet.InvalidateItem( SID_ULINE_VAL_DOUBLE );
    1727         [ #  # ]:          0 :         rSet.InvalidateItem( SID_ULINE_VAL_DOTTED );
    1728                 :            :     }
    1729                 :            :     else
    1730                 :            :     {
    1731                 :            :         FontUnderline eUnderline = ((const SvxUnderlineItem&)
    1732         [ +  - ]:       2188 :                     rAttrSet.Get(ATTR_FONT_UNDERLINE)).GetLineStyle();
    1733                 :       2188 :         sal_uInt16 nId = SID_ULINE_VAL_NONE;
    1734   [ -  -  -  + ]:       2188 :         switch (eUnderline)
    1735                 :            :         {
    1736                 :          0 :             case UNDERLINE_SINGLE:  nId = SID_ULINE_VAL_SINGLE; break;
    1737                 :          0 :             case UNDERLINE_DOUBLE:  nId = SID_ULINE_VAL_DOUBLE; break;
    1738                 :          0 :             case UNDERLINE_DOTTED:  nId = SID_ULINE_VAL_DOTTED; break;
    1739                 :            :             default:
    1740                 :       2188 :                 break;
    1741                 :            :         }
    1742 [ +  - ][ +  - ]:       2188 :         rSet.Put( SfxBoolItem( nId, sal_True ) );
                 [ +  - ]
    1743                 :            :     }
    1744                 :            : 
    1745                 :            :     //------------------------
    1746                 :            :     // horizontale Ausrichtung
    1747                 :            :     //------------------------
    1748                 :            : 
    1749                 :       2188 :     const SvxHorJustifyItem* pHorJustify = NULL;
    1750                 :       2188 :     const SvxVerJustifyItem* pVerJustify = NULL;
    1751                 :       2188 :     SvxCellVerJustify        eVerJustify = SVX_VER_JUSTIFY_STANDARD;
    1752                 :       2188 :     sal_uInt16                   nWhich      = 0;
    1753                 :       2188 :     bool                     bJustifyStd = false;
    1754         [ +  - ]:       2188 :     SfxBoolItem              aBoolItem   ( 0, sal_True );
    1755                 :            : 
    1756                 :            :     eState   = rAttrSet.GetItemState( ATTR_HOR_JUSTIFY, sal_True,
    1757         [ +  - ]:       2188 :                                         (const SfxPoolItem**)&pHorJustify );
    1758      [ -  -  + ]:       2188 :     switch ( eState )
    1759                 :            :     {
    1760                 :            :         case SFX_ITEM_SET:
    1761                 :            :             {
    1762   [ #  #  #  #  :          0 :                 switch ( SvxCellHorJustify( pHorJustify->GetValue() ) )
                   #  # ]
    1763                 :            :                 {
    1764                 :            :                     case SVX_HOR_JUSTIFY_STANDARD:
    1765                 :          0 :                         break;
    1766                 :            : 
    1767                 :            :                     case SVX_HOR_JUSTIFY_LEFT:
    1768                 :          0 :                         nWhich = SID_ALIGNLEFT;
    1769                 :          0 :                         break;
    1770                 :            : 
    1771                 :            :                     case SVX_HOR_JUSTIFY_RIGHT:
    1772                 :          0 :                         nWhich = SID_ALIGNRIGHT;
    1773                 :          0 :                         break;
    1774                 :            : 
    1775                 :            :                     case SVX_HOR_JUSTIFY_CENTER:
    1776                 :          0 :                         nWhich = SID_ALIGNCENTERHOR;
    1777                 :          0 :                         break;
    1778                 :            : 
    1779                 :            :                     case SVX_HOR_JUSTIFY_BLOCK:
    1780                 :          0 :                         nWhich = SID_ALIGNBLOCK;
    1781                 :          0 :                         break;
    1782                 :            : 
    1783                 :            :                     case SVX_HOR_JUSTIFY_REPEAT:
    1784                 :            :                     default:
    1785                 :          0 :                         bJustifyStd = sal_True;
    1786                 :          0 :                         break;
    1787                 :            :                 }
    1788                 :            :             }
    1789                 :          0 :             break;
    1790                 :            : 
    1791                 :            :         case SFX_ITEM_DONTCARE:
    1792         [ #  # ]:          0 :             rSet.InvalidateItem( SID_ALIGNLEFT );
    1793         [ #  # ]:          0 :             rSet.InvalidateItem( SID_ALIGNRIGHT );
    1794         [ #  # ]:          0 :             rSet.InvalidateItem( SID_ALIGNCENTERHOR );
    1795         [ #  # ]:          0 :             rSet.InvalidateItem( SID_ALIGNBLOCK );
    1796                 :          0 :             break;
    1797                 :            : 
    1798                 :            :         default:
    1799                 :       2188 :             bJustifyStd = sal_True;
    1800                 :       2188 :             break;
    1801                 :            :     }
    1802                 :            : 
    1803         [ -  + ]:       2188 :     if ( nWhich )
    1804                 :            :     {
    1805                 :          0 :         aBoolItem.SetWhich( nWhich );
    1806         [ #  # ]:          0 :         rSet.Put( aBoolItem );
    1807                 :            :     }
    1808         [ +  - ]:       2188 :     else if ( bJustifyStd )
    1809                 :            :     {
    1810                 :       2188 :         aBoolItem.SetValue( false );
    1811         [ +  - ]:       2188 :         aBoolItem.SetWhich( SID_ALIGNLEFT );      rSet.Put( aBoolItem );
    1812         [ +  - ]:       2188 :         aBoolItem.SetWhich( SID_ALIGNRIGHT );     rSet.Put( aBoolItem );
    1813         [ +  - ]:       2188 :         aBoolItem.SetWhich( SID_ALIGNCENTERHOR ); rSet.Put( aBoolItem );
    1814         [ +  - ]:       2188 :         aBoolItem.SetWhich( SID_ALIGNBLOCK );     rSet.Put( aBoolItem );
    1815                 :       2188 :         bJustifyStd = false;
    1816                 :            :     }
    1817                 :            : 
    1818                 :            :     //------------------------
    1819                 :            :     // vertikale Ausrichtung
    1820                 :            :     //------------------------
    1821                 :            : 
    1822                 :       2188 :     nWhich = 0;
    1823                 :       2188 :     aBoolItem.SetValue( sal_True );
    1824                 :            : 
    1825                 :            :     eState = rAttrSet.GetItemState( ATTR_VER_JUSTIFY, sal_True,
    1826         [ +  - ]:       2188 :                                     (const SfxPoolItem**)&pVerJustify );
    1827                 :            : 
    1828      [ -  -  + ]:       2188 :     switch ( eState )
    1829                 :            :     {
    1830                 :            :         case SFX_ITEM_SET:
    1831                 :            :             {
    1832                 :          0 :                 eVerJustify = SvxCellVerJustify( pVerJustify->GetValue() );
    1833                 :            : 
    1834   [ #  #  #  # ]:          0 :                 switch ( eVerJustify )
    1835                 :            :                 {
    1836                 :            :                     case SVX_VER_JUSTIFY_TOP:
    1837                 :          0 :                         nWhich = SID_ALIGNTOP;
    1838                 :          0 :                         break;
    1839                 :            : 
    1840                 :            :                     case SVX_VER_JUSTIFY_BOTTOM:
    1841                 :          0 :                         nWhich = SID_ALIGNBOTTOM;
    1842                 :          0 :                         break;
    1843                 :            : 
    1844                 :            :                     case SVX_VER_JUSTIFY_CENTER:
    1845                 :          0 :                         nWhich = SID_ALIGNCENTERVER;
    1846                 :          0 :                         break;
    1847                 :            : 
    1848                 :            :                     case SVX_VER_JUSTIFY_STANDARD:
    1849                 :            :                     default:
    1850                 :          0 :                         bJustifyStd = sal_True;
    1851                 :          0 :                         break;
    1852                 :            :                 }
    1853                 :            :             }
    1854                 :          0 :             break;
    1855                 :            : 
    1856                 :            :         case SFX_ITEM_DONTCARE:
    1857         [ #  # ]:          0 :             rSet.InvalidateItem( SID_ALIGNTOP );
    1858         [ #  # ]:          0 :             rSet.InvalidateItem( SID_ALIGNBOTTOM );
    1859         [ #  # ]:          0 :             rSet.InvalidateItem( SID_ALIGNCENTERVER );
    1860                 :          0 :             break;
    1861                 :            : 
    1862                 :            :         default:
    1863                 :       2188 :             bJustifyStd = sal_True;
    1864                 :       2188 :             break;
    1865                 :            :     }
    1866                 :            : 
    1867         [ -  + ]:       2188 :     if ( nWhich )
    1868                 :            :     {
    1869                 :          0 :         aBoolItem.SetWhich( nWhich );
    1870         [ #  # ]:          0 :         rSet.Put( aBoolItem );
    1871                 :            :     }
    1872         [ +  - ]:       2188 :     else if ( bJustifyStd )
    1873                 :            :     {
    1874                 :       2188 :         aBoolItem.SetValue( false );
    1875         [ +  - ]:       2188 :         aBoolItem.SetWhich( SID_ALIGNTOP );       rSet.Put( aBoolItem );
    1876         [ +  - ]:       2188 :         aBoolItem.SetWhich( SID_ALIGNBOTTOM );    rSet.Put( aBoolItem );
    1877         [ +  - ]:       2188 :         aBoolItem.SetWhich( SID_ALIGNCENTERVER ); rSet.Put( aBoolItem );
    1878         [ +  - ]:       2188 :     }
    1879                 :       2188 : }
    1880                 :            : 
    1881                 :            : 
    1882                 :            : //------------------------------------------------------------------
    1883                 :            : 
    1884                 :          0 : void ScFormatShell::GetBorderState( SfxItemSet& rSet )
    1885                 :            : {
    1886                 :          0 :     ScTabViewShell* pTabViewShell   = GetViewData()->GetViewShell();
    1887         [ #  # ]:          0 :     SvxBoxItem      aBoxItem( ATTR_BORDER );
    1888         [ #  # ]:          0 :     SvxBoxInfoItem  aInfoItem( ATTR_BORDER_INNER );
    1889                 :            : 
    1890         [ #  # ]:          0 :     pTabViewShell->GetSelectionFrame( aBoxItem, aInfoItem );
    1891                 :            : 
    1892 [ #  # ][ #  # ]:          0 :     if ( rSet.GetItemState( ATTR_BORDER ) != SFX_ITEM_UNKNOWN )
    1893         [ #  # ]:          0 :         rSet.Put( aBoxItem );
    1894 [ #  # ][ #  # ]:          0 :     if ( rSet.GetItemState( ATTR_BORDER_INNER ) != SFX_ITEM_UNKNOWN )
    1895 [ #  # ][ #  # ]:          0 :         rSet.Put( aInfoItem );
                 [ #  # ]
    1896                 :          0 : }
    1897                 :            : 
    1898                 :            : //------------------------------------------------------------------
    1899                 :            : 
    1900                 :          0 : void ScFormatShell::GetAlignState( SfxItemSet& rSet )
    1901                 :            : {
    1902                 :          0 :     ScTabViewShell* pTabViewShell   = GetViewData()->GetViewShell();
    1903         [ #  # ]:          0 :     const SfxItemSet& rAttrSet    = pTabViewShell->GetSelectionPattern()->GetItemSet();
    1904         [ #  # ]:          0 :     SfxWhichIter    aIter(rSet);
    1905         [ #  # ]:          0 :     sal_uInt16          nWhich = aIter.FirstWhich();
    1906                 :            : 
    1907                 :          0 :     SvxCellHorJustify eHAlign = SVX_HOR_JUSTIFY_STANDARD;
    1908         [ #  # ]:          0 :     bool bHasHAlign = rAttrSet.GetItemState( ATTR_HOR_JUSTIFY ) != SFX_ITEM_DONTCARE;
    1909         [ #  # ]:          0 :     if( bHasHAlign )
    1910         [ #  # ]:          0 :         eHAlign = (SvxCellHorJustify)((const SvxHorJustifyItem&) rAttrSet.Get( ATTR_HOR_JUSTIFY )).GetValue();
    1911                 :            : 
    1912                 :          0 :     SvxCellVerJustify eVAlign = SVX_VER_JUSTIFY_STANDARD;
    1913         [ #  # ]:          0 :     bool bHasVAlign = rAttrSet.GetItemState( ATTR_VER_JUSTIFY ) != SFX_ITEM_DONTCARE;
    1914         [ #  # ]:          0 :     if( bHasVAlign )
    1915         [ #  # ]:          0 :         eVAlign = (SvxCellVerJustify)((const SvxVerJustifyItem&) rAttrSet.Get( ATTR_VER_JUSTIFY )).GetValue();
    1916                 :            : 
    1917         [ #  # ]:          0 :     while ( nWhich )
    1918                 :            :     {
    1919   [ #  #  #  #  :          0 :         switch ( nWhich )
                      # ]
    1920                 :            :         {
    1921                 :            :             case SID_H_ALIGNCELL:
    1922         [ #  # ]:          0 :                 if ( bHasHAlign )
    1923 [ #  # ][ #  # ]:          0 :                     rSet.Put( SvxHorJustifyItem( eHAlign, nWhich ));
                 [ #  # ]
    1924                 :          0 :             break;
    1925                 :            :             case SID_V_ALIGNCELL:
    1926         [ #  # ]:          0 :                 if ( bHasVAlign )
    1927 [ #  # ][ #  # ]:          0 :                     rSet.Put( SvxVerJustifyItem( eVAlign, nWhich ));
                 [ #  # ]
    1928                 :          0 :             break;
    1929                 :            : 
    1930                 :            :             // pseudo slots for Format menu
    1931                 :            :             case SID_ALIGN_ANY_HDEFAULT:
    1932                 :            :             case SID_ALIGN_ANY_LEFT:
    1933                 :            :             case SID_ALIGN_ANY_HCENTER:
    1934                 :            :             case SID_ALIGN_ANY_RIGHT:
    1935                 :            :             case SID_ALIGN_ANY_JUSTIFIED:
    1936 [ #  # ][ #  # ]:          0 :                 rSet.Put( SfxBoolItem( nWhich, bHasHAlign && (eHAlign == lclConvertSlotToHAlign( nWhich )) ) );
         [ #  # ][ #  # ]
                 [ #  # ]
    1937                 :          0 :             break;
    1938                 :            :             case SID_ALIGN_ANY_VDEFAULT:
    1939                 :            :             case SID_ALIGN_ANY_TOP:
    1940                 :            :             case SID_ALIGN_ANY_VCENTER:
    1941                 :            :             case SID_ALIGN_ANY_BOTTOM:
    1942 [ #  # ][ #  # ]:          0 :                 rSet.Put( SfxBoolItem( nWhich, bHasVAlign && (eVAlign == lclConvertSlotToVAlign( nWhich )) ) );
         [ #  # ][ #  # ]
                 [ #  # ]
    1943                 :          0 :             break;
    1944                 :            :         }
    1945         [ #  # ]:          0 :         nWhich = aIter.NextWhich();
    1946         [ #  # ]:          0 :     }
    1947                 :          0 : }
    1948                 :            : 
    1949                 :        816 : void ScFormatShell::GetNumFormatState( SfxItemSet& rSet )
    1950                 :            : {
    1951                 :        816 :     ScTabViewShell* pTabViewShell   = GetViewData()->GetViewShell();
    1952         [ +  - ]:        816 :     ScDocument* pDoc                = pViewData->GetDocument();
    1953         [ +  - ]:        816 :     short nType                     = GetCurrentNumberFormatType();
    1954                 :            : 
    1955         [ +  - ]:        816 :     SfxWhichIter aIter(rSet);
    1956         [ +  - ]:        816 :     sal_uInt16 nWhich = aIter.FirstWhich();
    1957         [ +  + ]:       1776 :     while ( nWhich )
    1958                 :            :     {
    1959   [ -  +  +  +  :        960 :         switch ( nWhich )
                +  -  - ]
    1960                 :            :         {
    1961                 :            :             case SID_NUMBER_FORMAT:
    1962                 :            :                 {
    1963         [ #  # ]:          0 :                     String aFormatCode;         // bleibt leer, wenn dont-care
    1964                 :            : 
    1965         [ #  # ]:          0 :                     const SfxItemSet& rAttrSet  = pTabViewShell->GetSelectionPattern()->GetItemSet();
    1966 [ #  # ][ #  # ]:          0 :                     if ( rAttrSet.GetItemState( ATTR_VALUE_FORMAT ) != SFX_ITEM_DONTCARE )
    1967                 :            :                     {
    1968                 :            :                         sal_uLong nNumberFormat = ((const SfxUInt32Item&)rAttrSet.Get(
    1969         [ #  # ]:          0 :                                                     ATTR_VALUE_FORMAT )).GetValue();
    1970                 :            : 
    1971         [ #  # ]:          0 :                         SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
    1972         [ #  # ]:          0 :                         const SvNumberformat* pFormatEntry = pFormatter->GetEntry( nNumberFormat );
    1973         [ #  # ]:          0 :                         if ( pFormatEntry )
    1974         [ #  # ]:          0 :                             aFormatCode = pFormatEntry->GetFormatstring();
    1975                 :            :                     }
    1976                 :            : 
    1977 [ #  # ][ #  # ]:          0 :                     rSet.Put( SfxStringItem( nWhich, aFormatCode ) );
         [ #  # ][ #  # ]
    1978                 :            :                 }
    1979                 :          0 :                 break;
    1980                 :            :             case SID_NUMBER_SCIENTIFIC:
    1981 [ +  - ][ +  - ]:        240 :                 rSet.Put( SfxBoolItem(nWhich, (nType & NUMBERFORMAT_SCIENTIFIC)) );
                 [ +  - ]
    1982                 :        240 :                 break;
    1983                 :            :             case SID_NUMBER_DATE:
    1984 [ +  - ][ +  - ]:        240 :                 rSet.Put( SfxBoolItem(nWhich, (nType & NUMBERFORMAT_DATE)) );
                 [ +  - ]
    1985                 :        240 :                 break;
    1986                 :            :             case SID_NUMBER_CURRENCY:
    1987 [ +  - ][ +  - ]:        240 :                 rSet.Put( SfxBoolItem(nWhich, (nType & NUMBERFORMAT_CURRENCY)) );
                 [ +  - ]
    1988                 :        240 :                 break;
    1989                 :            :             case SID_NUMBER_PERCENT:
    1990 [ +  - ][ +  - ]:        240 :                 rSet.Put( SfxBoolItem(nWhich, (nType & NUMBERFORMAT_PERCENT)) );
                 [ +  - ]
    1991                 :        240 :                 break;
    1992                 :            :             case SID_NUMBER_TIME:
    1993 [ #  # ][ #  # ]:          0 :                 rSet.Put( SfxBoolItem(nWhich, (nType & NUMBERFORMAT_TIME)) );
                 [ #  # ]
    1994                 :          0 :                 break;
    1995                 :            :         }
    1996         [ +  - ]:        960 :         nWhich = aIter.NextWhich();
    1997         [ +  - ]:        816 :     }
    1998                 :        816 : }
    1999                 :            : 
    2000                 :            : 
    2001                 :          0 : void ScFormatShell::ExecuteTextDirection( SfxRequest& rReq )
    2002                 :            : {
    2003                 :          0 :     ScTabViewShell* pTabViewShell = GetViewData()->GetViewShell();
    2004                 :          0 :     pTabViewShell->HideListBox();               // Autofilter-DropDown-Listbox
    2005         [ #  # ]:          0 :     if ( GetViewData()->HasEditView( GetViewData()->GetActivePart() ) )
    2006                 :            :     {
    2007                 :          0 :         SC_MOD()->InputEnterHandler();
    2008                 :          0 :         pTabViewShell->UpdateInputHandler();
    2009                 :            :     }
    2010                 :            : 
    2011                 :          0 :     sal_uInt16 nSlot = rReq.GetSlot();
    2012      [ #  #  # ]:          0 :     switch( nSlot )
    2013                 :            :     {
    2014                 :            :         case SID_TEXTDIRECTION_LEFT_TO_RIGHT:
    2015                 :            :         case SID_TEXTDIRECTION_TOP_TO_BOTTOM:
    2016                 :            :         {
    2017                 :          0 :             sal_Bool bVert = (nSlot == SID_TEXTDIRECTION_TOP_TO_BOTTOM);
    2018 [ #  # ][ #  # ]:          0 :             ScPatternAttr aAttr( GetViewData()->GetDocument()->GetPool() );
                 [ #  # ]
    2019                 :          0 :             SfxItemSet& rItemSet = aAttr.GetItemSet();
    2020 [ #  # ][ #  # ]:          0 :             rItemSet.Put( SfxBoolItem( ATTR_STACKED, bVert ) );
                 [ #  # ]
    2021 [ #  # ][ #  # ]:          0 :             rItemSet.Put( SfxBoolItem( ATTR_VERTICAL_ASIAN, bVert ) );
                 [ #  # ]
    2022         [ #  # ]:          0 :             pTabViewShell->ApplySelectionPattern( aAttr );
    2023 [ #  # ][ #  # ]:          0 :             pTabViewShell->AdjustBlockHeight();
    2024                 :            :         }
    2025                 :          0 :         break;
    2026                 :            : 
    2027                 :            :         case SID_ATTR_PARA_LEFT_TO_RIGHT:
    2028                 :            :         case SID_ATTR_PARA_RIGHT_TO_LEFT:
    2029                 :            :         {
    2030                 :            :             SvxFrameDirection eDirection = ( nSlot == SID_ATTR_PARA_LEFT_TO_RIGHT ) ?
    2031                 :          0 :                                                 FRMDIR_HORI_LEFT_TOP : FRMDIR_HORI_RIGHT_TOP;
    2032         [ #  # ]:          0 :             pTabViewShell->ApplyAttr( SvxFrameDirectionItem( eDirection, ATTR_WRITINGDIR ) );
    2033                 :            :         }
    2034                 :          0 :         break;
    2035                 :            :     }
    2036                 :          0 : }
    2037                 :            : 
    2038                 :       2381 : void ScFormatShell::GetTextDirectionState( SfxItemSet& rSet )
    2039                 :            : {
    2040                 :       2381 :     ScTabViewShell* pTabViewShell = GetViewData()->GetViewShell();
    2041         [ +  - ]:       2381 :     const SfxItemSet& rAttrSet = pTabViewShell->GetSelectionPattern()->GetItemSet();
    2042                 :            : 
    2043                 :            :     sal_Bool bVertDontCare =
    2044         [ +  - ]:       2381 :         (rAttrSet.GetItemState( ATTR_VERTICAL_ASIAN ) == SFX_ITEM_DONTCARE) ||
    2045 [ +  - ][ +  - ]:       2381 :         (rAttrSet.GetItemState( ATTR_STACKED ) == SFX_ITEM_DONTCARE);
                 [ -  + ]
    2046                 :            :     sal_Bool bLeftRight = !bVertDontCare &&
    2047 [ +  - ][ +  - ]:       2381 :         !((const SfxBoolItem&) rAttrSet.Get( ATTR_STACKED )).GetValue();
                 [ +  - ]
    2048                 :            :     sal_Bool bTopBottom = !bVertDontCare && !bLeftRight &&
    2049 [ +  - ][ -  + ]:       2381 :         ((const SfxBoolItem&) rAttrSet.Get( ATTR_VERTICAL_ASIAN )).GetValue();
         [ #  # ][ #  # ]
    2050                 :            : 
    2051         [ +  - ]:       2381 :     sal_Bool bBidiDontCare = (rAttrSet.GetItemState( ATTR_WRITINGDIR ) == SFX_ITEM_DONTCARE);
    2052                 :       2381 :     EEHorizontalTextDirection eBidiDir = EE_HTEXTDIR_DEFAULT;
    2053         [ +  - ]:       2381 :     if ( !bBidiDontCare )
    2054                 :            :     {
    2055                 :            :         SvxFrameDirection eCellDir = (SvxFrameDirection)((const SvxFrameDirectionItem&)
    2056         [ +  - ]:       2381 :                                         rAttrSet.Get( ATTR_WRITINGDIR )).GetValue();
    2057         [ +  - ]:       2381 :         if ( eCellDir == FRMDIR_ENVIRONMENT )
    2058                 :            :             eBidiDir = (EEHorizontalTextDirection)GetViewData()->GetDocument()->
    2059 [ +  - ][ +  - ]:       2381 :                                 GetEditTextDirection( GetViewData()->GetTabNo() );
    2060         [ #  # ]:          0 :         else if ( eCellDir == FRMDIR_HORI_RIGHT_TOP )
    2061                 :          0 :             eBidiDir = EE_HTEXTDIR_R2L;
    2062                 :            :         else
    2063                 :          0 :             eBidiDir = EE_HTEXTDIR_L2R;
    2064                 :            :     }
    2065                 :            : 
    2066         [ +  - ]:       2381 :     SvtLanguageOptions  aLangOpt;
    2067         [ +  - ]:       2381 :     sal_Bool bDisableCTLFont = !aLangOpt.IsCTLFontEnabled();
    2068         [ +  - ]:       2381 :     sal_Bool bDisableVerticalText = !aLangOpt.IsVerticalTextEnabled();
    2069                 :            : 
    2070         [ +  - ]:       2381 :     SfxWhichIter aIter( rSet );
    2071         [ +  - ]:       2381 :     sal_uInt16 nWhich = aIter.FirstWhich();
    2072         [ +  + ]:       5001 :     while( nWhich )
    2073                 :            :     {
    2074      [ +  +  + ]:       2620 :         switch( nWhich )
    2075                 :            :         {
    2076                 :            :             case SID_TEXTDIRECTION_LEFT_TO_RIGHT:
    2077                 :            :             case SID_TEXTDIRECTION_TOP_TO_BOTTOM:
    2078         [ +  - ]:        480 :                 if ( bDisableVerticalText )
    2079         [ +  - ]:        480 :                     rSet.DisableItem( nWhich );
    2080                 :            :                 else
    2081                 :            :                 {
    2082         [ #  # ]:          0 :                     if( bVertDontCare )
    2083         [ #  # ]:          0 :                         rSet.InvalidateItem( nWhich );
    2084         [ #  # ]:          0 :                     else if ( nWhich == SID_TEXTDIRECTION_LEFT_TO_RIGHT )
    2085 [ #  # ][ #  # ]:          0 :                         rSet.Put( SfxBoolItem( nWhich, bLeftRight ) );
                 [ #  # ]
    2086                 :            :                     else
    2087 [ #  # ][ #  # ]:          0 :                         rSet.Put( SfxBoolItem( nWhich, bTopBottom ) );
                 [ #  # ]
    2088                 :            :                 }
    2089                 :        480 :             break;
    2090                 :            : 
    2091                 :            :             case SID_ATTR_PARA_LEFT_TO_RIGHT:
    2092                 :            :             case SID_ATTR_PARA_RIGHT_TO_LEFT:
    2093         [ +  - ]:        878 :                 if ( bDisableCTLFont )
    2094         [ +  - ]:        878 :                     rSet.DisableItem( nWhich );
    2095                 :            :                 else
    2096                 :            :                 {
    2097         [ #  # ]:          0 :                     if ( bTopBottom )
    2098         [ #  # ]:          0 :                         rSet.DisableItem( nWhich );
    2099         [ #  # ]:          0 :                     else if ( bBidiDontCare )
    2100         [ #  # ]:          0 :                         rSet.InvalidateItem( nWhich );
    2101         [ #  # ]:          0 :                     else if ( nWhich == SID_ATTR_PARA_LEFT_TO_RIGHT )
    2102 [ #  # ][ #  # ]:          0 :                         rSet.Put( SfxBoolItem( nWhich, eBidiDir == EE_HTEXTDIR_L2R ) );
                 [ #  # ]
    2103                 :            :                     else
    2104 [ #  # ][ #  # ]:          0 :                         rSet.Put( SfxBoolItem( nWhich, eBidiDir == EE_HTEXTDIR_R2L ) );
                 [ #  # ]
    2105                 :            :                 }
    2106                 :            :         }
    2107         [ +  - ]:       2620 :         nWhich = aIter.NextWhich();
    2108 [ +  - ][ +  - ]:       2381 :     }
    2109                 :       2381 : }
    2110                 :            : 
    2111                 :          0 : void ScFormatShell::ExecFormatPaintbrush( SfxRequest& rReq )
    2112                 :            : {
    2113         [ #  # ]:          0 :     ScViewFunc* pView = pViewData->GetView();
    2114         [ #  # ]:          0 :     if ( pView->HasPaintBrush() )
    2115                 :            :     {
    2116                 :            :         // cancel paintbrush mode
    2117                 :          0 :         pView->ResetBrushDocument();
    2118                 :            :     }
    2119                 :            :     else
    2120                 :            :     {
    2121                 :          0 :         sal_Bool bLock = false;
    2122                 :          0 :         const SfxItemSet *pArgs = rReq.GetArgs();
    2123 [ #  # ][ #  # ]:          0 :         if( pArgs && pArgs->Count() >= 1 )
                 [ #  # ]
    2124         [ #  # ]:          0 :             bLock = static_cast<const SfxBoolItem&>(pArgs->Get(SID_FORMATPAINTBRUSH)).GetValue();
    2125                 :            : 
    2126                 :            :         // in case of multi selection, deselect all and use the cursor position
    2127                 :          0 :         ScRange aDummy;
    2128 [ #  # ][ #  # ]:          0 :         if ( pViewData->GetSimpleArea(aDummy) != SC_MARK_SIMPLE )
    2129         [ #  # ]:          0 :             pView->Unmark();
    2130                 :            : 
    2131 [ #  # ][ #  # ]:          0 :         ScDocument* pBrushDoc = new ScDocument( SCDOCMODE_CLIP );
    2132         [ #  # ]:          0 :         pView->CopyToClip( pBrushDoc, false, true );
    2133         [ #  # ]:          0 :         pView->SetBrushDocument( pBrushDoc, bLock );
    2134                 :            :     }
    2135                 :          0 : }
    2136                 :            : 
    2137                 :        268 : void ScFormatShell::StateFormatPaintbrush( SfxItemSet& rSet )
    2138                 :            : {
    2139         [ -  + ]:        268 :     if ( pViewData->HasEditView( pViewData->GetActivePart() ) )
    2140                 :          0 :         rSet.DisableItem( SID_FORMATPAINTBRUSH );
    2141                 :            :     else
    2142         [ +  - ]:        268 :         rSet.Put( SfxBoolItem( SID_FORMATPAINTBRUSH, pViewData->GetView()->HasPaintBrush() ) );
    2143                 :        268 : }
    2144                 :            : 
    2145                 :        816 : short ScFormatShell::GetCurrentNumberFormatType()
    2146                 :            : {
    2147                 :        816 :     short nType = NUMBERFORMAT_ALL;
    2148         [ +  - ]:        816 :     ScDocument* pDoc = GetViewData()->GetDocument();
    2149 [ +  - ][ +  - ]:        816 :     ScMarkData aMark(GetViewData()->GetMarkData());
    2150         [ +  - ]:        816 :     const SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
    2151         [ -  + ]:        816 :     if (!pFormatter)
    2152                 :          0 :         return nType;
    2153                 :            : 
    2154                 :            :     // TODO: Find out how to get a selected table range in case multiple tables
    2155                 :            :     // are selected.  Currently we only check for the current active table.
    2156                 :            : 
    2157 [ +  - ][ -  + ]:        816 :     if ( aMark.IsMarked() || aMark.IsMultiMarked() )
                 [ -  + ]
    2158                 :            :     {
    2159         [ #  # ]:          0 :         aMark.MarkToMulti();
    2160                 :          0 :         ScRange aRange;
    2161         [ #  # ]:          0 :         aMark.GetMultiMarkArea(aRange);
    2162                 :            : 
    2163                 :          0 :         const ScMarkArray* pArray = aMark.GetArray();
    2164         [ #  # ]:          0 :         if (!pArray)
    2165                 :          0 :             return nType;
    2166                 :            : 
    2167                 :          0 :         short nComboType = NUMBERFORMAT_ALL;
    2168                 :          0 :         bool bFirstItem = true;
    2169         [ #  # ]:          0 :         for (SCCOL nCol = aRange.aStart.Col(); nCol <= aRange.aEnd.Col(); ++nCol)
    2170                 :            :         {
    2171                 :          0 :             const ScMarkArray& rColArray = pArray[nCol];
    2172         [ #  # ]:          0 :             if (!rColArray.HasMarks())
    2173                 :          0 :                 continue;
    2174                 :            : 
    2175                 :            :             SCROW nRow1, nRow2;
    2176         [ #  # ]:          0 :             ScMarkArrayIter aMarkIter(&rColArray);
    2177 [ #  # ][ #  # ]:          0 :             while (aMarkIter.Next(nRow1, nRow2))
    2178                 :            :             {
    2179                 :          0 :                 ScRange aColRange(nCol, nRow1, aRange.aStart.Tab());
    2180                 :          0 :                 aColRange.aEnd.SetRow(nRow2);
    2181         [ #  # ]:          0 :                 sal_uInt32 nNumFmt = pDoc->GetNumberFormat(aColRange);
    2182         [ #  # ]:          0 :                 const SvNumberformat* pEntry = pFormatter->GetEntry(nNumFmt);
    2183         [ #  # ]:          0 :                 if (!pEntry)
    2184                 :          0 :                     return 0;
    2185                 :            : 
    2186                 :          0 :                 short nThisType = pEntry->GetType();
    2187         [ #  # ]:          0 :                 if (bFirstItem)
    2188                 :            :                 {
    2189                 :          0 :                     bFirstItem = false;
    2190                 :          0 :                     nComboType = nThisType;
    2191                 :            :                 }
    2192         [ #  # ]:          0 :                 else if (nComboType != nThisType)
    2193                 :            :                     // mixed number format type.
    2194                 :          0 :                     return NUMBERFORMAT_ALL;
    2195                 :            :             }
    2196 [ #  # ][ #  # ]:          0 :         }
    2197                 :          0 :         nType = nComboType;
    2198                 :            :     }
    2199                 :            :     else
    2200                 :            :     {
    2201                 :            :         sal_uInt32 nNumFmt;
    2202                 :        816 :         pDoc->GetNumberFormat( pViewData->GetCurX(), pViewData->GetCurY(),
    2203         [ +  - ]:       1632 :                                pViewData->GetTabNo(), nNumFmt );
    2204         [ +  - ]:        816 :         const SvNumberformat* pEntry = pFormatter->GetEntry( nNumFmt );
    2205         [ +  - ]:        816 :         nType = pEntry ? pEntry->GetType() : 0;
    2206                 :            :     }
    2207         [ +  - ]:        816 :     return nType;
    2208                 :            : }
    2209                 :            : 
    2210                 :            : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10