LCOV - code coverage report
Current view: top level - libreoffice/sw/source/ui/config - optpage.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 0 1329 0.0 %
Date: 2012-12-27 Functions: 0 90 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #include <optpage.hxx>
      21             : #include <doc.hxx>
      22             : #include <hintids.hxx>
      23             : #include <cmdid.h>
      24             : #include <fmtcol.hxx>
      25             : #include <charatr.hxx>
      26             : #include <swtypes.hxx>
      27             : #include <view.hxx>
      28             : #include <docsh.hxx>
      29             : #include <IDocumentDeviceAccess.hxx>
      30             : #include <swmodule.hxx>
      31             : #include <wrtsh.hxx>
      32             : #include <uitool.hxx>
      33             : #include <cfgitems.hxx> //Items for Sw-pages
      34             : #include <poolfmt.hxx>
      35             : #include <uiitems.hxx>
      36             : #include <initui.hxx>
      37             : #include <printdata.hxx>
      38             : #include <modcfg.hxx>
      39             : #include <srcview.hxx>
      40             : #include <crstate.hxx>
      41             : #include <viewopt.hxx>
      42             : #include <globals.hrc>
      43             : #include <config.hrc>
      44             : #include <redlopt.hrc>
      45             : #include <optdlg.hrc>
      46             : #include <swwrtshitem.hxx>
      47             : #include <unomid.h>
      48             : 
      49             : #include <editeng/fhgtitem.hxx>
      50             : #include <editeng/fontitem.hxx>
      51             : #include <editeng/langitem.hxx>
      52             : #include <editeng/svxenum.hxx>
      53             : #include <sfx2/request.hxx>
      54             : #include <sfx2/printer.hxx>
      55             : #include <sfx2/bindings.hxx>
      56             : #include <svl/slstitm.hxx>
      57             : #include <svl/ctloptions.hxx>
      58             : #include <svl/eitem.hxx>
      59             : #include <svl/cjkoptions.hxx>
      60             : #include <svtools/ctrltool.hxx>
      61             : #include <svx/htmlmode.hxx>
      62             : #include <svx/xtable.hxx>
      63             : #include <svx/dlgutil.hxx>
      64             : #include <svx/strarray.hxx>
      65             : #include <vcl/svapp.hxx>
      66             : 
      67             : 
      68             : using namespace ::com::sun::star;
      69             : 
      70           0 : SwContentOptPage::SwContentOptPage( Window* pParent,
      71             :                                       const SfxItemSet& rCoreSet ) :
      72             :     SfxTabPage( pParent, SW_RES( TP_CONTENT_OPT ), rCoreSet ),
      73             :     aLineFL       ( this,   SW_RES( FL_LINE     ) ),
      74             :     aCrossCB      ( this,   SW_RES( CB_CROSS     ) ),
      75             : 
      76             :     aWindowFL     ( this,   SW_RES( FL_WINDOW   ) ),
      77             :     aHScrollBox   ( this,   SW_RES( CB_HSCROLL   ) ),
      78             :     aVScrollBox   ( this,   SW_RES( CB_VSCROLL   ) ),
      79             :     aAnyRulerCB   ( this,   SW_RES( CB_ANY_RULER ) ),
      80             :     aHRulerCBox   ( this,   SW_RES( CB_HRULER   ) ),
      81             :     aHMetric      ( this,   SW_RES( LB_HMETRIC    ) ),
      82             :     aVRulerCBox   ( this,   SW_RES( CB_VRULER    ) ),
      83             :     aVRulerRightCBox( this, SW_RES( CB_VRULER_RIGHT    ) ),
      84             :     aVMetric      ( this,   SW_RES( LB_VMETRIC    ) ),
      85             :     aSmoothCBox   ( this,   SW_RES( CB_SMOOTH_SCROLL    ) ),
      86             : 
      87             :     aDispFL      ( this,   SW_RES( FL_DISP     ) ),
      88             :     aGrfCB        ( this,   SW_RES( CB_GRF          ) ),
      89             :     aTblCB        ( this,   SW_RES( CB_TBL      ) ),
      90             :     aDrwCB        ( this,   SW_RES( CB_DRWFAST   ) ),
      91             :     aFldNameCB    ( this,   SW_RES( CB_FIELD    ) ),
      92             :     aPostItCB     ( this,   SW_RES( CB_POSTIT   ) ),
      93             : 
      94             :     aSettingsFL   ( this,   SW_RES( FL_SETTINGS   ) ),
      95             :     aMetricFT     ( this,   SW_RES( FT_METRIC   ) ),
      96           0 :     aMetricLB     ( this,   SW_RES( LB_METRIC   ) )
      97             : {
      98           0 :     FreeResource();
      99             :     const SfxPoolItem* pItem;
     100           0 :     if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_HTML_MODE, sal_False, &pItem )
     101           0 :         && ((SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON)
     102             :     {
     103           0 :         aMetricLB.Show();
     104           0 :         aSettingsFL.Show();
     105           0 :         aMetricFT.Show();
     106             :     }
     107           0 :     SvtCJKOptions aCJKOptions;
     108           0 :     if(aCJKOptions.IsVerticalTextEnabled() )
     109             :     {
     110           0 :         Point aSmoothPos(aSmoothCBox.GetPosPixel());
     111           0 :         aSmoothPos.Y() += aSmoothPos.Y() - aVRulerCBox.GetPosPixel().Y();
     112           0 :         aSmoothCBox.SetPosPixel(aSmoothPos);
     113             :     }
     114             :     else
     115           0 :         aVRulerRightCBox.Hide();
     116           0 :     aVRulerCBox.SetClickHdl(LINK(this, SwContentOptPage, VertRulerHdl ));
     117           0 :     aAnyRulerCB.SetClickHdl(LINK(this, SwContentOptPage, AnyRulerHdl));
     118             : 
     119           0 :     SvxStringArray aMetricArr( SW_RES( STR_ARR_METRIC ) );
     120           0 :     for ( sal_uInt16 i = 0; i < aMetricArr.Count(); ++i )
     121             :     {
     122           0 :         String sMetric = aMetricArr.GetStringByPos( i );
     123           0 :         FieldUnit eFUnit = (FieldUnit)aMetricArr.GetValue( i );
     124             : 
     125           0 :         switch ( eFUnit )
     126             :         {
     127             :             case FUNIT_MM:
     128             :             case FUNIT_CM:
     129             :             case FUNIT_POINT:
     130             :             case FUNIT_PICA:
     131             :             case FUNIT_INCH:
     132             :             case FUNIT_CHAR:    // add two units , 'character' and 'line' , their ticks are not fixed
     133             :             case FUNIT_LINE:
     134             :             {
     135             :                 // only use these metrics
     136             :                 // a horizontal ruler has not the 'line' unit
     137             :                 // there isn't 'line' unit in HTML format
     138           0 :                 if ( eFUnit != FUNIT_LINE )
     139             :                 {
     140           0 :                    sal_uInt16 nPos = aMetricLB.InsertEntry( sMetric );
     141           0 :                    aMetricLB.SetEntryData( nPos, (void*)(long)eFUnit );
     142           0 :                    aHMetric.InsertEntry( sMetric );
     143           0 :                    aHMetric.SetEntryData( nPos, (void*)(long)eFUnit );
     144             :                 }
     145             :                 // a vertical ruler has not the 'character' unit
     146           0 :                 if ( eFUnit != FUNIT_CHAR )
     147             :                 {
     148           0 :                    sal_uInt16 nPos = aVMetric.InsertEntry( sMetric );
     149           0 :                    aVMetric.SetEntryData( nPos, (void*)(long)eFUnit );
     150             :                 }
     151             :             }
     152             :             default:;//prevent warning
     153             :         }
     154           0 :     }
     155           0 : }
     156             : 
     157           0 : SwContentOptPage::~SwContentOptPage()
     158             : {
     159           0 : }
     160             : 
     161           0 : SfxTabPage* SwContentOptPage::Create( Window* pParent,
     162             :                                 const SfxItemSet& rAttrSet)
     163             : {
     164           0 :     return new SwContentOptPage(pParent, rAttrSet);
     165             : }
     166             : 
     167           0 : static void lcl_SelectMetricLB(ListBox& rMetric, sal_uInt16 nSID, const SfxItemSet& rSet)
     168             : {
     169             :     const SfxPoolItem* pItem;
     170           0 :     if( rSet.GetItemState( nSID, sal_False, &pItem ) >= SFX_ITEM_AVAILABLE )
     171             :     {
     172           0 :         FieldUnit eFieldUnit = (FieldUnit)((SfxUInt16Item*)pItem)->GetValue();
     173           0 :         for ( sal_uInt16 i = 0; i < rMetric.GetEntryCount(); ++i )
     174             :         {
     175           0 :             if ( (int)(sal_IntPtr)rMetric.GetEntryData( i ) == (int)eFieldUnit )
     176             :             {
     177           0 :                 rMetric.SelectEntryPos( i );
     178           0 :                 break;
     179             :             }
     180             :         }
     181             :     }
     182           0 :     rMetric.SaveValue();
     183           0 : }
     184             : 
     185           0 : void SwContentOptPage::Reset(const SfxItemSet& rSet)
     186             : {
     187           0 :     const SwElemItem* pElemAttr = 0;
     188             : 
     189             :     rSet.GetItemState( FN_PARAM_ELEM , sal_False,
     190           0 :                                     (const SfxPoolItem**)&pElemAttr );
     191           0 :     if(pElemAttr)
     192             :     {
     193           0 :         aTblCB      .Check  (pElemAttr->bTable                );
     194           0 :         aGrfCB.Check  (pElemAttr->bGraphic              );
     195           0 :         aDrwCB      .Check  (pElemAttr->bDrawing              );
     196           0 :         aFldNameCB  .Check  (pElemAttr->bFieldName            );
     197           0 :         aPostItCB   .Check  (pElemAttr->bNotes                );
     198           0 :         aCrossCB   .Check( pElemAttr->bCrosshair        );
     199           0 :         aHScrollBox.Check( pElemAttr->bHorzScrollbar     );
     200           0 :         aVScrollBox.Check( pElemAttr->bVertScrollbar     );
     201           0 :         aAnyRulerCB.Check( pElemAttr->bAnyRuler );
     202           0 :         aHRulerCBox.Check( pElemAttr->bHorzRuler         );
     203           0 :         aVRulerCBox.Check( pElemAttr->bVertRuler         );
     204           0 :         aVRulerRightCBox.Check(pElemAttr->bVertRulerRight);
     205           0 :         aSmoothCBox.Check( pElemAttr->bSmoothScroll      );
     206             :     }
     207           0 :     aMetricLB.SetNoSelection();
     208           0 :     lcl_SelectMetricLB(aMetricLB, SID_ATTR_METRIC, rSet);
     209           0 :     lcl_SelectMetricLB(aHMetric, FN_HSCROLL_METRIC, rSet);
     210           0 :     lcl_SelectMetricLB(aVMetric, FN_VSCROLL_METRIC, rSet);
     211           0 :     AnyRulerHdl(&aAnyRulerCB);
     212           0 : }
     213             : 
     214           0 : sal_Bool SwContentOptPage::FillItemSet(SfxItemSet& rSet)
     215             : {
     216             :     const SwElemItem*   pOldAttr = (const SwElemItem*)
     217           0 :                         GetOldItem(GetItemSet(), FN_PARAM_ELEM);
     218             : 
     219           0 :     SwElemItem aElem;
     220           0 :     if(pOldAttr)
     221           0 :         aElem = *pOldAttr;
     222           0 :     aElem.bTable                = aTblCB        .IsChecked();
     223           0 :     aElem.bGraphic              = aGrfCB.IsChecked();
     224           0 :     aElem.bDrawing              = aDrwCB        .IsChecked();
     225           0 :     aElem.bFieldName            = aFldNameCB    .IsChecked();
     226           0 :     aElem.bNotes                = aPostItCB     .IsChecked();
     227           0 :     aElem.bCrosshair     = aCrossCB   .IsChecked();
     228           0 :     aElem.bHorzScrollbar = aHScrollBox.IsChecked();
     229           0 :     aElem.bVertScrollbar = aVScrollBox.IsChecked();
     230           0 :     aElem.bAnyRuler = aAnyRulerCB.IsChecked();
     231           0 :     aElem.bHorzRuler     = aHRulerCBox.IsChecked();
     232           0 :     aElem.bVertRuler     = aVRulerCBox.IsChecked();
     233           0 :     aElem.bVertRulerRight= aVRulerRightCBox.IsChecked();
     234           0 :     aElem.bSmoothScroll  = aSmoothCBox.IsChecked();
     235             : 
     236             : 
     237           0 :     sal_Bool bRet = !pOldAttr || aElem != *pOldAttr;
     238           0 :     if(bRet)
     239           0 :         bRet = 0 != rSet.Put(aElem);
     240           0 :     sal_uInt16 nMPos = aMetricLB.GetSelectEntryPos();
     241           0 :     sal_uInt16 nGlobalMetricPos = nMPos;
     242           0 :     if ( nMPos != aMetricLB.GetSavedValue() )
     243             :     {
     244             :         // Double-Cast for VA3.0
     245           0 :         sal_uInt16 nFieldUnit = (sal_uInt16)(long)aMetricLB.GetEntryData( nMPos );
     246           0 :         rSet.Put( SfxUInt16Item( SID_ATTR_METRIC, (sal_uInt16)nFieldUnit ) );
     247           0 :         bRet = sal_True;
     248             :     }
     249             : 
     250           0 :     nMPos = aHMetric.GetSelectEntryPos();
     251           0 :     if ( nMPos != aHMetric.GetSavedValue() || nMPos != nGlobalMetricPos )
     252             :     {
     253             :         // Double-Cast for VA3.0
     254           0 :         sal_uInt16 nFieldUnit = (sal_uInt16)(long)aHMetric.GetEntryData( nMPos );
     255           0 :         rSet.Put( SfxUInt16Item( FN_HSCROLL_METRIC, (sal_uInt16)nFieldUnit ) );
     256           0 :         bRet = sal_True;
     257             :     }
     258           0 :     nMPos = aVMetric.GetSelectEntryPos();
     259           0 :     if ( nMPos != aVMetric.GetSavedValue() || nMPos != nGlobalMetricPos )
     260             :     {
     261             :         // Double-Cast for VA3.0
     262           0 :         sal_uInt16 nFieldUnit = (sal_uInt16)(long)aVMetric.GetEntryData( nMPos );
     263           0 :         rSet.Put( SfxUInt16Item( FN_VSCROLL_METRIC, (sal_uInt16)nFieldUnit ) );
     264           0 :         bRet = sal_True;
     265             :     }
     266           0 :     return bRet;
     267             : }
     268             : 
     269           0 : IMPL_LINK(SwContentOptPage, VertRulerHdl, CheckBox*, pBox)
     270             : {
     271           0 :     aVRulerRightCBox.Enable(pBox->IsEnabled() && pBox->IsChecked());
     272           0 :     return 0;
     273             : }
     274             : 
     275           0 : IMPL_LINK( SwContentOptPage, AnyRulerHdl, CheckBox*, pBox)
     276             : {
     277           0 :     sal_Bool bChecked = pBox->IsChecked();
     278           0 :     aHRulerCBox      .Enable(bChecked);
     279           0 :     aHMetric         .Enable(bChecked);
     280           0 :     aVRulerCBox      .Enable(bChecked);
     281           0 :     aVMetric         .Enable(bChecked);
     282           0 :     VertRulerHdl(&aVRulerCBox);
     283           0 :     return 0;
     284             : }
     285             : /*------------------------------------------------------
     286             :  TabPage Printer additional settings
     287             : -------------------------------------------------------*/
     288           0 : SwAddPrinterTabPage::SwAddPrinterTabPage(Window* pParent,
     289             :     const SfxItemSet& rCoreSet)
     290             :     : SfxTabPage(pParent, "PrintOptionsPage",
     291             :         "modules/swriter/ui/printoptionspage.ui", rCoreSet)
     292             :     , sNone(SW_RESSTR(SW_STR_NONE))
     293             :     , bAttrModified(sal_False)
     294           0 :     , bPreview(sal_False)
     295             : {
     296           0 :     get(m_pGrfCB, "graphics");
     297           0 :     get(m_pCtrlFldCB, "formcontrols");
     298           0 :     get(m_pBackgroundCB, "background");
     299           0 :     get(m_pBlackFontCB, "inblack");
     300           0 :     get(m_pPrintHiddenTextCB, "hiddentext");
     301           0 :     get(m_pPrintTextPlaceholderCB, "textplaceholder");
     302             : 
     303           0 :     get(m_pPagesFrame, "pagesframe");
     304           0 :     get(m_pLeftPageCB, "leftpages");
     305           0 :     get(m_pRightPageCB, "rightpages");
     306           0 :     get(m_pProspectCB, "brochure");
     307           0 :     get(m_pProspectCB_RTL, "rtl");
     308             : 
     309           0 :     get(m_pCommentsFrame, "commentsframe");
     310           0 :     get(m_pNoRB, "none");
     311           0 :     get(m_pOnlyRB, "only");
     312           0 :     get(m_pEndRB, "end");
     313           0 :     get(m_pEndPageRB, "endpage");
     314           0 :     get(m_pPrintEmptyPagesCB, "blankpages");
     315           0 :     get(m_pPaperFromSetupCB, "papertray");
     316           0 :     get(m_pFaxLB, "fax");
     317             : 
     318           0 :     Init();
     319             : 
     320           0 :     Link aLk = LINK( this, SwAddPrinterTabPage, AutoClickHdl);
     321           0 :     m_pGrfCB->SetClickHdl( aLk );
     322           0 :     m_pRightPageCB->SetClickHdl( aLk );
     323           0 :     m_pLeftPageCB->SetClickHdl( aLk );
     324           0 :     m_pCtrlFldCB->SetClickHdl( aLk );
     325           0 :     m_pBackgroundCB->SetClickHdl( aLk );
     326           0 :     m_pBlackFontCB->SetClickHdl( aLk );
     327           0 :     m_pPrintHiddenTextCB->SetClickHdl( aLk );
     328           0 :     m_pPrintTextPlaceholderCB->SetClickHdl( aLk );
     329           0 :     m_pProspectCB->SetClickHdl( aLk );
     330           0 :     m_pProspectCB_RTL->SetClickHdl( aLk );
     331           0 :     m_pPaperFromSetupCB->SetClickHdl( aLk );
     332           0 :     m_pPrintEmptyPagesCB->SetClickHdl( aLk );
     333           0 :     m_pEndPageRB->SetClickHdl( aLk );
     334           0 :     m_pEndRB->SetClickHdl( aLk );
     335           0 :     m_pOnlyRB->SetClickHdl( aLk );
     336           0 :     m_pNoRB->SetClickHdl( aLk );
     337           0 :     m_pFaxLB->SetSelectHdl( LINK( this, SwAddPrinterTabPage, SelectHdl ) );
     338             : 
     339             :     const SfxPoolItem* pItem;
     340           0 :     if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_HTML_MODE, sal_False, &pItem )
     341           0 :         && ((SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON)
     342             :     {
     343           0 :         m_pLeftPageCB->Hide();
     344           0 :         m_pRightPageCB->Hide();
     345           0 :         m_pPrintHiddenTextCB->Hide();
     346           0 :         m_pPrintTextPlaceholderCB->Hide();
     347           0 :         m_pProspectCB->SetPosPixel(m_pLeftPageCB->GetPosPixel());
     348           0 :         Point aPt( m_pRightPageCB->GetPosPixel() );
     349           0 :         aPt.setX(aPt.getX() + 15); // indent
     350           0 :         m_pProspectCB_RTL->SetPosPixel(aPt);
     351             : 
     352             :         // hide m_pPrintEmptyPagesCB
     353           0 :         m_pPrintEmptyPagesCB->Hide();
     354             :     }
     355           0 :     m_pProspectCB_RTL->Disable();
     356           0 :     SvtCTLOptions aCTLOptions;
     357           0 :     m_pProspectCB_RTL->Show(aCTLOptions.IsCTLFontEnabled());
     358           0 : }
     359             : 
     360           0 : void SwAddPrinterTabPage::SetPreview(sal_Bool bPrev)
     361             : {
     362           0 :     bPreview = bPrev;
     363           0 :     m_pCommentsFrame->Enable(!bPreview);
     364           0 :     m_pPagesFrame->Enable(!bPreview);
     365           0 : }
     366             : 
     367           0 : SfxTabPage* SwAddPrinterTabPage::Create( Window* pParent,
     368             :                                        const SfxItemSet& rAttrSet )
     369             : {
     370           0 :     return ( new SwAddPrinterTabPage( pParent, rAttrSet ) );
     371             : }
     372             : 
     373           0 : sal_Bool    SwAddPrinterTabPage::FillItemSet( SfxItemSet& rCoreSet )
     374             : {
     375           0 :     if ( bAttrModified )
     376             :     {
     377           0 :         SwAddPrinterItem aAddPrinterAttr (FN_PARAM_ADDPRINTER);
     378           0 :         aAddPrinterAttr.bPrintGraphic   = m_pGrfCB->IsChecked();
     379           0 :         aAddPrinterAttr.bPrintTable     = sal_True; // always enabled since CWS printerpullgpages /*aTabCB.IsChecked();*/
     380           0 :         aAddPrinterAttr.bPrintDraw      = m_pGrfCB->IsChecked(); // UI merged with m_pGrfCB in CWS printerpullgpages
     381           0 :         aAddPrinterAttr.bPrintControl   = m_pCtrlFldCB->IsChecked();
     382           0 :         aAddPrinterAttr.bPrintPageBackground = m_pBackgroundCB->IsChecked();
     383           0 :         aAddPrinterAttr.bPrintBlackFont = m_pBlackFontCB->IsChecked();
     384           0 :         aAddPrinterAttr.bPrintHiddenText = m_pPrintHiddenTextCB->IsChecked();
     385           0 :         aAddPrinterAttr.bPrintTextPlaceholder = m_pPrintTextPlaceholderCB->IsChecked();
     386             : 
     387           0 :         aAddPrinterAttr.bPrintLeftPages     = m_pLeftPageCB->IsChecked();
     388           0 :         aAddPrinterAttr.bPrintRightPages    = m_pRightPageCB->IsChecked();
     389           0 :         aAddPrinterAttr.bPrintReverse       = sal_False; // handled by vcl itself since CWS printerpullpages /*aReverseCB.IsChecked()*/;
     390           0 :         aAddPrinterAttr.bPrintProspect      = m_pProspectCB->IsChecked();
     391           0 :         aAddPrinterAttr.bPrintProspectRTL   = m_pProspectCB_RTL->IsChecked();
     392           0 :         aAddPrinterAttr.bPaperFromSetup     = m_pPaperFromSetupCB->IsChecked();
     393           0 :         aAddPrinterAttr.bPrintEmptyPages    = m_pPrintEmptyPagesCB->IsChecked();
     394           0 :         aAddPrinterAttr.bPrintSingleJobs    = sal_True; // handled by vcl in new print dialog since CWS printerpullpages /*aSingleJobsCB.IsChecked()*/;
     395             : 
     396           0 :         if (m_pNoRB->IsChecked())  aAddPrinterAttr.nPrintPostIts =
     397           0 :                                                         POSTITS_NONE;
     398           0 :         if (m_pOnlyRB->IsChecked()) aAddPrinterAttr.nPrintPostIts =
     399           0 :                                                         POSTITS_ONLY;
     400           0 :         if (m_pEndRB->IsChecked()) aAddPrinterAttr.nPrintPostIts =
     401           0 :                                                         POSTITS_ENDDOC;
     402           0 :         if (m_pEndPageRB->IsChecked()) aAddPrinterAttr.nPrintPostIts =
     403           0 :                                                         POSTITS_ENDPAGE;
     404             : 
     405           0 :         String sFax = m_pFaxLB->GetSelectEntry();
     406           0 :         aAddPrinterAttr.sFaxName = sNone == sFax ? aEmptyStr : sFax;
     407           0 :         rCoreSet.Put(aAddPrinterAttr);
     408             :     }
     409           0 :     return bAttrModified;
     410             : }
     411             : 
     412           0 : void    SwAddPrinterTabPage::Reset( const SfxItemSet&  )
     413             : {
     414           0 :     const   SfxItemSet&         rSet = GetItemSet();
     415           0 :     const   SwAddPrinterItem*   pAddPrinterAttr = 0;
     416             : 
     417           0 :     if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_ADDPRINTER , sal_False,
     418           0 :                                     (const SfxPoolItem**)&pAddPrinterAttr ))
     419             :     {
     420           0 :         m_pGrfCB->Check(pAddPrinterAttr->bPrintGraphic || pAddPrinterAttr->bPrintDraw);
     421           0 :         m_pCtrlFldCB->Check(       pAddPrinterAttr->bPrintControl);
     422           0 :         m_pBackgroundCB->Check(    pAddPrinterAttr->bPrintPageBackground);
     423           0 :         m_pBlackFontCB->Check(     pAddPrinterAttr->bPrintBlackFont);
     424           0 :         m_pPrintHiddenTextCB->Check( pAddPrinterAttr->bPrintHiddenText);
     425           0 :         m_pPrintTextPlaceholderCB->Check(pAddPrinterAttr->bPrintTextPlaceholder);
     426           0 :         m_pLeftPageCB->Check(      pAddPrinterAttr->bPrintLeftPages);
     427           0 :         m_pRightPageCB->Check(     pAddPrinterAttr->bPrintRightPages);
     428           0 :         m_pPaperFromSetupCB->Check(pAddPrinterAttr->bPaperFromSetup);
     429           0 :         m_pPrintEmptyPagesCB->Check(pAddPrinterAttr->bPrintEmptyPages);
     430           0 :         m_pProspectCB->Check(      pAddPrinterAttr->bPrintProspect);
     431           0 :         m_pProspectCB_RTL->Check(      pAddPrinterAttr->bPrintProspectRTL);
     432             : 
     433           0 :         m_pNoRB->Check (pAddPrinterAttr->nPrintPostIts== POSTITS_NONE ) ;
     434           0 :         m_pOnlyRB->Check (pAddPrinterAttr->nPrintPostIts== POSTITS_ONLY ) ;
     435           0 :         m_pEndRB->Check (pAddPrinterAttr->nPrintPostIts== POSTITS_ENDDOC ) ;
     436           0 :         m_pEndPageRB->Check (pAddPrinterAttr->nPrintPostIts== POSTITS_ENDPAGE ) ;
     437           0 :         m_pFaxLB->SelectEntry( pAddPrinterAttr->sFaxName );
     438             :     }
     439           0 :     if (m_pProspectCB->IsChecked())
     440             :     {
     441           0 :         m_pProspectCB_RTL->Enable(sal_True);
     442           0 :         m_pNoRB->Enable( sal_False );
     443           0 :         m_pOnlyRB->Enable( sal_False );
     444           0 :         m_pEndRB->Enable( sal_False );
     445           0 :         m_pEndPageRB->Enable( sal_False );
     446             :     }
     447             :     else
     448           0 :         m_pProspectCB_RTL->Enable( sal_False );
     449           0 : }
     450             : 
     451           0 : void    SwAddPrinterTabPage::Init()
     452             : {
     453             : 
     454           0 : }
     455             : 
     456           0 : IMPL_LINK_NOARG_INLINE_START(SwAddPrinterTabPage, AutoClickHdl)
     457             : {
     458           0 :     bAttrModified = sal_True;
     459           0 :     bool bIsProspect = m_pProspectCB->IsChecked();
     460           0 :     if (!bIsProspect)
     461           0 :         m_pProspectCB_RTL->Check( sal_False );
     462           0 :     m_pProspectCB_RTL->Enable( bIsProspect );
     463           0 :     m_pNoRB->Enable( !bIsProspect );
     464           0 :     m_pOnlyRB->Enable( !bIsProspect );
     465           0 :     m_pEndRB->Enable( !bIsProspect );
     466           0 :     m_pEndPageRB->Enable( !bIsProspect );
     467           0 :     return 0;
     468             : }
     469           0 : IMPL_LINK_NOARG_INLINE_END(SwAddPrinterTabPage, AutoClickHdl)
     470             : 
     471           0 : void  SwAddPrinterTabPage::SetFax( const std::vector<String>& rFaxLst )
     472             : {
     473           0 :     m_pFaxLB->InsertEntry(sNone);
     474           0 :     for(size_t i = 0; i < rFaxLst.size(); ++i)
     475             :     {
     476           0 :         m_pFaxLB->InsertEntry(rFaxLst[i]);
     477             :     }
     478           0 :     m_pFaxLB->SelectEntryPos(0);
     479           0 : }
     480             : 
     481           0 : IMPL_LINK_NOARG_INLINE_START(SwAddPrinterTabPage, SelectHdl)
     482             : {
     483           0 :     bAttrModified=sal_True;
     484           0 :     return 0;
     485             : }
     486           0 : IMPL_LINK_NOARG_INLINE_END(SwAddPrinterTabPage, SelectHdl)
     487             : 
     488           0 : void SwAddPrinterTabPage::PageCreated (SfxAllItemSet aSet)
     489             : {
     490           0 :     SFX_ITEMSET_ARG (&aSet,pListItem,SfxBoolItem,SID_FAX_LIST,sal_False);
     491           0 :     SFX_ITEMSET_ARG (&aSet,pPreviewItem,SfxBoolItem,SID_PREVIEWFLAG_TYPE,sal_False);
     492           0 :     if (pPreviewItem)
     493             :     {
     494           0 :         SetPreview(pPreviewItem->GetValue());
     495           0 :         Reset(aSet);
     496             :     }
     497           0 :     if (pListItem && pListItem->GetValue())
     498             :     {
     499           0 :         std::vector<String> aFaxList;
     500           0 :         const std::vector<rtl::OUString>& rPrinters = Printer::GetPrinterQueues();
     501           0 :         for (unsigned int i = 0; i < rPrinters.size(); ++i)
     502           0 :             aFaxList.insert(aFaxList.begin(), rPrinters[i]);
     503           0 :         SetFax( aFaxList );
     504             :     }
     505           0 : }
     506             : 
     507             : /*--------------------------------------------------
     508             :     Tabpage Standardfonts
     509             : --------------------------------------------------*/
     510           0 : SwStdFontTabPage::SwStdFontTabPage( Window* pParent,
     511             :                                        const SfxItemSet& rSet ) :
     512             :     SfxTabPage( pParent, SW_RES( TP_STD_FONT ), rSet),
     513             :     aStdChrFL  (this, SW_RES(FL_STDCHR  )),
     514             :     aTypeFT(        this, SW_RES( FT_TYPE          )),
     515             : 
     516             :     aStandardLbl(this, SW_RES(FT_STANDARD)),
     517             :     aStandardBox(this, SW_RES(LB_STANDARD)),
     518             : 
     519             :     aHeightFT(        this, SW_RES( FT_SIZE          )),
     520             :     aStandardHeightLB(this, SW_RES( LB_STANDARD_SIZE )),
     521             : 
     522             :     aTitleLbl   (this, SW_RES(FT_TITLE   )),
     523             :     aTitleBox   (this, SW_RES(LB_TITLE   )),
     524             :     aTitleHeightLB(   this, SW_RES( LB_TITLE_SIZE    )),
     525             : 
     526             :     aListLbl    (this, SW_RES(FT_LIST    )),
     527             :     aListBox    (this, SW_RES(LB_LIST    )),
     528             :     aListHeightLB(    this, SW_RES( LB_LIST_SIZE     )),
     529             : 
     530             :     aLabelLbl   (this, SW_RES(FT_LABEL   )),
     531             :     aLabelBox   (this, SW_RES(LB_LABEL   )),
     532             :     aLabelHeightLB(   this, SW_RES( LB_LABEL_SIZE    )),
     533             : 
     534             :     aIdxLbl     (this, SW_RES(FT_IDX     )),
     535             :     aIdxBox     (this, SW_RES(LB_IDX     )),
     536             :     aIndexHeightLB(   this, SW_RES( LB_INDEX_SIZE    )),
     537             : 
     538             :     aDocOnlyCB  (this, SW_RES(CB_DOCONLY )),
     539             :     aStandardPB (this, SW_RES(PB_STANDARD)),
     540             :     pPrt(0),
     541             :     pFontList(0),
     542             :     pFontConfig(0),
     543             :     pWrtShell(0),
     544           0 :     eLanguage( GetAppLanguage() ),
     545             : 
     546             :     bListDefault(sal_False),
     547             :     bSetListDefault(sal_True),
     548             :     bLabelDefault(sal_False),
     549             :     bSetLabelDefault(sal_True),
     550             :     bIdxDefault(sal_False),
     551             :     bSetIdxDefault(sal_True),
     552             :     bDeletePrinter(sal_False),
     553             : 
     554             :     bListHeightDefault    (sal_False),
     555             :     bSetListHeightDefault (sal_False),
     556             :     bLabelHeightDefault   (sal_False),
     557             :     bSetLabelHeightDefault(sal_False),
     558             :     bIndexHeightDefault     (sal_False),
     559             :     bSetIndexHeightDefault  (sal_False),
     560             : 
     561             :     nFontGroup(FONT_GROUP_DEFAULT),
     562             : 
     563             :     sScriptWestern(SW_RES(ST_SCRIPT_WESTERN)),
     564             :     sScriptAsian(SW_RES(ST_SCRIPT_ASIAN)),
     565           0 :     sScriptComplex(SW_RES(ST_SCRIPT_CTL))
     566             : {
     567           0 :     FreeResource();
     568           0 :     aStandardPB.SetClickHdl(LINK(this, SwStdFontTabPage, StandardHdl));
     569           0 :     aStandardBox.SetModifyHdl( LINK(this, SwStdFontTabPage, ModifyHdl));
     570           0 :     aListBox    .SetModifyHdl( LINK(this, SwStdFontTabPage, ModifyHdl));
     571           0 :     aLabelBox   .SetModifyHdl( LINK(this, SwStdFontTabPage, ModifyHdl));
     572           0 :     aIdxBox     .SetModifyHdl( LINK(this, SwStdFontTabPage, ModifyHdl));
     573           0 :     Link aFocusLink = LINK( this, SwStdFontTabPage, LoseFocusHdl);
     574           0 :     aStandardBox.SetLoseFocusHdl( aFocusLink );
     575           0 :     aTitleBox   .SetLoseFocusHdl( aFocusLink );
     576           0 :     aListBox    .SetLoseFocusHdl( aFocusLink );
     577           0 :     aLabelBox   .SetLoseFocusHdl( aFocusLink );
     578           0 :     aIdxBox     .SetLoseFocusHdl( aFocusLink );
     579             : 
     580           0 :     Link aModifyHeightLink( LINK( this, SwStdFontTabPage, ModifyHeightHdl));
     581           0 :     aStandardHeightLB.SetModifyHdl( aModifyHeightLink );
     582           0 :     aTitleHeightLB.   SetModifyHdl( aModifyHeightLink );
     583           0 :     aListHeightLB.    SetModifyHdl( aModifyHeightLink );
     584           0 :     aLabelHeightLB.   SetModifyHdl( aModifyHeightLink );
     585           0 :     aIndexHeightLB.   SetModifyHdl( aModifyHeightLink );
     586             : 
     587           0 :     aDocOnlyCB.Check(SW_MOD()->GetModuleConfig()->IsDefaultFontInCurrDocOnly());
     588           0 : }
     589             : 
     590           0 : SwStdFontTabPage::~SwStdFontTabPage()
     591             : {
     592           0 :     if(bDeletePrinter)
     593           0 :         delete pPrt;
     594           0 : }
     595             : 
     596           0 : SfxTabPage* SwStdFontTabPage::Create( Window* pParent,
     597             :                                 const SfxItemSet& rAttrSet )
     598             : {
     599           0 :     return new SwStdFontTabPage(pParent, rAttrSet);
     600             : }
     601             : 
     602           0 : static void lcl_SetColl(SwWrtShell* pWrtShell, sal_uInt16 nType,
     603             :                     SfxPrinter* pPrt, const String& rStyle,
     604             :                     sal_uInt16 nFontWhich)
     605             : {
     606           0 :     Font aFont( rStyle, Size( 0, 10 ) );
     607           0 :     if( pPrt )
     608           0 :         aFont = pPrt->GetFontMetric( aFont );
     609           0 :     SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(nType);
     610           0 :     pColl->SetFmtAttr(SvxFontItem(aFont.GetFamily(), aFont.GetName(),
     611           0 :                 aEmptyStr, aFont.GetPitch(), aFont.GetCharSet(), nFontWhich));
     612           0 : }
     613             : 
     614           0 : static void lcl_SetColl(SwWrtShell* pWrtShell, sal_uInt16 nType,
     615             :                     sal_Int32 nHeight, sal_uInt16 nFontHeightWhich)
     616             : {
     617           0 :     float fSize = (float)nHeight / 10;
     618           0 :     nHeight = CalcToUnit( fSize, SFX_MAPUNIT_TWIP );
     619           0 :     SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(nType);
     620           0 :     pColl->SetFmtAttr(SvxFontHeightItem(nHeight, 100, nFontHeightWhich));
     621           0 : }
     622             : 
     623           0 : sal_Bool SwStdFontTabPage::FillItemSet( SfxItemSet& )
     624             : {
     625           0 :     sal_Bool bNotDocOnly = !aDocOnlyCB.IsChecked();
     626           0 :     SW_MOD()->GetModuleConfig()->SetDefaultFontInCurrDocOnly(!bNotDocOnly);
     627             : 
     628           0 :     String sStandard    = aStandardBox.GetText();
     629           0 :     String sTitle       =  aTitleBox   .GetText();
     630           0 :     String sList        =  aListBox    .GetText();
     631           0 :     String sLabel       =  aLabelBox   .GetText();
     632           0 :     String sIdx         =  aIdxBox     .GetText();
     633             : 
     634           0 :     bool bStandardHeightChanged = aStandardHeightLB.GetSavedValue() != aStandardHeightLB.GetText();
     635           0 :     bool bTitleHeightChanged = aTitleHeightLB.GetSavedValue() != aTitleHeightLB.GetText();
     636           0 :     bool bListHeightChanged = aListHeightLB.GetSavedValue() != aListHeightLB.GetText() && (!bListHeightDefault || !bSetListHeightDefault );
     637           0 :     bool bLabelHeightChanged = aLabelHeightLB.GetSavedValue() != aLabelHeightLB.GetText() && (!bLabelHeightDefault || !bSetLabelHeightDefault );
     638           0 :     bool bIndexHeightChanged = aIndexHeightLB.GetSavedValue() != aIndexHeightLB.GetText() && (!bIndexHeightDefault || !bSetIndexHeightDefault );
     639           0 :     if(bNotDocOnly)
     640             :     {
     641           0 :         pFontConfig->SetFontStandard(sStandard, nFontGroup);
     642           0 :         pFontConfig->SetFontOutline(sTitle, nFontGroup);
     643           0 :         pFontConfig->SetFontList(sList, nFontGroup);
     644           0 :         pFontConfig->SetFontCaption(sLabel, nFontGroup);
     645           0 :         pFontConfig->SetFontIndex(sIdx, nFontGroup);
     646           0 :         if(bStandardHeightChanged)
     647             :         {
     648           0 :             float fSize = (float)aStandardHeightLB.GetValue() / 10;
     649           0 :             pFontConfig->SetFontHeight( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), FONT_STANDARD, nFontGroup );
     650             :         }
     651           0 :         if(bTitleHeightChanged)
     652             :         {
     653           0 :             float fSize = (float)aTitleHeightLB.GetValue() / 10;
     654           0 :             pFontConfig->SetFontHeight( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), FONT_OUTLINE, nFontGroup );
     655             :         }
     656           0 :         if(bListHeightChanged)
     657             :         {
     658           0 :             float fSize = (float)aListHeightLB.GetValue() / 10;
     659           0 :             pFontConfig->SetFontHeight( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), FONT_LIST, nFontGroup );
     660             :         }
     661           0 :         if(bLabelHeightChanged)
     662             :         {
     663           0 :             float fSize = (float)aLabelHeightLB.GetValue() / 10;
     664           0 :             pFontConfig->SetFontHeight( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), FONT_CAPTION, nFontGroup );
     665             :         }
     666           0 :         if(bIndexHeightChanged)
     667             :         {
     668           0 :             float fSize = (float)aIndexHeightLB.GetValue() / 10;
     669           0 :             pFontConfig->SetFontHeight( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), FONT_INDEX, nFontGroup );
     670             :         }
     671             :     }
     672           0 :     if(pWrtShell)
     673             :     {
     674           0 :         pWrtShell->StartAllAction();
     675           0 :         SfxPrinter* pPrinter = pWrtShell->getIDocumentDeviceAccess()->getPrinter( false );
     676           0 :         sal_Bool bMod = sal_False;
     677             :         sal_uInt16 nFontWhich = sal::static_int_cast< sal_uInt16, RES_CHRATR >(
     678             :             nFontGroup == FONT_GROUP_DEFAULT  ? RES_CHRATR_FONT :
     679           0 :             FONT_GROUP_CJK == nFontGroup ? RES_CHRATR_CJK_FONT : RES_CHRATR_CTL_FONT);
     680             :         sal_uInt16 nFontHeightWhich = sal::static_int_cast< sal_uInt16, RES_CHRATR >(
     681             :             nFontGroup == FONT_GROUP_DEFAULT  ? RES_CHRATR_FONTSIZE :
     682           0 :             FONT_GROUP_CJK == nFontGroup ? RES_CHRATR_CJK_FONTSIZE : RES_CHRATR_CTL_FONTSIZE);
     683           0 :         if(sStandard != sShellStd)
     684             :         {
     685           0 :             Font aFont( sStandard, Size( 0, 10 ) );
     686           0 :             if( pPrinter )
     687           0 :                 aFont = pPrinter->GetFontMetric( aFont );
     688           0 :             pWrtShell->SetDefault(SvxFontItem(aFont.GetFamily(), aFont.GetName(),
     689           0 :                                   aEmptyStr, aFont.GetPitch(), aFont.GetCharSet(), nFontWhich));
     690           0 :             SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_STANDARD);
     691           0 :             pColl->ResetFmtAttr(nFontWhich);
     692           0 :             bMod = sal_True;
     693             :         }
     694           0 :         if(bStandardHeightChanged)
     695             :         {
     696           0 :             float fSize = (float)aStandardHeightLB.GetValue() / 10;
     697           0 :             pWrtShell->SetDefault(SvxFontHeightItem( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), 100, nFontHeightWhich ) );
     698           0 :             SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_STANDARD);
     699           0 :             pColl->ResetFmtAttr(nFontHeightWhich);
     700           0 :             bMod = sal_True;
     701             :         }
     702             : 
     703           0 :         if(sTitle != sShellTitle )
     704             :         {
     705           0 :             lcl_SetColl(pWrtShell, RES_POOLCOLL_HEADLINE_BASE, pPrinter, sTitle, nFontWhich);
     706           0 :             bMod = sal_True;
     707             :         }
     708           0 :         if(bTitleHeightChanged)
     709             :         {
     710             :             lcl_SetColl(pWrtShell, RES_POOLCOLL_HEADLINE_BASE,
     711           0 :                 sal::static_int_cast< sal_uInt16, sal_Int64 >(aTitleHeightLB.GetValue()), nFontHeightWhich);
     712           0 :             bMod = sal_True;
     713             :         }
     714           0 :         if(sList != sShellList && (!bListDefault || !bSetListDefault ))
     715             :         {
     716           0 :             lcl_SetColl(pWrtShell, RES_POOLCOLL_NUMBUL_BASE, pPrinter, sList, nFontWhich);
     717           0 :             bMod = sal_True;
     718             :         }
     719           0 :         if(bListHeightChanged)
     720             :         {
     721             :             lcl_SetColl(pWrtShell, RES_POOLCOLL_NUMBUL_BASE,
     722           0 :                 sal::static_int_cast< sal_uInt16, sal_Int64 >(aListHeightLB.GetValue()), nFontHeightWhich);
     723           0 :             bMod = sal_True;
     724             :         }
     725           0 :         if(sLabel != sShellLabel && (!bLabelDefault || !bSetLabelDefault))
     726             :         {
     727           0 :             lcl_SetColl(pWrtShell, RES_POOLCOLL_LABEL, pPrinter, sLabel, nFontWhich);
     728           0 :             bMod = sal_True;
     729             :         }
     730           0 :         if(bLabelHeightChanged)
     731             :         {
     732             :             lcl_SetColl(pWrtShell, RES_POOLCOLL_LABEL,
     733           0 :                 sal::static_int_cast< sal_uInt16, sal_Int64 >(aLabelHeightLB.GetValue()), nFontHeightWhich);
     734           0 :             bMod = sal_True;
     735             :         }
     736           0 :         if(sIdx != sShellIndex && (!bIdxDefault || !bSetIdxDefault))
     737             :         {
     738           0 :             lcl_SetColl(pWrtShell, RES_POOLCOLL_REGISTER_BASE, pPrinter, sIdx, nFontWhich);
     739           0 :             bMod = sal_True;
     740             :         }
     741           0 :         if(bIndexHeightChanged)
     742             :         {
     743             :             lcl_SetColl(pWrtShell, RES_POOLCOLL_REGISTER_BASE,
     744           0 :                 sal::static_int_cast< sal_uInt16, sal_Int64 >(aIndexHeightLB.GetValue()), nFontHeightWhich);
     745           0 :             bMod = sal_True;
     746             :         }
     747           0 :         if ( bMod )
     748           0 :             pWrtShell->SetModified();
     749           0 :         pWrtShell->EndAllAction();
     750             :     }
     751             : 
     752           0 :     return sal_False;
     753             : }
     754             : 
     755           0 : void SwStdFontTabPage::Reset( const SfxItemSet& rSet)
     756             : {
     757             :     const SfxPoolItem* pLang;
     758             :     sal_uInt16 nLangSlot = nFontGroup == FONT_GROUP_DEFAULT  ? SID_ATTR_LANGUAGE :
     759           0 :         FONT_GROUP_CJK == nFontGroup ? SID_ATTR_CHAR_CJK_LANGUAGE : SID_ATTR_CHAR_CTL_LANGUAGE;
     760             : 
     761             : 
     762           0 :     if( SFX_ITEM_SET == rSet.GetItemState(nLangSlot, sal_False, &pLang))
     763           0 :         eLanguage = ((const SvxLanguageItem*)pLang)->GetValue();
     764             : 
     765           0 :     String sTmp(aStdChrFL.GetText());
     766           0 :     String sToReplace = sScriptWestern;
     767           0 :     if(FONT_GROUP_CJK == nFontGroup )
     768           0 :         sToReplace = sScriptAsian;
     769           0 :     else if(FONT_GROUP_CTL == nFontGroup )
     770           0 :         sToReplace = sScriptComplex;
     771             : 
     772           0 :     sTmp.SearchAndReplaceAscii("%1", sToReplace);
     773           0 :     aStdChrFL.SetText(sTmp);
     774             :     const SfxPoolItem* pItem;
     775             : 
     776           0 :     if(SFX_ITEM_SET == rSet.GetItemState(FN_PARAM_PRINTER, sal_False, &pItem))
     777             :     {
     778           0 :         pPrt = (SfxPrinter*)((const SwPtrItem*)pItem)->GetValue();
     779             :     }
     780             :     else
     781             :     {
     782             :         SfxItemSet* pPrinterSet = new SfxItemSet( *rSet.GetPool(),
     783             :                     SID_PRINTER_NOTFOUND_WARN, SID_PRINTER_NOTFOUND_WARN,
     784             :                     SID_PRINTER_CHANGESTODOC, SID_PRINTER_CHANGESTODOC,
     785           0 :                     0 );
     786           0 :         pPrt = new SfxPrinter(pPrinterSet);
     787           0 :         bDeletePrinter = sal_True;
     788             :     }
     789           0 :     pFontList = new FontList( pPrt );
     790             :     // #i94536# prevent duplication of font entries when 'reset' button is pressed
     791           0 :     if( !aStandardBox.GetEntryCount() )
     792             :     {
     793             :         // get the set of disctinct available family names
     794           0 :         std::set< String > aFontNames;
     795           0 :         int nFontNames = pPrt->GetDevFontCount();
     796           0 :         for( int i = 0; i < nFontNames; i++ )
     797             :         {
     798           0 :             FontInfo aInf( pPrt->GetDevFont( i ) );
     799           0 :             aFontNames.insert( aInf.GetName() );
     800           0 :         }
     801             : 
     802             :         // insert to listboxes
     803           0 :         for( std::set< String >::const_iterator it = aFontNames.begin();
     804           0 :              it != aFontNames.end(); ++it )
     805             :         {
     806           0 :             aStandardBox.InsertEntry( *it );
     807           0 :             aTitleBox   .InsertEntry( *it );
     808           0 :             aListBox    .InsertEntry( *it );
     809           0 :             aLabelBox   .InsertEntry( *it );
     810           0 :             aIdxBox     .InsertEntry( *it );
     811           0 :         }
     812             :     }
     813           0 :     if(SFX_ITEM_SET == rSet.GetItemState(FN_PARAM_STDFONTS, sal_False, &pItem))
     814             :     {
     815           0 :          pFontConfig = (SwStdFontConfig*)((const SwPtrItem*)pItem)->GetValue();
     816             :     }
     817             : 
     818           0 :     if(SFX_ITEM_SET == rSet.GetItemState(FN_PARAM_WRTSHELL, sal_False, &pItem))
     819             :     {
     820           0 :         pWrtShell = (SwWrtShell*)((const SwPtrItem*)pItem)->GetValue();
     821             :     }
     822           0 :     String sStdBackup;
     823           0 :     String sOutBackup;
     824           0 :     String sListBackup;
     825           0 :     String sCapBackup;
     826           0 :     String sIdxBackup;
     827           0 :     sal_Int32 nStandardHeight = -1;
     828           0 :     sal_Int32 nTitleHeight = -1;
     829           0 :     sal_Int32 nListHeight = -1;
     830           0 :     sal_Int32 nLabelHeight = -1;
     831           0 :     sal_Int32 nIndexHeight = -1;
     832             : 
     833           0 :     if(!pWrtShell)
     834             :     {
     835           0 :         sStdBackup = pFontConfig->GetFontStandard(nFontGroup);
     836           0 :         sOutBackup = pFontConfig->GetFontOutline(nFontGroup);
     837           0 :         sListBackup= pFontConfig->GetFontList(nFontGroup);
     838           0 :         sCapBackup = pFontConfig->GetFontCaption(nFontGroup);
     839           0 :         sIdxBackup = pFontConfig->GetFontIndex(nFontGroup);
     840           0 :         nStandardHeight = pFontConfig->GetFontHeight( FONT_STANDARD, nFontGroup, eLanguage );
     841           0 :         nTitleHeight =    pFontConfig->GetFontHeight( FONT_OUTLINE , nFontGroup, eLanguage );
     842           0 :         nListHeight =     pFontConfig->GetFontHeight( FONT_LIST    , nFontGroup, eLanguage );
     843           0 :         nLabelHeight =    pFontConfig->GetFontHeight( FONT_CAPTION , nFontGroup, eLanguage );
     844           0 :         nIndexHeight =    pFontConfig->GetFontHeight( FONT_INDEX   , nFontGroup, eLanguage );
     845           0 :         if( nStandardHeight <= 0)
     846           0 :             nStandardHeight = pFontConfig->GetDefaultHeightFor( FONT_STANDARD + nFontGroup * FONT_PER_GROUP, eLanguage);
     847           0 :         if( nTitleHeight <= 0)
     848           0 :             nTitleHeight = pFontConfig->GetDefaultHeightFor( FONT_OUTLINE + nFontGroup * FONT_PER_GROUP, eLanguage);
     849           0 :         if( nListHeight <= 0)
     850           0 :             nListHeight = pFontConfig->GetDefaultHeightFor( FONT_LIST + nFontGroup * FONT_PER_GROUP, eLanguage);
     851           0 :         if( nLabelHeight <= 0)
     852           0 :             nLabelHeight = pFontConfig->GetDefaultHeightFor( FONT_CAPTION + nFontGroup * FONT_PER_GROUP, eLanguage);
     853           0 :         if( nIndexHeight <= 0)
     854           0 :             nIndexHeight = pFontConfig->GetDefaultHeightFor( FONT_INDEX + nFontGroup * FONT_PER_GROUP, eLanguage);
     855             : 
     856           0 :        aDocOnlyCB.Enable(sal_False);
     857             :     }
     858             :     else
     859             :     {
     860           0 :         SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_STANDARD);
     861           0 :         const SvxFontItem& rFont = !nFontGroup ? pColl->GetFont() :
     862           0 :                 FONT_GROUP_CJK == nFontGroup ? pColl->GetCJKFont() : pColl->GetCTLFont();
     863           0 :         sShellStd = sStdBackup =  rFont.GetFamilyName();
     864             : 
     865             :         sal_uInt16 nFontHeightWhich = sal::static_int_cast< sal_uInt16, RES_CHRATR >(
     866             :             nFontGroup == FONT_GROUP_DEFAULT  ? RES_CHRATR_FONTSIZE :
     867           0 :             FONT_GROUP_CJK == nFontGroup ? RES_CHRATR_CJK_FONTSIZE : RES_CHRATR_CTL_FONTSIZE );
     868           0 :         const SvxFontHeightItem& rFontHeightStandard = (const SvxFontHeightItem& )pColl->GetFmtAttr(nFontHeightWhich);
     869           0 :         nStandardHeight = (sal_Int32)rFontHeightStandard.GetHeight();
     870             : 
     871           0 :         pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_HEADLINE_BASE);
     872           0 :         const SvxFontItem& rFontHL = !nFontGroup ? pColl->GetFont() :
     873           0 :                 FONT_GROUP_CJK == nFontGroup ? pColl->GetCJKFont() : pColl->GetCTLFont();
     874           0 :         sShellTitle = sOutBackup = rFontHL.GetFamilyName();
     875             : 
     876           0 :         const SvxFontHeightItem& rFontHeightTitle = (const SvxFontHeightItem&)pColl->GetFmtAttr( nFontHeightWhich, sal_True );
     877           0 :         nTitleHeight = (sal_Int32)rFontHeightTitle.GetHeight();
     878             : 
     879             :         sal_uInt16 nFontWhich = sal::static_int_cast< sal_uInt16, RES_CHRATR >(
     880             :             nFontGroup == FONT_GROUP_DEFAULT  ? RES_CHRATR_FONT :
     881           0 :             FONT_GROUP_CJK == nFontGroup ? RES_CHRATR_CJK_FONT : RES_CHRATR_CTL_FONT);
     882           0 :         pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_NUMBUL_BASE);
     883           0 :         const SvxFontItem& rFontLS = !nFontGroup ? pColl->GetFont() :
     884           0 :                 FONT_GROUP_CJK == nFontGroup ? pColl->GetCJKFont() : pColl->GetCTLFont();
     885           0 :         bListDefault = SFX_ITEM_DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, sal_False);
     886           0 :         sShellList = sListBackup = rFontLS.GetFamilyName();
     887             : 
     888           0 :         const SvxFontHeightItem& rFontHeightList = (const SvxFontHeightItem&)pColl->GetFmtAttr(nFontHeightWhich, sal_True);
     889           0 :         nListHeight = (sal_Int32)rFontHeightList.GetHeight();
     890           0 :         bListHeightDefault = SFX_ITEM_DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, sal_False);
     891             : 
     892             : 
     893           0 :         pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_LABEL);
     894           0 :         bLabelDefault = SFX_ITEM_DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, sal_False);
     895           0 :         const SvxFontItem& rFontCP = !nFontGroup ? pColl->GetFont() :
     896           0 :                 FONT_GROUP_CJK == nFontGroup ? pColl->GetCJKFont() : pColl->GetCTLFont();
     897           0 :         sShellLabel = sCapBackup = rFontCP.GetFamilyName();
     898           0 :         const SvxFontHeightItem& rFontHeightLabel = (const SvxFontHeightItem&)pColl->GetFmtAttr(nFontHeightWhich, sal_True);
     899           0 :         nLabelHeight = (sal_Int32)rFontHeightLabel.GetHeight();
     900           0 :         bLabelHeightDefault = SFX_ITEM_DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, sal_False);
     901             : 
     902           0 :         pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_REGISTER_BASE);
     903           0 :         bIdxDefault = SFX_ITEM_DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, sal_False);
     904           0 :         const SvxFontItem& rFontIDX = !nFontGroup ? pColl->GetFont() :
     905           0 :                 FONT_GROUP_CJK == nFontGroup ? pColl->GetCJKFont() : pColl->GetCTLFont();
     906           0 :         sShellIndex = sIdxBackup = rFontIDX.GetFamilyName();
     907           0 :         const SvxFontHeightItem& rFontHeightIndex = (const SvxFontHeightItem&)pColl->GetFmtAttr(nFontHeightWhich, sal_True);
     908           0 :         nIndexHeight = (sal_Int32)rFontHeightIndex.GetHeight();
     909           0 :         bIndexHeightDefault = SFX_ITEM_DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, sal_False);
     910             :     }
     911           0 :     aStandardBox.SetText(sStdBackup );
     912           0 :     aTitleBox   .SetText(sOutBackup );
     913           0 :     aListBox    .SetText(sListBackup);
     914           0 :     aLabelBox   .SetText(sCapBackup );
     915           0 :     aIdxBox     .SetText(sIdxBackup );
     916             : 
     917           0 :     FontInfo aFontInfo( pFontList->Get(sStdBackup, sStdBackup) );
     918           0 :     aStandardHeightLB.Fill( &aFontInfo, pFontList );
     919           0 :     aFontInfo = pFontList->Get(sOutBackup, sOutBackup );
     920           0 :     aTitleHeightLB.Fill( &aFontInfo, pFontList );
     921           0 :     aFontInfo = pFontList->Get(sListBackup,sListBackup);
     922           0 :     aListHeightLB.Fill( &aFontInfo, pFontList );
     923           0 :     aFontInfo = pFontList->Get(sCapBackup, sCapBackup );
     924           0 :     aLabelHeightLB.Fill( &aFontInfo, pFontList );
     925           0 :     aFontInfo = pFontList->Get(sIdxBackup, sIdxBackup );
     926           0 :     aIndexHeightLB.Fill( &aFontInfo, pFontList );
     927             : 
     928           0 :     aStandardHeightLB.SetValue( CalcToPoint( nStandardHeight, SFX_MAPUNIT_TWIP, 10 ) );
     929           0 :     aTitleHeightLB.   SetValue( CalcToPoint( nTitleHeight   , SFX_MAPUNIT_TWIP, 10 ) );
     930           0 :     aListHeightLB.    SetValue( CalcToPoint( nListHeight    , SFX_MAPUNIT_TWIP, 10 ) );
     931           0 :     aLabelHeightLB.   SetValue( CalcToPoint( nLabelHeight   , SFX_MAPUNIT_TWIP, 10 ));
     932           0 :     aIndexHeightLB.   SetValue( CalcToPoint( nIndexHeight   , SFX_MAPUNIT_TWIP, 10 ));
     933             : 
     934           0 :     aStandardBox.SaveValue();
     935           0 :     aTitleBox   .SaveValue();
     936           0 :     aListBox    .SaveValue();
     937           0 :     aLabelBox   .SaveValue();
     938           0 :     aIdxBox     .SaveValue();
     939             : 
     940           0 :     aStandardHeightLB.SaveValue();
     941           0 :     aTitleHeightLB.   SaveValue();
     942           0 :     aListHeightLB.    SaveValue();
     943           0 :     aLabelHeightLB.   SaveValue();
     944           0 :     aIndexHeightLB.   SaveValue();
     945           0 : }
     946             : 
     947           0 : IMPL_LINK_NOARG(SwStdFontTabPage, StandardHdl)
     948             : {
     949           0 :     sal_uInt8 nFontOffset = nFontGroup * FONT_PER_GROUP;
     950           0 :     aStandardBox.SetText(SwStdFontConfig::GetDefaultFor(FONT_STANDARD + nFontOffset, eLanguage));
     951           0 :     aTitleBox   .SetText(SwStdFontConfig::GetDefaultFor(FONT_OUTLINE  + nFontOffset, eLanguage));
     952           0 :     aListBox    .SetText(SwStdFontConfig::GetDefaultFor(FONT_LIST     + nFontOffset, eLanguage));
     953           0 :     aLabelBox   .SetText(SwStdFontConfig::GetDefaultFor(FONT_CAPTION  + nFontOffset, eLanguage));
     954           0 :     aIdxBox     .SetText(SwStdFontConfig::GetDefaultFor(FONT_INDEX    + nFontOffset, eLanguage));
     955             : 
     956           0 :     aStandardBox.SaveValue();
     957           0 :     aTitleBox   .SaveValue();
     958           0 :     aListBox    .SaveValue();
     959           0 :     aLabelBox   .SaveValue();
     960           0 :     aIdxBox     .SaveValue();
     961             : 
     962             :     aStandardHeightLB.SetValue( CalcToPoint(
     963             :         SwStdFontConfig::GetDefaultHeightFor(FONT_STANDARD + nFontOffset, eLanguage),
     964           0 :             SFX_MAPUNIT_TWIP, 10 ) );
     965             :     aTitleHeightLB   .SetValue(CalcToPoint(
     966             :         SwStdFontConfig::GetDefaultHeightFor(FONT_OUTLINE  +
     967           0 :             nFontOffset, eLanguage), SFX_MAPUNIT_TWIP, 10 ));
     968             :     aListHeightLB    .SetValue(CalcToPoint(
     969             :         SwStdFontConfig::GetDefaultHeightFor(FONT_LIST + nFontOffset, eLanguage),
     970           0 :             SFX_MAPUNIT_TWIP, 10 ));
     971             :     aLabelHeightLB   .SetValue(CalcToPoint(
     972             :         SwStdFontConfig::GetDefaultHeightFor(FONT_CAPTION  + nFontOffset, eLanguage),
     973           0 :             SFX_MAPUNIT_TWIP, 10 ));
     974             :     aIndexHeightLB   .SetValue(CalcToPoint(
     975             :         SwStdFontConfig::GetDefaultHeightFor(FONT_INDEX    + nFontOffset, eLanguage),
     976           0 :             SFX_MAPUNIT_TWIP, 10 ));
     977             : 
     978           0 :     return 0;
     979             : }
     980             : 
     981           0 : IMPL_LINK( SwStdFontTabPage, ModifyHdl, ComboBox*, pBox )
     982             : {
     983           0 :     if(pBox == &aStandardBox)
     984             :     {
     985           0 :         String sEntry = pBox->GetText();
     986           0 :         if(bSetListDefault && bListDefault)
     987           0 :             aListBox.SetText(sEntry);
     988           0 :         if(bSetLabelDefault && bLabelDefault)
     989           0 :             aLabelBox.SetText(sEntry);
     990           0 :         if(bSetIdxDefault && bIdxDefault)
     991           0 :             aIdxBox.SetText(sEntry);
     992             :     }
     993           0 :     else if(pBox == &aListBox)
     994             :     {
     995           0 :         bSetListDefault = sal_False;
     996             :     }
     997           0 :     else if(pBox == &aLabelBox)
     998             :     {
     999           0 :         bSetLabelDefault = sal_False;
    1000             :     }
    1001           0 :     else if(pBox == &aIdxBox)
    1002             :     {
    1003           0 :         bSetIdxDefault = sal_False;
    1004             :     }
    1005           0 :     return 0;
    1006             : }
    1007             : 
    1008           0 : IMPL_LINK( SwStdFontTabPage, ModifyHeightHdl, FontSizeBox*, pBox )
    1009             : {
    1010           0 :     if(pBox == &aStandardHeightLB)
    1011             :     {
    1012           0 :         sal_Int64 nValue = pBox->GetValue(FUNIT_TWIP);
    1013           0 :         if(bSetListHeightDefault && bListHeightDefault)
    1014           0 :             aListHeightLB.SetValue(nValue, FUNIT_TWIP);
    1015           0 :         if(bSetLabelHeightDefault && bLabelHeightDefault)
    1016           0 :             aLabelHeightLB.SetValue(nValue, FUNIT_TWIP);
    1017           0 :         if(bSetIndexHeightDefault && bIndexHeightDefault)
    1018           0 :             aIndexHeightLB.SetValue(nValue, FUNIT_TWIP);
    1019             :     }
    1020           0 :     else if(pBox == &aListHeightLB)
    1021             :     {
    1022           0 :         bSetListHeightDefault = sal_False;
    1023             :     }
    1024           0 :     else if(pBox == &aLabelHeightLB)
    1025             :     {
    1026           0 :         bSetLabelHeightDefault = sal_False;
    1027             :     }
    1028           0 :     else if(pBox == &aIndexHeightLB)
    1029             :     {
    1030           0 :         bSetIndexHeightDefault = sal_False;
    1031             :     }
    1032           0 :     return 0;
    1033             : }
    1034             : 
    1035           0 : IMPL_LINK( SwStdFontTabPage, LoseFocusHdl, ComboBox*, pBox )
    1036             : {
    1037           0 :     FontSizeBox* pHeightLB = 0;
    1038           0 :     String sEntry = pBox->GetText();
    1039           0 :     if(pBox == &aStandardBox)
    1040             :     {
    1041           0 :         pHeightLB = &aStandardHeightLB;
    1042             :     }
    1043           0 :     else if(pBox == &aTitleBox)
    1044             :     {
    1045           0 :         pHeightLB = &aTitleHeightLB;
    1046             :     }
    1047           0 :     else if(pBox == &aListBox)
    1048             :     {
    1049           0 :         pHeightLB = &aListHeightLB;
    1050             :     }
    1051           0 :     else if(pBox == &aLabelBox)
    1052             :     {
    1053           0 :         pHeightLB = &aLabelHeightLB;
    1054             :     }
    1055             :     else /*if(pBox == &aIdxBox)*/
    1056             :     {
    1057           0 :         pHeightLB = &aIndexHeightLB;
    1058             :     }
    1059           0 :     FontInfo aFontInfo( pFontList->Get(sEntry, sEntry) );
    1060           0 :     pHeightLB->Fill( &aFontInfo, pFontList );
    1061             : 
    1062           0 :     return 0;
    1063             : }
    1064             : 
    1065             : 
    1066           0 : void SwStdFontTabPage::PageCreated (SfxAllItemSet aSet)
    1067             : {
    1068           0 :     SFX_ITEMSET_ARG (&aSet,pFlagItem,SfxUInt16Item, SID_FONTMODE_TYPE, sal_False);
    1069           0 :     if (pFlagItem)
    1070           0 :         SetFontMode(sal::static_int_cast< sal_uInt8, sal_uInt16>( pFlagItem->GetValue()));
    1071           0 : }
    1072             : 
    1073           0 : SwTableOptionsTabPage::SwTableOptionsTabPage( Window* pParent, const SfxItemSet& rSet ) :
    1074             :     SfxTabPage(pParent, SW_RES(TP_OPTTABLE_PAGE), rSet),
    1075             :     aTableFL        (this, SW_RES(FL_TABLE           )),
    1076             :     aHeaderCB       (this, SW_RES(CB_HEADER          )),
    1077             :     aRepeatHeaderCB (this, SW_RES(CB_REPEAT_HEADER    )),
    1078             :     aDontSplitCB    (this, SW_RES(CB_DONT_SPLIT       )),
    1079             :     aBorderCB       (this, SW_RES(CB_BORDER           )),
    1080             : 
    1081             :     aSeparatorFL     (this, SW_RES(FL_TABLE_SEPARATOR)),
    1082             : 
    1083             :     aTableInsertFL  (this, SW_RES(FL_TABLE_INSERT    )),
    1084             :     aNumFormattingCB(this, SW_RES(CB_NUMFORMATTING   )),
    1085             :     aNumFmtFormattingCB(this, SW_RES(CB_NUMFMT_FORMATTING )),
    1086             :     aNumAlignmentCB (this, SW_RES(CB_NUMALIGNMENT )),
    1087             : 
    1088             :     aMoveFL(        this, SW_RES(FL_MOVE     )),
    1089             :     aMoveFT(        this, SW_RES(FT_MOVE     )),
    1090             :     aRowMoveFT(     this, SW_RES(FT_ROWMOVE  )),
    1091             :     aRowMoveMF(     this, SW_RES(MF_ROWMOVE   )),
    1092             :     aColMoveFT(     this, SW_RES(FT_COLMOVE   )),
    1093             :     aColMoveMF(     this, SW_RES(MF_COLMOVE   )),
    1094             : 
    1095             :     aInsertFT(      this, SW_RES(FT_INSERT   )),
    1096             :     aRowInsertFT(   this, SW_RES(FT_ROWINSERT)),
    1097             :     aRowInsertMF(   this, SW_RES(MF_ROWINSERT)),
    1098             :     aColInsertFT(   this, SW_RES(FT_COLINSERT)),
    1099             :     aColInsertMF(   this, SW_RES(MF_COLINSERT)),
    1100             : 
    1101             :     aHandlingFT(    this, SW_RES(FT_HANDLING )),
    1102             :     aFixRB(         this, SW_RES(RB_FIX       )),
    1103             :     aFixPropRB(     this, SW_RES(RB_FIXPROP  )),
    1104             :     aVarRB(         this, SW_RES(RB_VAR      )),
    1105             :     aFixFT(         this, SW_RES(FT_FIX      )),
    1106             :     aFixPropFT(     this, SW_RES(FT_FIXPROP   )),
    1107             :     aVarFT(         this, SW_RES(FT_VAR       )),
    1108             :     pWrtShell(0),
    1109           0 :     bHTMLMode(sal_False)
    1110             : {
    1111           0 :     FreeResource();
    1112             : 
    1113           0 :     Link aLnk(LINK(this, SwTableOptionsTabPage, CheckBoxHdl));
    1114           0 :     aNumFormattingCB.SetClickHdl(aLnk);
    1115           0 :     aNumFmtFormattingCB.SetClickHdl(aLnk);
    1116           0 :     aHeaderCB.SetClickHdl(aLnk);
    1117           0 : }
    1118             : 
    1119           0 : SwTableOptionsTabPage::~SwTableOptionsTabPage()
    1120             : {
    1121           0 : }
    1122             : 
    1123           0 : SfxTabPage* SwTableOptionsTabPage::Create( Window* pParent,
    1124             :                                 const SfxItemSet& rAttrSet )
    1125             : {
    1126           0 :     return new SwTableOptionsTabPage(pParent, rAttrSet );
    1127             : }
    1128             : 
    1129           0 : sal_Bool SwTableOptionsTabPage::FillItemSet( SfxItemSet& )
    1130             : {
    1131           0 :     sal_Bool bRet = sal_False;
    1132           0 :     SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig();
    1133             : 
    1134           0 :     if(aRowMoveMF.IsModified())
    1135           0 :         pModOpt->SetTblHMove( (sal_uInt16)aRowMoveMF.Denormalize( aRowMoveMF.GetValue(FUNIT_TWIP)));
    1136             : 
    1137           0 :     if(aColMoveMF.IsModified())
    1138           0 :         pModOpt->SetTblVMove( (sal_uInt16)aColMoveMF.Denormalize( aColMoveMF.GetValue(FUNIT_TWIP)));
    1139             : 
    1140           0 :     if(aRowInsertMF.IsModified())
    1141           0 :         pModOpt->SetTblHInsert((sal_uInt16)aRowInsertMF.Denormalize( aRowInsertMF.GetValue(FUNIT_TWIP)));
    1142             : 
    1143           0 :     if(aColInsertMF.IsModified())
    1144           0 :         pModOpt->SetTblVInsert((sal_uInt16)aColInsertMF.Denormalize( aColInsertMF.GetValue(FUNIT_TWIP)));
    1145             : 
    1146             :     TblChgMode eMode;
    1147           0 :     if(aFixRB.IsChecked())
    1148           0 :         eMode = TBLFIX_CHGABS;
    1149           0 :     else if(aFixPropRB.IsChecked())
    1150           0 :         eMode = TBLFIX_CHGPROP;
    1151             :     else
    1152           0 :         eMode = TBLVAR_CHGABS;
    1153           0 :     if(eMode != pModOpt->GetTblMode())
    1154             :     {
    1155           0 :         pModOpt->SetTblMode(eMode);
    1156             :         // the table-keyboard-mode has changed, now the current
    1157             :         // table should know about that too.
    1158           0 :         if(pWrtShell && nsSelectionType::SEL_TBL & pWrtShell->GetSelectionType())
    1159             :         {
    1160           0 :             pWrtShell->SetTblChgMode(eMode);
    1161             :             static sal_uInt16 aInva[] =
    1162             :                                 {   FN_TABLE_MODE_FIX,
    1163             :                                     FN_TABLE_MODE_FIX_PROP,
    1164             :                                     FN_TABLE_MODE_VARIABLE,
    1165             :                                     0
    1166             :                                 };
    1167           0 :             pWrtShell->GetView().GetViewFrame()->GetBindings().Invalidate( aInva );
    1168             :         }
    1169             : 
    1170           0 :         bRet = sal_True;
    1171             :     }
    1172             : 
    1173           0 :     SwInsertTableOptions aInsOpts( 0, 0 );
    1174             : 
    1175           0 :     if (aHeaderCB.IsChecked())
    1176           0 :         aInsOpts.mnInsMode |= tabopts::HEADLINE;
    1177             : 
    1178           0 :     if (aRepeatHeaderCB.IsEnabled() )
    1179           0 :         aInsOpts.mnRowsToRepeat = aRepeatHeaderCB.IsChecked()? 1 : 0;
    1180             : 
    1181           0 :     if (!aDontSplitCB.IsChecked())
    1182           0 :         aInsOpts.mnInsMode |= tabopts::SPLIT_LAYOUT;
    1183             : 
    1184           0 :     if (aBorderCB.IsChecked())
    1185           0 :         aInsOpts.mnInsMode |= tabopts::DEFAULT_BORDER;
    1186             : 
    1187           0 :     if (aHeaderCB.GetSavedValue() != aHeaderCB.GetState() ||
    1188           0 :         aRepeatHeaderCB.GetSavedValue() != aRepeatHeaderCB.GetState() ||
    1189           0 :         aDontSplitCB.GetSavedValue() != aDontSplitCB.GetState() ||
    1190           0 :         aBorderCB.GetSavedValue() != aBorderCB.GetState())
    1191             :     {
    1192           0 :         pModOpt->SetInsTblFlags(bHTMLMode, aInsOpts);
    1193             :     }
    1194             : 
    1195           0 :     if (aNumFormattingCB.GetSavedValue() != aNumFormattingCB.GetState())
    1196             :     {
    1197           0 :         pModOpt->SetInsTblFormatNum(bHTMLMode, aNumFormattingCB.IsChecked());
    1198           0 :         bRet = sal_True;
    1199             :     }
    1200             : 
    1201           0 :     if (aNumFmtFormattingCB.GetSavedValue() != aNumFmtFormattingCB.GetState())
    1202             :     {
    1203           0 :         pModOpt->SetInsTblChangeNumFormat(bHTMLMode, aNumFmtFormattingCB.IsChecked());
    1204           0 :         bRet = sal_True;
    1205             :     }
    1206             : 
    1207           0 :     if (aNumAlignmentCB.GetSavedValue() != aNumAlignmentCB.GetState())
    1208             :     {
    1209           0 :         pModOpt->SetInsTblAlignNum(bHTMLMode, aNumAlignmentCB.IsChecked());
    1210           0 :         bRet = sal_True;
    1211             :     }
    1212             : 
    1213           0 :     return bRet;
    1214             : }
    1215             : 
    1216           0 : void SwTableOptionsTabPage::Reset( const SfxItemSet& rSet)
    1217             : {
    1218           0 :     const SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig();
    1219           0 :     if ( rSet.GetItemState( SID_ATTR_METRIC ) >= SFX_ITEM_AVAILABLE )
    1220             :     {
    1221           0 :         const SfxUInt16Item& rItem = (SfxUInt16Item&)rSet.Get( SID_ATTR_METRIC );
    1222           0 :         FieldUnit eFieldUnit = (FieldUnit)rItem.GetValue();
    1223           0 :         ::SetFieldUnit( aRowMoveMF, eFieldUnit );
    1224           0 :         ::SetFieldUnit( aColMoveMF, eFieldUnit );
    1225           0 :         ::SetFieldUnit( aRowInsertMF, eFieldUnit );
    1226           0 :         ::SetFieldUnit( aColInsertMF, eFieldUnit );
    1227             :     }
    1228             : 
    1229           0 :     aRowMoveMF  .SetValue(aRowMoveMF.Normalize(pModOpt->GetTblHMove()), FUNIT_TWIP);
    1230           0 :     aColMoveMF  .SetValue(aColMoveMF.Normalize(pModOpt->GetTblVMove()), FUNIT_TWIP);
    1231           0 :     aRowInsertMF.SetValue(aRowInsertMF.Normalize(pModOpt->GetTblHInsert()), FUNIT_TWIP);
    1232           0 :     aColInsertMF.SetValue(aColInsertMF.Normalize(pModOpt->GetTblVInsert()), FUNIT_TWIP);
    1233             : 
    1234           0 :     switch(pModOpt->GetTblMode())
    1235             :     {
    1236           0 :         case TBLFIX_CHGABS:     aFixRB.Check();     break;
    1237           0 :         case TBLFIX_CHGPROP:    aFixPropRB.Check(); break;
    1238           0 :         case TBLVAR_CHGABS:     aVarRB.Check(); break;
    1239             :     }
    1240             :     const SfxPoolItem* pItem;
    1241           0 :     if(SFX_ITEM_SET == rSet.GetItemState(SID_HTML_MODE, sal_False, &pItem))
    1242             :     {
    1243           0 :         bHTMLMode = 0 != (((const SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON);
    1244             :     }
    1245             : 
    1246             :     // hide certain controls for html
    1247           0 :     if(bHTMLMode)
    1248             :     {
    1249           0 :         aRepeatHeaderCB.Hide();
    1250           0 :         aDontSplitCB.Hide();
    1251             : 
    1252             :         long nMoveUpBy =
    1253           0 :         aRepeatHeaderCB.LogicToPixel( Size( 13, 13 ), MAP_APPFONT ).Height();
    1254             : 
    1255           0 :         Point aPos = aRepeatHeaderCB.GetPosPixel();
    1256           0 :         aRepeatHeaderCB.SetPosPixel( Point( aPos.X(), aPos.Y() - nMoveUpBy ) );
    1257             : 
    1258             :         nMoveUpBy +=
    1259           0 :         aDontSplitCB.LogicToPixel( Size( 13, 13 ), MAP_APPFONT ).Height();
    1260             : 
    1261           0 :         aPos = aBorderCB.GetPosPixel();
    1262           0 :         aBorderCB.SetPosPixel( Point( aPos.X(), aPos.Y() - nMoveUpBy ) );
    1263             :     }
    1264             : 
    1265           0 :     SwInsertTableOptions aInsOpts = pModOpt->GetInsTblFlags(bHTMLMode);
    1266           0 :     sal_uInt16 nInsTblFlags = aInsOpts.mnInsMode;
    1267             : 
    1268           0 :     aHeaderCB.Check(0 != (nInsTblFlags & tabopts::HEADLINE));
    1269           0 :     aRepeatHeaderCB.Check((!bHTMLMode) && (aInsOpts.mnRowsToRepeat > 0));
    1270           0 :     aDontSplitCB.Check(!(nInsTblFlags & tabopts::SPLIT_LAYOUT));
    1271           0 :     aBorderCB.Check(0 != (nInsTblFlags & tabopts::DEFAULT_BORDER));
    1272             : 
    1273           0 :     aNumFormattingCB.Check(pModOpt->IsInsTblFormatNum(bHTMLMode));
    1274           0 :     aNumFmtFormattingCB.Check(pModOpt->IsInsTblChangeNumFormat(bHTMLMode));
    1275           0 :     aNumAlignmentCB.Check(pModOpt->IsInsTblAlignNum(bHTMLMode));
    1276             : 
    1277           0 :     aHeaderCB.SaveValue();
    1278           0 :     aRepeatHeaderCB.SaveValue();
    1279           0 :     aDontSplitCB.SaveValue();
    1280           0 :     aBorderCB.SaveValue();
    1281           0 :     aNumFormattingCB.SaveValue();
    1282           0 :     aNumFmtFormattingCB.SaveValue();
    1283           0 :     aNumAlignmentCB.SaveValue();
    1284             : 
    1285           0 :     CheckBoxHdl(0);
    1286           0 : }
    1287             : 
    1288           0 : IMPL_LINK_NOARG(SwTableOptionsTabPage, CheckBoxHdl)
    1289             : {
    1290           0 :     aNumFmtFormattingCB.Enable(aNumFormattingCB.IsChecked());
    1291           0 :     aNumAlignmentCB.Enable(aNumFormattingCB.IsChecked());
    1292           0 :     aRepeatHeaderCB.Enable(aHeaderCB.IsChecked());
    1293           0 :     return 0;
    1294             : }
    1295             : 
    1296           0 : void SwTableOptionsTabPage::PageCreated (SfxAllItemSet aSet)
    1297             : {
    1298           0 :     SFX_ITEMSET_ARG (&aSet,pWrtSh,SwWrtShellItem,SID_WRT_SHELL,sal_False);
    1299           0 :     if (pWrtSh)
    1300           0 :         SetWrtShell(pWrtSh->GetValue());
    1301           0 : }
    1302             : 
    1303           0 : SwShdwCrsrOptionsTabPage::SwShdwCrsrOptionsTabPage( Window* pParent,
    1304             :                                                     const SfxItemSet& rSet )
    1305             :     : SfxTabPage(pParent, SW_RES(TP_OPTSHDWCRSR), rSet),
    1306             :     aUnprintFL   ( this,   SW_RES( FL_NOPRINT  ) ),
    1307             :     aParaCB       ( this,   SW_RES( CB_PARA      ) ),
    1308             :     aSHyphCB      ( this,   SW_RES( CB_SHYPH        ) ),
    1309             :     aSpacesCB     ( this,   SW_RES( CB_SPACE    ) ),
    1310             :     aHSpacesCB    ( this,   SW_RES( CB_HSPACE   ) ),
    1311             :     aTabCB        ( this,   SW_RES( CB_TAB      ) ),
    1312             :     aBreakCB      ( this,   SW_RES( CB_BREAK        ) ),
    1313             :     aCharHiddenCB     ( this,   SW_RES( CB_CHAR_HIDDEN   ) ),
    1314             :     aFldHiddenCB     ( this,   SW_RES( CB_FLD_HIDDEN   ) ),
    1315             :     aFldHiddenParaCB ( this,   SW_RES( CB_FLD_HIDDEN_PARA ) ),
    1316             : 
    1317             :     aSeparatorFL(   this, SW_RES( FL_SEPARATOR_SHDW)),
    1318             : 
    1319             :     aFlagFL( this, SW_RES( FL_SHDWCRSFLAG )),
    1320             :     aOnOffCB( this, SW_RES( CB_SHDWCRSONOFF )),
    1321             : 
    1322             :     aFillModeFT( this, SW_RES( FT_SHDWCRSFILLMODE )),
    1323             :     aFillMarginRB( this, SW_RES( RB_SHDWCRSFILLMARGIN )),
    1324             :     aFillIndentRB( this, SW_RES( RB_SHDWCRSFILLINDENT )),
    1325             :     aFillTabRB( this, SW_RES( RB_SHDWCRSFILLTAB )),
    1326             :     aFillSpaceRB( this, SW_RES( RB_SHDWCRSFILLSPACE )),
    1327             :     aCrsrOptFL   ( this, SW_RES( FL_CRSR_OPT)),
    1328             :     aCrsrInProtCB( this, SW_RES( CB_ALLOW_IN_PROT )),
    1329             :     m_aLayoutOptionsFL( this, SW_RES( FL_LAYOUT_OPTIONS ) ),
    1330             :     m_aMathBaselineAlignmentCB( this, SW_RES( CB_MATH_BASELINE_ALIGNMENT ) ),
    1331           0 :     m_pWrtShell( NULL )
    1332             : {
    1333           0 :     FreeResource();
    1334           0 :     const SfxPoolItem* pItem = 0;
    1335             : 
    1336           0 :     SwShadowCursorItem aOpt;
    1337           0 :     if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_SHADOWCURSOR, sal_False, &pItem ))
    1338           0 :         aOpt = *(SwShadowCursorItem*)pItem;
    1339           0 :     aOnOffCB.Check( aOpt.IsOn() );
    1340             : 
    1341           0 :     sal_uInt8 eMode = aOpt.GetMode();
    1342           0 :     aFillIndentRB.Check( FILL_INDENT == eMode );
    1343           0 :     aFillMarginRB.Check( FILL_MARGIN == eMode );
    1344           0 :     aFillTabRB.Check( FILL_TAB == eMode );
    1345           0 :     aFillSpaceRB.Check( FILL_SPACE == eMode );
    1346             : 
    1347           0 :     if(SFX_ITEM_SET == rSet.GetItemState(SID_HTML_MODE, sal_False, &pItem )
    1348           0 :         && ((SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON)
    1349             :     {
    1350           0 :         aTabCB      .Hide();
    1351           0 :         aCharHiddenCB.Hide();
    1352           0 :         aFldHiddenCB    .Hide();
    1353           0 :         aFldHiddenParaCB.Hide();
    1354           0 :         aBreakCB.SetPosPixel(aTabCB.GetPosPixel());
    1355           0 :         aFlagFL         .Hide();
    1356           0 :         aOnOffCB        .Hide();
    1357           0 :         aFillModeFT     .Hide();
    1358           0 :         aFillMarginRB   .Hide();
    1359           0 :         aFillIndentRB   .Hide();
    1360           0 :         aFillTabRB      .Hide();
    1361           0 :         aFillSpaceRB    .Hide();
    1362           0 :         aCrsrOptFL      .Hide();
    1363           0 :         aCrsrInProtCB   .Hide();
    1364           0 :         aSeparatorFL.Hide();
    1365           0 :         long nWidth = aFlagFL.GetSizePixel().Width() + aFlagFL.GetPosPixel().X()
    1366           0 :                                                         - aUnprintFL.GetPosPixel().X();
    1367           0 :         Size aSize(aUnprintFL.GetSizePixel());
    1368           0 :         aSize.Width() = nWidth;
    1369           0 :         aUnprintFL.SetSizePixel(aSize);
    1370           0 :     }
    1371           0 : }
    1372             : 
    1373           0 : SwShdwCrsrOptionsTabPage::~SwShdwCrsrOptionsTabPage()
    1374             : {
    1375           0 : }
    1376             : 
    1377           0 : SfxTabPage* SwShdwCrsrOptionsTabPage::Create( Window* pParent, const SfxItemSet& rSet )
    1378             : {
    1379           0 :     return new SwShdwCrsrOptionsTabPage( pParent, rSet );
    1380             : }
    1381             : 
    1382             : 
    1383           0 : void SwShdwCrsrOptionsTabPage::PageCreated( SfxAllItemSet aSet )
    1384             : {
    1385           0 :     SFX_ITEMSET_ARG (&aSet,pWrtSh,SwWrtShellItem,SID_WRT_SHELL,sal_False);
    1386           0 :     if (pWrtSh)
    1387           0 :         SetWrtShell(pWrtSh->GetValue());
    1388           0 : }
    1389             : 
    1390             : 
    1391           0 : sal_Bool SwShdwCrsrOptionsTabPage::FillItemSet( SfxItemSet& rSet )
    1392             : {
    1393           0 :     SwShadowCursorItem aOpt;
    1394           0 :     aOpt.SetOn( aOnOffCB.IsChecked() );
    1395             : 
    1396             :     sal_uInt8 eMode;
    1397           0 :     if( aFillIndentRB.IsChecked() )
    1398           0 :         eMode= FILL_INDENT;
    1399           0 :     else if( aFillMarginRB.IsChecked() )
    1400           0 :         eMode = FILL_MARGIN;
    1401           0 :     else if( aFillTabRB.IsChecked() )
    1402           0 :         eMode = FILL_TAB;
    1403             :     else
    1404           0 :         eMode = FILL_SPACE;
    1405           0 :     aOpt.SetMode( eMode );
    1406             : 
    1407           0 :     sal_Bool bRet = sal_False;
    1408           0 :     const SfxPoolItem* pItem = 0;
    1409           0 :     if( SFX_ITEM_SET != rSet.GetItemState( FN_PARAM_SHADOWCURSOR, sal_False, &pItem )
    1410           0 :         ||  ((SwShadowCursorItem&)*pItem) != aOpt )
    1411             :     {
    1412           0 :         rSet.Put( aOpt );
    1413           0 :         bRet = sal_True;
    1414             :     }
    1415             : 
    1416           0 :     if (m_pWrtShell) {
    1417           0 :         m_pWrtShell->GetDoc()->set( IDocumentSettingAccess::MATH_BASELINE_ALIGNMENT,
    1418           0 :                                     m_aMathBaselineAlignmentCB.IsChecked() );
    1419           0 :         bRet |= m_aMathBaselineAlignmentCB.IsChecked() != m_aMathBaselineAlignmentCB.GetSavedValue();
    1420             :     }
    1421             : 
    1422           0 :     if( aCrsrInProtCB.IsChecked() != aCrsrInProtCB.GetSavedValue())
    1423             :     {
    1424           0 :         rSet.Put(SfxBoolItem(FN_PARAM_CRSR_IN_PROTECTED, aCrsrInProtCB.IsChecked()));
    1425           0 :         bRet |= sal_True;
    1426             :     }
    1427             : 
    1428             :     const SwDocDisplayItem* pOldAttr = (const SwDocDisplayItem*)
    1429           0 :                         GetOldItem(GetItemSet(), FN_PARAM_DOCDISP);
    1430             : 
    1431           0 :     SwDocDisplayItem aDisp;
    1432           0 :     if(pOldAttr)
    1433           0 :         aDisp = *pOldAttr;
    1434             : 
    1435           0 :     aDisp.bParagraphEnd         = aParaCB       .IsChecked();
    1436           0 :     aDisp.bTab                  = aTabCB        .IsChecked();
    1437           0 :     aDisp.bSpace                = aSpacesCB     .IsChecked();
    1438           0 :     aDisp.bNonbreakingSpace     = aHSpacesCB    .IsChecked();
    1439           0 :     aDisp.bSoftHyphen           = aSHyphCB      .IsChecked();
    1440           0 :     aDisp.bFldHiddenText        = aFldHiddenCB     .IsChecked();
    1441           0 :     aDisp.bCharHiddenText       = aCharHiddenCB.IsChecked();
    1442           0 :     aDisp.bShowHiddenPara       = aFldHiddenParaCB .IsChecked();
    1443           0 :     aDisp.bManualBreak          = aBreakCB      .IsChecked();
    1444             : 
    1445           0 :     bRet |= (!pOldAttr || aDisp != *pOldAttr);
    1446           0 :     if(bRet)
    1447           0 :         bRet = 0 != rSet.Put(aDisp);
    1448             : 
    1449           0 :     return bRet;
    1450             : }
    1451             : 
    1452           0 : void SwShdwCrsrOptionsTabPage::Reset( const SfxItemSet& rSet )
    1453             : {
    1454           0 :     const SfxPoolItem* pItem = 0;
    1455             : 
    1456           0 :     SwShadowCursorItem aOpt;
    1457           0 :     if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_SHADOWCURSOR, sal_False, &pItem ))
    1458           0 :         aOpt = *(SwShadowCursorItem*)pItem;
    1459           0 :     aOnOffCB.Check( aOpt.IsOn() );
    1460             : 
    1461           0 :     sal_uInt8 eMode = aOpt.GetMode();
    1462           0 :     aFillIndentRB.Check( FILL_INDENT == eMode );
    1463           0 :     aFillMarginRB.Check( FILL_MARGIN == eMode );
    1464           0 :     aFillTabRB.Check( FILL_TAB == eMode );
    1465           0 :     aFillSpaceRB.Check( FILL_SPACE == eMode );
    1466             : 
    1467           0 :     if (m_pWrtShell) {
    1468           0 :         m_aMathBaselineAlignmentCB.Check( m_pWrtShell->GetDoc()->get( IDocumentSettingAccess::MATH_BASELINE_ALIGNMENT ) );
    1469           0 :         m_aMathBaselineAlignmentCB.SaveValue();
    1470             :     } else {
    1471           0 :         m_aMathBaselineAlignmentCB.Hide();
    1472             :     }
    1473             : 
    1474           0 :     if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_CRSR_IN_PROTECTED, sal_False, &pItem ))
    1475           0 :         aCrsrInProtCB.Check(((const SfxBoolItem*)pItem)->GetValue());
    1476           0 :     aCrsrInProtCB.SaveValue();
    1477             : 
    1478           0 :     const SwDocDisplayItem* pDocDisplayAttr = 0;
    1479             : 
    1480             :     rSet.GetItemState( FN_PARAM_DOCDISP, sal_False,
    1481           0 :                                     (const SfxPoolItem**)&pDocDisplayAttr );
    1482           0 :     if(pDocDisplayAttr)
    1483             :     {
    1484           0 :         aParaCB     .Check  (pDocDisplayAttr->bParagraphEnd         );
    1485           0 :         aTabCB      .Check  (pDocDisplayAttr->bTab                  );
    1486           0 :         aSpacesCB   .Check  (pDocDisplayAttr->bSpace                );
    1487           0 :         aHSpacesCB  .Check  (pDocDisplayAttr->bNonbreakingSpace     );
    1488           0 :         aSHyphCB    .Check  (pDocDisplayAttr->bSoftHyphen           );
    1489           0 :         aCharHiddenCB.Check (pDocDisplayAttr->bCharHiddenText );
    1490           0 :         aFldHiddenCB   .Check  (pDocDisplayAttr->bFldHiddenText );
    1491           0 :         aFldHiddenParaCB.Check (pDocDisplayAttr->bShowHiddenPara       );
    1492           0 :         aBreakCB    .Check  (pDocDisplayAttr->bManualBreak          );
    1493           0 :     }
    1494           0 : }
    1495             : 
    1496             : /*--------------------------------------------------
    1497             :  TabPage for Redlining
    1498             : --------------------------------------------------*/
    1499             : struct CharAttr
    1500             : {
    1501             :     sal_uInt16 nItemId;
    1502             :     sal_uInt16 nAttr;
    1503             : };
    1504             : 
    1505             : // Edit corresponds to Paste-attributes
    1506             : static CharAttr aRedlineAttr[] =
    1507             : {
    1508             :     { SID_ATTR_CHAR_CASEMAP,        SVX_CASEMAP_NOT_MAPPED },
    1509             :     { SID_ATTR_CHAR_WEIGHT,         WEIGHT_BOLD },
    1510             :     { SID_ATTR_CHAR_POSTURE,        ITALIC_NORMAL },
    1511             :     { SID_ATTR_CHAR_UNDERLINE,      UNDERLINE_SINGLE },
    1512             :     { SID_ATTR_CHAR_UNDERLINE,      UNDERLINE_DOUBLE },
    1513             :     { SID_ATTR_CHAR_STRIKEOUT,      STRIKEOUT_SINGLE },
    1514             :     { SID_ATTR_CHAR_CASEMAP,        SVX_CASEMAP_VERSALIEN },
    1515             :     { SID_ATTR_CHAR_CASEMAP,        SVX_CASEMAP_GEMEINE },
    1516             :     { SID_ATTR_CHAR_CASEMAP,        SVX_CASEMAP_KAPITAELCHEN },
    1517             :     { SID_ATTR_CHAR_CASEMAP,        SVX_CASEMAP_TITEL },
    1518             :     { SID_ATTR_BRUSH,               0 }
    1519             : };
    1520             : // Items from aRedlineAttr relevant for InsertAttr: strikethrough is
    1521             : // not used
    1522             : static sal_uInt16 aInsertAttrMap[] = { 0, 1, 2, 3, 4, 6, 7, 8, 9, 10 };
    1523             : 
    1524             : // Items from aRedlineAttr relevant for DeleteAttr: underline and
    1525             : // double underline is not used
    1526             : static sal_uInt16 aDeletedAttrMap[] = { 0, 1, 2, 5, 6, 7, 8, 9, 10 };
    1527             : 
    1528             : // Items from aRedlineAttr relevant for ChangeAttr: strikethrough is
    1529             : // not used
    1530             : static sal_uInt16 aChangedAttrMap[] = { 0, 1, 2, 3, 4, 6, 7, 8, 9, 10 };
    1531             : 
    1532             : /*-----------------------------------------------------------------------
    1533             :     Description: Preview of selection
    1534             :  -----------------------------------------------------------------------*/
    1535           0 : SwMarkPreview::SwMarkPreview( Window *pParent, const ResId& rResID ) :
    1536             : 
    1537             :     Window(pParent, rResID),
    1538             :     m_aTransCol( COL_TRANSPARENT ),
    1539             :     m_aMarkCol( COL_LIGHTRED ),
    1540           0 :     nMarkPos(0)
    1541             : 
    1542             : {
    1543           0 :     InitColors();
    1544           0 :     SetMapMode(MAP_PIXEL);
    1545             : 
    1546           0 :     const Size aSz(GetOutputSizePixel());
    1547             : 
    1548             :     // Page
    1549           0 :     aPage.SetSize(Size(aSz.Width() - 3, aSz.Height() - 3));
    1550             : 
    1551           0 :     sal_uLong nOutWPix = aPage.GetWidth();
    1552           0 :     sal_uLong nOutHPix = aPage.GetHeight();
    1553             : 
    1554             :     // PrintArea
    1555           0 :     sal_uLong nLBorder = 8;
    1556           0 :     sal_uLong nRBorder = 8;
    1557           0 :     sal_uLong nTBorder = 4;
    1558           0 :     sal_uLong nBBorder = 4;
    1559             : 
    1560           0 :     aLeftPagePrtArea = Rectangle(Point(nLBorder, nTBorder), Point((nOutWPix - 1) - nRBorder, (nOutHPix - 1) - nBBorder));
    1561           0 :     sal_uInt16 nWidth = (sal_uInt16)aLeftPagePrtArea.GetWidth();
    1562           0 :     sal_uInt16 nKorr = (nWidth & 1) != 0 ? 0 : 1;
    1563           0 :     aLeftPagePrtArea.SetSize(Size(nWidth / 2 - (nLBorder + nRBorder) / 2 + nKorr, aLeftPagePrtArea.GetHeight()));
    1564             : 
    1565           0 :     aRightPagePrtArea = aLeftPagePrtArea;
    1566           0 :     aRightPagePrtArea.Move(aLeftPagePrtArea.GetWidth() + nLBorder + nRBorder + 1, 0);
    1567           0 : }
    1568             : 
    1569           0 : SwMarkPreview::~SwMarkPreview()
    1570             : {
    1571           0 : }
    1572             : 
    1573           0 : void SwMarkPreview::InitColors( void )
    1574             : {
    1575             :     // m_aTransCol and m_aMarkCol are _not_ changed because they are set from outside!
    1576             : 
    1577           0 :     const StyleSettings& rSettings = GetSettings().GetStyleSettings();
    1578           0 :     m_aBgCol = Color( rSettings.GetWindowColor() );
    1579             : 
    1580           0 :     sal_Bool bHC = rSettings.GetHighContrastMode();
    1581           0 :     m_aLineCol = bHC? SwViewOption::GetFontColor() : Color( COL_BLACK );
    1582           0 :     m_aShadowCol = bHC? m_aBgCol : rSettings.GetShadowColor();
    1583           0 :     m_aTxtCol = bHC? SwViewOption::GetFontColor() : Color( COL_GRAY );
    1584           0 :     m_aPrintAreaCol = m_aTxtCol;
    1585           0 : }
    1586             : 
    1587           0 : void SwMarkPreview::DataChanged( const DataChangedEvent& rDCEvt )
    1588             : {
    1589           0 :     Window::DataChanged( rDCEvt );
    1590             : 
    1591           0 :     if( rDCEvt.GetType() == DATACHANGED_SETTINGS && ( rDCEvt.GetFlags() & SETTINGS_STYLE ) )
    1592           0 :         InitColors();
    1593           0 : }
    1594             : 
    1595           0 : void SwMarkPreview::Paint(const Rectangle &/*rRect*/)
    1596             : {
    1597             :     // draw shadow
    1598           0 :     Rectangle aShadow(aPage);
    1599           0 :     aShadow += Point(3, 3);
    1600           0 :     DrawRect( aShadow, m_aShadowCol, m_aTransCol );
    1601             : 
    1602             :     // draw page
    1603           0 :     DrawRect( aPage, m_aBgCol, m_aLineCol );
    1604             : 
    1605             :     // draw separator
    1606           0 :     Rectangle aPageSeparator(aPage);
    1607           0 :     aPageSeparator.SetSize(Size(2, aPageSeparator.GetHeight()));
    1608           0 :     aPageSeparator.Move(aPage.GetWidth() / 2 - 1, 0);
    1609           0 :     DrawRect( aPageSeparator, m_aLineCol, m_aTransCol );
    1610             : 
    1611           0 :     PaintPage(aLeftPagePrtArea);
    1612           0 :     PaintPage(aRightPagePrtArea);
    1613             : 
    1614           0 :     Rectangle aLeftMark(Point(aPage.Left() + 2, aLeftPagePrtArea.Top() + 4), Size(aLeftPagePrtArea.Left() - 4, 2));
    1615           0 :     Rectangle aRightMark(Point(aRightPagePrtArea.Right() + 2, aRightPagePrtArea.Bottom() - 6), Size(aLeftPagePrtArea.Left() - 4, 2));
    1616             : 
    1617           0 :     switch (nMarkPos)
    1618             :     {
    1619             :         case 1:     // left
    1620           0 :             aRightMark.SetPos(Point(aRightPagePrtArea.Left() - 2 - aRightMark.GetWidth(), aRightMark.Top()));
    1621           0 :             break;
    1622             : 
    1623             :         case 2:     // right
    1624           0 :             aLeftMark.SetPos(Point(aLeftPagePrtArea.Right() + 2, aLeftMark.Top()));
    1625           0 :             break;
    1626             : 
    1627             :         case 3:     // outside
    1628           0 :             break;
    1629             : 
    1630             :         case 4:     // inside
    1631           0 :             aLeftMark.SetPos(Point(aLeftPagePrtArea.Right() + 2, aLeftMark.Top()));
    1632           0 :             aRightMark.SetPos(Point(aRightPagePrtArea.Left() - 2 - aRightMark.GetWidth(), aRightMark.Top()));
    1633           0 :             break;
    1634             : 
    1635             :         case 0:     // none
    1636             :         default:
    1637           0 :             return;
    1638             :     }
    1639           0 :     DrawRect( aLeftMark, m_aMarkCol, m_aTransCol );
    1640           0 :     DrawRect( aRightMark, m_aMarkCol, m_aTransCol );
    1641             : }
    1642             : 
    1643           0 : void SwMarkPreview::PaintPage(const Rectangle &rRect)
    1644             : {
    1645             :     // draw PrintArea
    1646           0 :     DrawRect(rRect, m_aTransCol, m_aPrintAreaCol );
    1647             : 
    1648             :     // draw Testparagraph
    1649           0 :     sal_uLong nLTxtBorder = 4;
    1650           0 :     sal_uLong nRTxtBorder = 4;
    1651           0 :     sal_uLong nTTxtBorder = 4;
    1652             : 
    1653           0 :     Rectangle aTextLine = rRect;
    1654           0 :     aTextLine.SetSize(Size(aTextLine.GetWidth(), 2));
    1655           0 :     aTextLine.Left()    += nLTxtBorder;
    1656           0 :     aTextLine.Right()   -= nRTxtBorder;
    1657           0 :     aTextLine.Move(0, nTTxtBorder);
    1658             : 
    1659             :     sal_Int32 nStep;
    1660             :     sal_uInt16 nLines;
    1661             : 
    1662           0 :     nStep = aTextLine.GetHeight() + 2;
    1663           0 :     nLines = (sal_uInt16)(rRect.GetHeight() / (aTextLine.GetHeight() + 2)) - 1;
    1664             : 
    1665             :     // simulate text
    1666           0 :     for (sal_uInt16 i = 0; i < nLines; ++i)
    1667             :     {
    1668           0 :         if (i == (nLines - 1))
    1669           0 :             aTextLine.SetSize(Size(aTextLine.GetWidth() / 2, aTextLine.GetHeight()));
    1670             : 
    1671           0 :         if (aPage.IsInside(aTextLine))
    1672           0 :             DrawRect(aTextLine, m_aTxtCol, m_aTransCol );
    1673             : 
    1674           0 :         aTextLine.Move(0, nStep);
    1675             :     }
    1676           0 :     aTextLine.Move(0, -nStep);
    1677           0 : }
    1678             : 
    1679           0 : void SwMarkPreview::DrawRect(const Rectangle &rRect, const Color &rFillColor, const Color &rLineColor)
    1680             : {
    1681           0 :     SetFillColor(rFillColor);
    1682           0 :     SetLineColor(rLineColor);
    1683           0 :     Window::DrawRect(rRect);
    1684           0 : }
    1685             : 
    1686             : namespace
    1687             : {
    1688           0 :     void lcl_FillRedlineAttrListBox(
    1689             :             ListBox& rLB, const AuthorCharAttr& rAttrToSelect,
    1690             :             const sal_uInt16* pAttrMap, const sal_uInt16 nAttrMapSize)
    1691             :     {
    1692           0 :         for (sal_uInt16 i = 0; i != nAttrMapSize; ++i)
    1693             :         {
    1694           0 :             CharAttr& rAttr(aRedlineAttr[pAttrMap[i]]);
    1695           0 :             rLB.SetEntryData(i, &rAttr);
    1696           0 :             if (rAttr.nItemId == rAttrToSelect.nItemId &&
    1697             :                 rAttr.nAttr == rAttrToSelect.nAttr)
    1698           0 :                 rLB.SelectEntryPos(i);
    1699             :         }
    1700           0 :     }
    1701             : }
    1702             : 
    1703           0 : SwRedlineOptionsTabPage::SwRedlineOptionsTabPage( Window* pParent,
    1704             :                                                     const SfxItemSet& rSet )
    1705             :     : SfxTabPage(pParent, SW_RES(TP_REDLINE_OPT), rSet),
    1706             : 
    1707             :     aInsertFL(          this, SW_RES( FL_TE )),
    1708             : 
    1709             :     aInsertFT(          this, SW_RES( FT_CHG_INSERT     )),
    1710             :     aInsertAttrFT(          this, SW_RES( FT_INS_ATTR     )),
    1711             :     aInsertLB(          this, SW_RES( LB_INS_ATTR     )),
    1712             :     aInsertColorFT(     this, SW_RES( FT_INS_COL      )),
    1713             :     aInsertColorLB(     this, SW_RES( LB_INS_COL      )),
    1714             :     aInsertedPreviewWN( this, SW_RES( WIN_INS         )),
    1715             : 
    1716             :     aDeletedFT(         this, SW_RES( FT_CHG_DELETE     )),
    1717             :     aDeletedAttrFT(         this, SW_RES( FT_DEL_ATTR     )),
    1718             :     aDeletedLB(         this, SW_RES( LB_DEL_ATTR     )),
    1719             :     aDeletedColorFT(    this, SW_RES( FT_DEL_COL      )),
    1720             :     aDeletedColorLB(    this, SW_RES( LB_DEL_COL      )),
    1721             :     aDeletedPreviewWN(  this, SW_RES( WIN_DEL         )),
    1722             : 
    1723             :     aChangedFT(         this, SW_RES( FT_CHG_CHANGE     )),
    1724             :     aChangedAttrFT(         this, SW_RES( FT_CHG_ATTR     )),
    1725             :     aChangedLB(         this, SW_RES( LB_CHG_ATTR     )),
    1726             :     aChangedColorFT(    this, SW_RES( FT_CHG_COL      )),
    1727             :     aChangedColorLB(    this, SW_RES( LB_CHG_COL      )),
    1728             :     aChangedPreviewWN(  this, SW_RES( WIN_CHG         )),
    1729             : 
    1730             :     aChangedFL          ( this, SW_RES( FL_LC )),
    1731             : 
    1732             :     aMarkPosFT          ( this, SW_RES( FT_MARKPOS )),
    1733             :     aMarkPosLB          ( this, SW_RES( LB_MARKPOS )),
    1734             :     aMarkColorFT        ( this, SW_RES( FT_LC_COL )),
    1735             :     aMarkColorLB        ( this, SW_RES( LB_LC_COL )),
    1736             :     aMarkPreviewWN      ( this, SW_RES( WIN_MARK )),
    1737             : 
    1738             :     sAuthor             ( SW_RES( STR_AUTHOR )),
    1739           0 :     sNone               ( SW_RES( STR_NOTHING ))
    1740             : 
    1741             : {
    1742           0 :     FreeResource();
    1743             : 
    1744           0 :     for(sal_uInt16 i = 0; i < aInsertLB.GetEntryCount(); i++)
    1745             :     {
    1746           0 :         String sEntry(aInsertLB.GetEntry(i));
    1747           0 :         aDeletedLB.InsertEntry(sEntry);
    1748           0 :         aChangedLB.InsertEntry(sEntry);
    1749           0 :     };
    1750             : 
    1751             :     // remove strikethrough from insert and change and underline + double
    1752             :     // underline from delete
    1753           0 :     aInsertLB.RemoveEntry(5);
    1754           0 :     aChangedLB.RemoveEntry(5);
    1755           0 :     aDeletedLB.RemoveEntry(4);
    1756           0 :     aDeletedLB.RemoveEntry(3);
    1757             : 
    1758           0 :     Link aLk = LINK(this, SwRedlineOptionsTabPage, AttribHdl);
    1759           0 :     aInsertLB.SetSelectHdl( aLk );
    1760           0 :     aDeletedLB.SetSelectHdl( aLk );
    1761           0 :     aChangedLB.SetSelectHdl( aLk );
    1762             : 
    1763           0 :     aLk = LINK(this, SwRedlineOptionsTabPage, ColorHdl);
    1764           0 :     aInsertColorLB.SetSelectHdl( aLk );
    1765           0 :     aDeletedColorLB.SetSelectHdl( aLk );
    1766           0 :     aChangedColorLB.SetSelectHdl( aLk );
    1767             : 
    1768           0 :     aLk = LINK(this, SwRedlineOptionsTabPage, ChangedMaskPrevHdl);
    1769           0 :     aMarkPosLB.SetSelectHdl( aLk );
    1770           0 :     aMarkColorLB.SetSelectHdl( aLk );
    1771             : 
    1772             :     //solution: set different accessible name of four color box
    1773           0 :     aInsertColorLB.SetAccessibleName(::rtl::OUString( aInsertFT.GetDisplayText()) + ::rtl::OUString(aInsertColorFT.GetDisplayText()));
    1774           0 :     aDeletedColorLB.SetAccessibleName(::rtl::OUString( aDeletedFT.GetDisplayText()) + ::rtl::OUString( aDeletedColorFT.GetDisplayText()));
    1775           0 :     aChangedColorLB.SetAccessibleName(::rtl::OUString( aChangedFT.GetDisplayText()) + ::rtl::OUString( aChangedColorFT.GetDisplayText()));
    1776           0 :     aMarkColorLB.SetAccessibleName(::rtl::OUString( aMarkPosFT.GetDisplayText()) + ::rtl::OUString( aMarkColorFT.GetDisplayText()));
    1777           0 : }
    1778             : 
    1779           0 : SwRedlineOptionsTabPage::~SwRedlineOptionsTabPage()
    1780             : {
    1781           0 : }
    1782             : 
    1783           0 : SfxTabPage* SwRedlineOptionsTabPage::Create( Window* pParent, const SfxItemSet& rSet)
    1784             : {
    1785           0 :     return new SwRedlineOptionsTabPage( pParent, rSet );
    1786             : }
    1787             : 
    1788           0 : sal_Bool SwRedlineOptionsTabPage::FillItemSet( SfxItemSet& )
    1789             : {
    1790             :     CharAttr *pAttr;
    1791           0 :     SwModuleOptions *pOpt = SW_MOD()->GetModuleConfig();
    1792             : 
    1793           0 :     AuthorCharAttr aInsertedAttr;
    1794           0 :     AuthorCharAttr aDeletedAttr;
    1795           0 :     AuthorCharAttr aChangedAttr;
    1796             : 
    1797           0 :     AuthorCharAttr aOldInsertAttr(pOpt->GetInsertAuthorAttr());
    1798           0 :     AuthorCharAttr aOldDeletedAttr(pOpt->GetDeletedAuthorAttr());
    1799           0 :     AuthorCharAttr aOldChangedAttr(pOpt->GetFormatAuthorAttr());
    1800             : 
    1801           0 :     ColorData nOldMarkColor = pOpt->GetMarkAlignColor().GetColor();
    1802           0 :     sal_uInt16 nOldMarkMode = pOpt->GetMarkAlignMode();
    1803             : 
    1804           0 :     sal_uInt16 nPos = aInsertLB.GetSelectEntryPos();
    1805           0 :     if (nPos != LISTBOX_ENTRY_NOTFOUND)
    1806             :     {
    1807           0 :         pAttr = (CharAttr *)aInsertLB.GetEntryData(nPos);
    1808           0 :         aInsertedAttr.nItemId = pAttr->nItemId;
    1809           0 :         aInsertedAttr.nAttr = pAttr->nAttr;
    1810             : 
    1811           0 :         nPos = aInsertColorLB.GetSelectEntryPos();
    1812             : 
    1813           0 :         switch (nPos)
    1814             :         {
    1815             :             case 0:
    1816           0 :                 aInsertedAttr.nColor = COL_NONE;
    1817           0 :                 break;
    1818             :             case 1:
    1819             :             case LISTBOX_ENTRY_NOTFOUND:
    1820           0 :                 aInsertedAttr.nColor = COL_TRANSPARENT;
    1821           0 :                 break;
    1822             :             default:
    1823           0 :                 aInsertedAttr.nColor = aInsertColorLB.GetEntryColor(nPos).GetColor();
    1824           0 :                 break;
    1825             :         }
    1826             : 
    1827           0 :         pOpt->SetInsertAuthorAttr(aInsertedAttr);
    1828             :     }
    1829             : 
    1830           0 :     nPos = aDeletedLB.GetSelectEntryPos();
    1831           0 :     if (nPos != LISTBOX_ENTRY_NOTFOUND)
    1832             :     {
    1833           0 :         pAttr = (CharAttr *)aDeletedLB.GetEntryData(nPos);
    1834           0 :         aDeletedAttr.nItemId = pAttr->nItemId;
    1835           0 :         aDeletedAttr.nAttr = pAttr->nAttr;
    1836             : 
    1837           0 :         nPos = aDeletedColorLB.GetSelectEntryPos();
    1838             : 
    1839           0 :         switch (nPos)
    1840             :         {
    1841             :             case 0:
    1842           0 :                 aDeletedAttr.nColor = COL_NONE;
    1843           0 :                 break;
    1844             :             case 1:
    1845             :             case LISTBOX_ENTRY_NOTFOUND:
    1846           0 :                 aDeletedAttr.nColor = COL_TRANSPARENT;
    1847           0 :                 break;
    1848             :             default:
    1849           0 :                 aDeletedAttr.nColor = aDeletedColorLB.GetEntryColor(nPos).GetColor();
    1850           0 :                 break;
    1851             :         }
    1852             : 
    1853           0 :         pOpt->SetDeletedAuthorAttr(aDeletedAttr);
    1854             :     }
    1855             : 
    1856           0 :     nPos = aChangedLB.GetSelectEntryPos();
    1857           0 :     if (nPos != LISTBOX_ENTRY_NOTFOUND)
    1858             :     {
    1859           0 :         pAttr = (CharAttr *)aChangedLB.GetEntryData(nPos);
    1860           0 :         aChangedAttr.nItemId = pAttr->nItemId;
    1861           0 :         aChangedAttr.nAttr = pAttr->nAttr;
    1862             : 
    1863           0 :         nPos = aChangedColorLB.GetSelectEntryPos();
    1864             : 
    1865           0 :         switch (nPos)
    1866             :         {
    1867             :             case 0:
    1868           0 :                 aChangedAttr.nColor = COL_NONE;
    1869           0 :                 break;
    1870             :             case 1:
    1871             :             case LISTBOX_ENTRY_NOTFOUND:
    1872           0 :                 aChangedAttr.nColor = COL_TRANSPARENT;
    1873           0 :                 break;
    1874             :             default:
    1875           0 :                 aChangedAttr.nColor = aChangedColorLB.GetEntryColor(nPos).GetColor();
    1876           0 :                 break;
    1877             :         }
    1878             : 
    1879           0 :         pOpt->SetFormatAuthorAttr(aChangedAttr);
    1880             :     }
    1881             : 
    1882           0 :     nPos = 0;
    1883           0 :     switch (aMarkPosLB.GetSelectEntryPos())
    1884             :     {
    1885           0 :         case 0: nPos = text::HoriOrientation::NONE;       break;
    1886           0 :         case 1: nPos = text::HoriOrientation::LEFT;       break;
    1887           0 :         case 2: nPos = text::HoriOrientation::RIGHT;      break;
    1888           0 :         case 3: nPos = text::HoriOrientation::OUTSIDE;    break;
    1889           0 :         case 4: nPos = text::HoriOrientation::INSIDE;     break;
    1890             :     }
    1891           0 :     pOpt->SetMarkAlignMode(nPos);
    1892             : 
    1893           0 :     pOpt->SetMarkAlignColor(aMarkColorLB.GetSelectEntryColor());
    1894             : 
    1895           0 :     if (!(aInsertedAttr == aOldInsertAttr) ||
    1896           0 :         !(aDeletedAttr == aOldDeletedAttr) ||
    1897           0 :         !(aChangedAttr == aOldChangedAttr) ||
    1898           0 :        nOldMarkColor != pOpt->GetMarkAlignColor().GetColor() ||
    1899           0 :        nOldMarkMode != pOpt->GetMarkAlignMode())
    1900             :     {
    1901             :         // update all documents
    1902           0 :         TypeId aType(TYPE(SwDocShell));
    1903           0 :         SwDocShell* pDocShell = (SwDocShell*)SfxObjectShell::GetFirst(&aType);
    1904             : 
    1905           0 :         while( pDocShell )
    1906             :         {
    1907           0 :             pDocShell->GetWrtShell()->UpdateRedlineAttr();
    1908           0 :             pDocShell = (SwDocShell*)SfxObjectShell::GetNext(*pDocShell, &aType);
    1909             :         }
    1910             :     }
    1911             : 
    1912           0 :     return sal_False;
    1913             : }
    1914             : 
    1915           0 : void SwRedlineOptionsTabPage::Reset( const SfxItemSet&  )
    1916             : {
    1917           0 :     const SwModuleOptions *pOpt = SW_MOD()->GetModuleConfig();
    1918             : 
    1919           0 :     const AuthorCharAttr &rInsertAttr = pOpt->GetInsertAuthorAttr();
    1920           0 :     const AuthorCharAttr &rDeletedAttr = pOpt->GetDeletedAuthorAttr();
    1921           0 :     const AuthorCharAttr &rChangedAttr = pOpt->GetFormatAuthorAttr();
    1922             : 
    1923             :     // initialise preview
    1924           0 :     InitFontStyle(aInsertedPreviewWN);
    1925           0 :     InitFontStyle(aDeletedPreviewWN);
    1926           0 :     InitFontStyle(aChangedPreviewWN);
    1927             : 
    1928             :     // initialise colour list box
    1929           0 :     aInsertColorLB.SetUpdateMode(sal_False);
    1930           0 :     aDeletedColorLB.SetUpdateMode(sal_False);
    1931           0 :     aChangedColorLB.SetUpdateMode(sal_False);
    1932           0 :     aMarkColorLB.SetUpdateMode(sal_False);
    1933             : 
    1934           0 :     aInsertColorLB.InsertEntry(sNone);
    1935           0 :     aDeletedColorLB.InsertEntry(sNone);
    1936           0 :     aChangedColorLB.InsertEntry(sNone);
    1937             : 
    1938           0 :     aInsertColorLB.InsertEntry(sAuthor);
    1939           0 :     aDeletedColorLB.InsertEntry(sAuthor);
    1940           0 :     aChangedColorLB.InsertEntry(sAuthor);
    1941             : 
    1942           0 :     XColorListRef pColorLst = XColorList::GetStdColorList();
    1943             :     sal_uInt16 i;
    1944           0 :     for( i = 0; i < pColorLst->Count(); ++i )
    1945             :     {
    1946           0 :         XColorEntry* pEntry = pColorLst->GetColor( i );
    1947           0 :         Color aColor = pEntry->GetColor();
    1948           0 :         String sName = pEntry->GetName();
    1949             : 
    1950           0 :         aInsertColorLB.InsertEntry( aColor, sName );
    1951           0 :         aDeletedColorLB.InsertEntry( aColor, sName );
    1952           0 :         aChangedColorLB.InsertEntry( aColor, sName );
    1953           0 :         aMarkColorLB.InsertEntry( aColor, sName );
    1954           0 :     }
    1955           0 :     aInsertColorLB.SetUpdateMode( sal_True );
    1956           0 :     aDeletedColorLB.SetUpdateMode( sal_True );
    1957           0 :     aChangedColorLB.SetUpdateMode( sal_True );
    1958           0 :     aMarkColorLB.SetUpdateMode( sal_True );
    1959             : 
    1960           0 :     ColorData nColor = rInsertAttr.nColor;
    1961             : 
    1962           0 :     switch (nColor)
    1963             :     {
    1964             :         case COL_TRANSPARENT:
    1965           0 :             aInsertColorLB.SelectEntryPos(1);
    1966           0 :             break;
    1967             :         case COL_NONE:
    1968           0 :             aInsertColorLB.SelectEntryPos(0);
    1969           0 :             break;
    1970             :         default:
    1971           0 :             aInsertColorLB.SelectEntry(Color(nColor));
    1972             :     }
    1973             : 
    1974           0 :     nColor = rDeletedAttr.nColor;
    1975             : 
    1976           0 :     switch (nColor)
    1977             :     {
    1978             :         case COL_TRANSPARENT:
    1979           0 :             aDeletedColorLB.SelectEntryPos(1);
    1980           0 :             break;
    1981             :         case COL_NONE:
    1982           0 :             aDeletedColorLB.SelectEntryPos(0);
    1983           0 :             break;
    1984             :         default:
    1985           0 :             aDeletedColorLB.SelectEntry(Color(nColor));
    1986             :     }
    1987             : 
    1988           0 :     nColor = rChangedAttr.nColor;
    1989             : 
    1990           0 :     switch (nColor)
    1991             :     {
    1992             :         case COL_TRANSPARENT:
    1993           0 :             aChangedColorLB.SelectEntryPos(1);
    1994           0 :             break;
    1995             :         case COL_NONE:
    1996           0 :             aChangedColorLB.SelectEntryPos(0);
    1997           0 :             break;
    1998             :         default:
    1999           0 :             aChangedColorLB.SelectEntry(Color(nColor));
    2000             :     }
    2001             : 
    2002           0 :     aMarkColorLB.SelectEntry(pOpt->GetMarkAlignColor());
    2003             : 
    2004           0 :     aInsertLB.SelectEntryPos(0);
    2005           0 :     aDeletedLB.SelectEntryPos(0);
    2006           0 :     aChangedLB.SelectEntryPos(0);
    2007             : 
    2008             :     lcl_FillRedlineAttrListBox(aInsertLB, rInsertAttr, aInsertAttrMap,
    2009           0 :             sizeof(aInsertAttrMap) / sizeof(sal_uInt16));
    2010             :     lcl_FillRedlineAttrListBox(aDeletedLB, rDeletedAttr, aDeletedAttrMap,
    2011           0 :             sizeof(aDeletedAttrMap) / sizeof(sal_uInt16));
    2012             :     lcl_FillRedlineAttrListBox(aChangedLB, rChangedAttr, aChangedAttrMap,
    2013           0 :             sizeof(aChangedAttrMap) / sizeof(sal_uInt16));
    2014             : 
    2015           0 :     sal_uInt16 nPos = 0;
    2016           0 :     switch (pOpt->GetMarkAlignMode())
    2017             :     {
    2018           0 :         case text::HoriOrientation::NONE:     nPos = 0;   break;
    2019           0 :         case text::HoriOrientation::LEFT:     nPos = 1;   break;
    2020           0 :         case text::HoriOrientation::RIGHT:    nPos = 2;   break;
    2021           0 :         case text::HoriOrientation::OUTSIDE:  nPos = 3;   break;
    2022           0 :         case text::HoriOrientation::INSIDE:   nPos = 4;   break;
    2023             :     }
    2024           0 :     aMarkPosLB.SelectEntryPos(nPos);
    2025             : 
    2026             :     // show settings in preview
    2027           0 :     AttribHdl(&aInsertLB);
    2028           0 :     ColorHdl(&aInsertColorLB);
    2029           0 :     AttribHdl(&aDeletedLB);
    2030           0 :     ColorHdl(&aInsertColorLB);
    2031           0 :     AttribHdl(&aChangedLB);
    2032           0 :     ColorHdl(&aChangedColorLB);
    2033             : 
    2034           0 :     ChangedMaskPrevHdl();
    2035           0 : }
    2036             : 
    2037           0 : IMPL_LINK( SwRedlineOptionsTabPage, AttribHdl, ListBox *, pLB )
    2038             : {
    2039           0 :     SvxFontPrevWindow *pPrev = 0;
    2040             :     ColorListBox *pColorLB;
    2041             : 
    2042           0 :     if (pLB == &aInsertLB)
    2043             :     {
    2044           0 :         pColorLB = &aInsertColorLB;
    2045           0 :         pPrev = &aInsertedPreviewWN;
    2046             :     }
    2047           0 :     else if (pLB == &aDeletedLB)
    2048             :     {
    2049           0 :         pColorLB = &aDeletedColorLB;
    2050           0 :         pPrev = &aDeletedPreviewWN;
    2051             :     }
    2052             :     else
    2053             :     {
    2054           0 :         pColorLB = &aChangedColorLB;
    2055           0 :         pPrev = &aChangedPreviewWN;
    2056             :     }
    2057             : 
    2058           0 :     SvxFont&    rFont = pPrev->GetFont();
    2059           0 :     SvxFont&    rCJKFont = pPrev->GetCJKFont();
    2060             : 
    2061           0 :     rFont.SetWeight(WEIGHT_NORMAL);
    2062           0 :     rCJKFont.SetWeight(WEIGHT_NORMAL);
    2063           0 :     rFont.SetItalic(ITALIC_NONE);
    2064           0 :     rCJKFont.SetItalic(ITALIC_NONE);
    2065           0 :     rFont.SetUnderline(UNDERLINE_NONE);
    2066           0 :     rCJKFont.SetUnderline(UNDERLINE_NONE);
    2067           0 :     rFont.SetStrikeout(STRIKEOUT_NONE);
    2068           0 :     rCJKFont.SetStrikeout(STRIKEOUT_NONE);
    2069           0 :     rFont.SetCaseMap(SVX_CASEMAP_NOT_MAPPED);
    2070           0 :     rCJKFont.SetCaseMap(SVX_CASEMAP_NOT_MAPPED);
    2071             : 
    2072           0 :     sal_uInt16      nPos = pColorLB->GetSelectEntryPos();
    2073             : 
    2074           0 :     switch( nPos )
    2075             :     {
    2076             :         case 0:
    2077           0 :             rFont.SetColor( Color( COL_BLACK ) );
    2078           0 :             rCJKFont.SetColor( Color( COL_BLACK ) );
    2079           0 :             break;
    2080             :         case 1:
    2081             :         case LISTBOX_ENTRY_NOTFOUND:
    2082           0 :             rFont.SetColor( Color( COL_RED ) );
    2083           0 :             rCJKFont.SetColor( Color( COL_RED ) );
    2084           0 :             break;
    2085             :         default:
    2086           0 :             rFont.SetColor( pColorLB->GetEntryColor( nPos ) );
    2087           0 :             rCJKFont.SetColor( pColorLB->GetEntryColor( nPos ) );
    2088           0 :             break;
    2089             :     }
    2090             : 
    2091           0 :     nPos = pLB->GetSelectEntryPos();
    2092           0 :     if( nPos == LISTBOX_ENTRY_NOTFOUND )
    2093           0 :         nPos = 0;
    2094             : 
    2095           0 :     CharAttr*   pAttr = ( CharAttr* ) pLB->GetEntryData( nPos );
    2096             :     //switch off preview background color
    2097           0 :     pPrev->ResetColor();
    2098           0 :     switch (pAttr->nItemId)
    2099             :     {
    2100             :         case SID_ATTR_CHAR_WEIGHT:
    2101           0 :             rFont.SetWeight( ( FontWeight ) pAttr->nAttr );
    2102           0 :             rCJKFont.SetWeight( ( FontWeight ) pAttr->nAttr );
    2103           0 :             break;
    2104             : 
    2105             :         case SID_ATTR_CHAR_POSTURE:
    2106           0 :             rFont.SetItalic( ( FontItalic ) pAttr->nAttr );
    2107           0 :             rCJKFont.SetItalic( ( FontItalic ) pAttr->nAttr );
    2108           0 :             break;
    2109             : 
    2110             :         case SID_ATTR_CHAR_UNDERLINE:
    2111           0 :             rFont.SetUnderline( ( FontUnderline ) pAttr->nAttr );
    2112           0 :             rCJKFont.SetUnderline( ( FontUnderline ) pAttr->nAttr );
    2113           0 :             break;
    2114             : 
    2115             :         case SID_ATTR_CHAR_STRIKEOUT:
    2116           0 :             rFont.SetStrikeout( ( FontStrikeout ) pAttr->nAttr );
    2117           0 :             rCJKFont.SetStrikeout( ( FontStrikeout ) pAttr->nAttr );
    2118           0 :             break;
    2119             : 
    2120             :         case SID_ATTR_CHAR_CASEMAP:
    2121           0 :             rFont.SetCaseMap( ( SvxCaseMap ) pAttr->nAttr );
    2122           0 :             rCJKFont.SetCaseMap( ( SvxCaseMap ) pAttr->nAttr );
    2123           0 :             break;
    2124             : 
    2125             :         case SID_ATTR_BRUSH:
    2126             :         {
    2127           0 :             nPos = pColorLB->GetSelectEntryPos();
    2128           0 :             if( nPos )
    2129           0 :                 pPrev->SetColor( pColorLB->GetSelectEntryColor() );
    2130             :             else
    2131           0 :                 pPrev->SetColor( Color( COL_LIGHTGRAY ) );
    2132             : 
    2133           0 :             rFont.SetColor( Color( COL_BLACK ) );
    2134           0 :             rCJKFont.SetColor( Color( COL_BLACK ) );
    2135             :         }
    2136           0 :         break;
    2137             :     }
    2138             : 
    2139           0 :     pPrev->Invalidate();
    2140             : 
    2141           0 :     return 0;
    2142             : }
    2143             : 
    2144           0 : IMPL_LINK( SwRedlineOptionsTabPage, ColorHdl, ColorListBox *, pColorLB )
    2145             : {
    2146           0 :     SvxFontPrevWindow *pPrev = 0;
    2147             :     ListBox* pLB;
    2148             : 
    2149           0 :     if (pColorLB == &aInsertColorLB)
    2150             :     {
    2151           0 :         pLB = &aInsertLB;
    2152           0 :         pPrev = &aInsertedPreviewWN;
    2153             :     }
    2154           0 :     else if (pColorLB == &aDeletedColorLB)
    2155             :     {
    2156           0 :         pLB = &aDeletedLB;
    2157           0 :         pPrev = &aDeletedPreviewWN;
    2158             :     }
    2159             :     else
    2160             :     {
    2161           0 :         pLB = &aChangedLB;
    2162           0 :         pPrev = &aChangedPreviewWN;
    2163             :     }
    2164             : 
    2165           0 :     SvxFont&    rFont = pPrev->GetFont();
    2166           0 :     SvxFont&    rCJKFont = pPrev->GetCJKFont();
    2167           0 :     sal_uInt16      nPos = pLB->GetSelectEntryPos();
    2168           0 :     if( nPos == LISTBOX_ENTRY_NOTFOUND )
    2169           0 :         nPos = 0;
    2170             : 
    2171           0 :     CharAttr*   pAttr = ( CharAttr* ) pLB->GetEntryData( nPos );
    2172             : 
    2173           0 :     if( pAttr->nItemId == SID_ATTR_BRUSH )
    2174             :     {
    2175           0 :         rFont.SetColor( Color( COL_BLACK ) );
    2176           0 :         rCJKFont.SetColor( Color( COL_BLACK ) );
    2177           0 :         nPos = pColorLB->GetSelectEntryPos();
    2178           0 :         if( nPos && nPos != LISTBOX_ENTRY_NOTFOUND )
    2179           0 :             pPrev->SetColor( pColorLB->GetSelectEntryColor() );
    2180             :         else
    2181           0 :             pPrev->SetColor( Color( COL_LIGHTGRAY ) );
    2182             :     }
    2183             :     else
    2184             :     {
    2185           0 :         nPos = pColorLB->GetSelectEntryPos();
    2186             : 
    2187           0 :         switch( nPos )
    2188             :         {
    2189             :             case 0:
    2190           0 :                 rFont.SetColor( Color( COL_BLACK ) );
    2191           0 :                 rCJKFont.SetColor( Color( COL_BLACK ) );
    2192           0 :                 break;
    2193             :             case 1:
    2194             :             case LISTBOX_ENTRY_NOTFOUND:
    2195           0 :                 rFont.SetColor( Color( COL_RED ) );
    2196           0 :                 rCJKFont.SetColor( Color( COL_RED ) );
    2197           0 :                 break;
    2198             :             default:
    2199           0 :                 rFont.SetColor( pColorLB->GetEntryColor( nPos ) );
    2200           0 :                 rCJKFont.SetColor( pColorLB->GetEntryColor( nPos ) );
    2201           0 :                 break;
    2202             :         }
    2203             :     }
    2204             : 
    2205           0 :     pPrev->Invalidate();
    2206             : 
    2207           0 :     return 0;
    2208             : }
    2209             : 
    2210           0 : IMPL_LINK_NOARG(SwRedlineOptionsTabPage, ChangedMaskPrevHdl)
    2211             : {
    2212           0 :     aMarkPreviewWN.SetMarkPos(aMarkPosLB.GetSelectEntryPos());
    2213           0 :     aMarkPreviewWN.SetColor(aMarkColorLB.GetSelectEntryColor().GetColor());
    2214             : 
    2215           0 :     aMarkPreviewWN.Invalidate();
    2216             : 
    2217           0 :     return 0;
    2218             : }
    2219             : 
    2220           0 : void SwRedlineOptionsTabPage::InitFontStyle(SvxFontPrevWindow& rExampleWin)
    2221             : {
    2222           0 :     const AllSettings&  rAllSettings = Application::GetSettings();
    2223           0 :     LanguageType        eLangType = rAllSettings.GetUILanguageTag().getLanguageType();
    2224           0 :     Color               aBackCol( rAllSettings.GetStyleSettings().GetWindowColor() );
    2225           0 :     SvxFont&            rFont = rExampleWin.GetFont();
    2226           0 :     SvxFont&            rCJKFont = rExampleWin.GetCJKFont();
    2227           0 :     SvxFont&            rCTLFont = rExampleWin.GetCTLFont();
    2228             : 
    2229             :     Font                aFont( OutputDevice::GetDefaultFont( DEFAULTFONT_SERIF, eLangType,
    2230           0 :                                                         DEFAULTFONT_FLAGS_ONLYONE, &rExampleWin ) );
    2231             :     Font                aCJKFont( OutputDevice::GetDefaultFont( DEFAULTFONT_CJK_TEXT, eLangType,
    2232           0 :                                                         DEFAULTFONT_FLAGS_ONLYONE, &rExampleWin ) );
    2233             :     Font                aCTLFont( OutputDevice::GetDefaultFont( DEFAULTFONT_CTL_TEXT, eLangType,
    2234           0 :                                                         DEFAULTFONT_FLAGS_ONLYONE, &rExampleWin ) );
    2235           0 :     const Size          aDefSize( 0, 12 );
    2236           0 :     aFont.SetSize( aDefSize );
    2237           0 :     aCJKFont.SetSize( aDefSize );
    2238           0 :     aCTLFont.SetSize( aDefSize );
    2239             : 
    2240           0 :     aFont.SetFillColor( aBackCol );
    2241           0 :     aCJKFont.SetFillColor( aBackCol );
    2242           0 :     aCTLFont.SetFillColor( aBackCol );
    2243             : 
    2244           0 :     aFont.SetWeight( WEIGHT_NORMAL );
    2245           0 :     aCJKFont.SetWeight( WEIGHT_NORMAL );
    2246           0 :     aCTLFont.SetWeight( WEIGHT_NORMAL );
    2247             : 
    2248           0 :     rFont = aFont;
    2249           0 :     rCJKFont = aCJKFont;
    2250           0 :     rCTLFont = aCTLFont;
    2251             : 
    2252           0 :     const Size          aNewSize( 0, rExampleWin.GetOutputSize().Height() * 2 / 3 );
    2253           0 :     rFont.SetSize( aNewSize );
    2254           0 :     rCJKFont.SetSize( aNewSize );
    2255             : 
    2256           0 :     rExampleWin.SetFont( rFont, rCJKFont,rCTLFont );
    2257             : 
    2258           0 :     rExampleWin.UseResourceText();
    2259             : 
    2260           0 :     Wallpaper           aWall( aBackCol );
    2261           0 :     rExampleWin.SetBackground( aWall );
    2262           0 :     rExampleWin.Invalidate();
    2263           0 : }
    2264             : 
    2265             : 
    2266             : //----------------------------------------------------------
    2267           0 : SwCompareOptionsTabPage::SwCompareOptionsTabPage(  Window* pParent, const SfxItemSet& rSet )
    2268             :     : SfxTabPage( pParent, SW_RES( TP_COMPARISON_OPT ), rSet ),
    2269             : 
    2270             :     aComparisonFL(      this, SW_RES( FL_CMP ) ),
    2271             :     aAutoRB(            this, SW_RES( RB_AUTO ) ),
    2272             :     aWordRB(            this, SW_RES( RB_WORD ) ),
    2273             :     aCharRB(            this, SW_RES( RB_CHAR ) ),
    2274             :     aSettingsFL(        this, SW_RES( FL_SET ) ),
    2275             :     aRsidCB(            this, SW_RES( CB_RSID) ),
    2276             :     aIgnoreCB(          this, SW_RES( CB_IGNORE ) ),
    2277           0 :     aLenNF(                     this, SW_RES( NF_LEN ) )
    2278             : {
    2279           0 :     FreeResource();
    2280           0 :     Link aLnk( LINK( this, SwCompareOptionsTabPage, ComparisonHdl ) );
    2281           0 :     aAutoRB.SetClickHdl( aLnk );
    2282           0 :     aWordRB.SetClickHdl( aLnk );
    2283           0 :     aCharRB.SetClickHdl( aLnk );
    2284             : 
    2285           0 :     aIgnoreCB.SetClickHdl( LINK( this, SwCompareOptionsTabPage, IgnoreHdl) );
    2286           0 : }
    2287             : 
    2288           0 : SwCompareOptionsTabPage::~SwCompareOptionsTabPage()
    2289             : {
    2290           0 : }
    2291             : 
    2292           0 : SfxTabPage* SwCompareOptionsTabPage::Create( Window* pParent, const SfxItemSet& rAttrSet )
    2293             : {
    2294           0 :     return new SwCompareOptionsTabPage( pParent, rAttrSet );
    2295             : }
    2296             : 
    2297           0 : sal_Bool SwCompareOptionsTabPage::FillItemSet( SfxItemSet& )
    2298             : {
    2299           0 :     sal_Bool bRet = sal_False;
    2300           0 :     SwModuleOptions *pOpt = SW_MOD()->GetModuleConfig();
    2301             : 
    2302           0 :     if( aAutoRB.IsChecked() != aAutoRB.GetSavedValue() ||
    2303           0 :         aWordRB.IsChecked() != aWordRB.GetSavedValue() ||
    2304           0 :         aCharRB.IsChecked() != aCharRB.GetSavedValue() )
    2305             :     {
    2306           0 :         SvxCompareMode eCmpMode = SVX_CMP_AUTO;
    2307             : 
    2308           0 :         if ( aAutoRB.IsChecked() ) eCmpMode = SVX_CMP_AUTO;
    2309           0 :         if ( aWordRB.IsChecked() ) eCmpMode = SVX_CMP_BY_WORD;
    2310           0 :         if ( aCharRB.IsChecked() ) eCmpMode = SVX_CMP_BY_CHAR;
    2311             : 
    2312           0 :         pOpt->SetCompareMode( eCmpMode );
    2313           0 :         bRet = sal_True;
    2314             :     }
    2315             : 
    2316           0 :     if( aRsidCB.IsChecked() != aRsidCB.GetSavedValue() )
    2317             :     {
    2318           0 :         pOpt->SetUseRsid( aRsidCB.IsChecked() );
    2319           0 :         bRet = sal_True;
    2320             :     }
    2321             : 
    2322           0 :     if( aIgnoreCB.IsChecked() != aIgnoreCB.GetSavedValue() )
    2323             :     {
    2324           0 :         pOpt->SetIgnorePieces( aIgnoreCB.IsChecked() );
    2325           0 :         bRet = sal_True;
    2326             :     }
    2327             : 
    2328           0 :     if( aLenNF.IsModified() )
    2329             :     {
    2330           0 :         pOpt->SetPieceLen( aLenNF.GetValue() );
    2331           0 :         bRet = sal_True;
    2332             :     }
    2333             : 
    2334           0 :     return bRet;
    2335             : }
    2336             : 
    2337           0 : void SwCompareOptionsTabPage::Reset( const SfxItemSet& )
    2338             : {
    2339           0 :     SwModuleOptions *pOpt = SW_MOD()->GetModuleConfig();
    2340             : 
    2341           0 :     SvxCompareMode eCmpMode = pOpt->GetCompareMode();
    2342           0 :     if( eCmpMode == SVX_CMP_AUTO )
    2343             :     {
    2344           0 :         aAutoRB.Check();
    2345           0 :         aSettingsFL.Disable();
    2346           0 :         aRsidCB.Disable();
    2347           0 :         aIgnoreCB.Disable();
    2348           0 :         aLenNF.Disable();
    2349             :     }
    2350           0 :     else if( eCmpMode == SVX_CMP_BY_WORD )
    2351             :     {
    2352           0 :         aWordRB.Check();
    2353           0 :         aSettingsFL.Enable();
    2354           0 :         aRsidCB.Enable();
    2355           0 :         aIgnoreCB.Enable();
    2356           0 :         aLenNF.Enable();
    2357             :     }
    2358           0 :     else if( eCmpMode == SVX_CMP_BY_CHAR)
    2359             :     {
    2360           0 :         aCharRB.Check();
    2361           0 :         aSettingsFL.Enable();
    2362           0 :         aRsidCB.Enable();
    2363           0 :         aIgnoreCB.Enable();
    2364           0 :         aLenNF.Enable();
    2365             :     }
    2366           0 :     aAutoRB.SaveValue();
    2367           0 :     aWordRB.SaveValue();
    2368           0 :     aCharRB.SaveValue();
    2369             : 
    2370           0 :     aRsidCB.Check( pOpt->IsUseRsid() );
    2371           0 :     aRsidCB.SaveValue();
    2372             : 
    2373           0 :     aIgnoreCB.Check( pOpt->IsIgnorePieces() );
    2374           0 :     aIgnoreCB.SaveValue();
    2375             : 
    2376           0 :     aLenNF.Enable( aIgnoreCB.IsChecked() && eCmpMode );
    2377             : 
    2378           0 :     aLenNF.SetValue( pOpt->GetPieceLen() );
    2379           0 :     aLenNF.SaveValue();
    2380           0 : }
    2381             : 
    2382           0 : IMPL_LINK_NOARG(SwCompareOptionsTabPage, ComparisonHdl)
    2383             : {
    2384           0 :     bool bChecked = !aAutoRB.IsChecked();
    2385           0 :     aSettingsFL.Enable( bChecked );
    2386           0 :     aRsidCB.Enable( bChecked );
    2387           0 :     aIgnoreCB.Enable( bChecked );
    2388           0 :     aLenNF.Enable( bChecked && aIgnoreCB.IsChecked() );
    2389             : 
    2390           0 :     return 0;
    2391             : }
    2392             : 
    2393           0 : IMPL_LINK_NOARG(SwCompareOptionsTabPage, IgnoreHdl)
    2394             : {
    2395           0 :     aLenNF.Enable( aIgnoreCB.IsChecked() );
    2396           0 :     return 0;
    2397           0 : }
    2398             : 
    2399             : #ifdef DBG_UTIL
    2400             : 
    2401             : static void lcl_SetPosSize(Window& rWin, Point aPos, Size aSize)
    2402             : {
    2403             :     aPos = rWin.LogicToPixel(aPos, MAP_APPFONT);
    2404             :     aSize = rWin.OutputDevice::LogicToPixel(aSize, MAP_APPFONT);
    2405             :     rWin.SetPosSizePixel(aPos, aSize);
    2406             : }
    2407             : 
    2408             : SwTestTabPage::SwTestTabPage( Window* pParent,
    2409             :                                       const SfxItemSet& rCoreSet) :
    2410             :     SfxTabPage( pParent, WB_HIDE, rCoreSet),
    2411             :     aTestFL        ( this, WB_GROUP ),
    2412             :     aTest1CBox      ( this, 0 ),
    2413             :     aTest2CBox      ( this, 0 ),
    2414             :     aTest3CBox      ( this, 0 ),
    2415             :     aTest4CBox      ( this, 0 ),
    2416             :     aTest5CBox      ( this, 0 ),
    2417             :     aTest6CBox      ( this, 0 ),
    2418             :     aTest7CBox      ( this, 0 ),
    2419             :     aTest8CBox      ( this, 0 ),
    2420             :     aTest9CBox      ( this, 0 ),
    2421             :     aTest10CBox     ( this, 0 ),
    2422             :     bAttrModified( sal_False )
    2423             : {
    2424             :     lcl_SetPosSize(*this,       Point(0,0), Size(260 , 135));
    2425             :     lcl_SetPosSize(aTestFL,   Point(6,2), Size(209,8));
    2426             :     lcl_SetPosSize(aTest1CBox  ,    Point(12 , 14), Size(74 , 10));
    2427             :     lcl_SetPosSize(aTest2CBox  ,    Point(12 , 27), Size(74 , 10));
    2428             :     lcl_SetPosSize(aTest3CBox  ,    Point(12 , 40), Size(74 , 10));
    2429             :     lcl_SetPosSize(aTest4CBox  ,    Point(12 , 53), Size(74 , 10));
    2430             :     lcl_SetPosSize(aTest5CBox  ,    Point(12 , 66), Size(74 , 10));
    2431             :     lcl_SetPosSize(aTest6CBox  ,    Point(116, 14), Size(74 , 10));
    2432             :     lcl_SetPosSize(aTest7CBox  ,    Point(116, 27), Size(74 , 10));
    2433             :     lcl_SetPosSize(aTest8CBox  ,    Point(116, 40), Size(74 , 10));
    2434             :     lcl_SetPosSize(aTest9CBox  ,    Point(116, 53), Size(74 , 10));
    2435             :     lcl_SetPosSize(aTest10CBox  ,   Point(116, 66), Size(74 , 10));
    2436             : 
    2437             :     aTestFL.SetText(rtl::OUString("Settings only for testpurposes"));
    2438             :     aTest1CBox.SetText(rtl::OUString("unused"));
    2439             :     aTest2CBox.SetText(rtl::OUString("dynamic"));
    2440             :     aTest3CBox.SetText(rtl::OUString("No calm"));
    2441             :     aTest4CBox.SetText(rtl::OUString("WYSIWYG debug"));
    2442             :     aTest5CBox.SetText(rtl::OUString("No idle format"));
    2443             :     aTest6CBox.SetText(rtl::OUString("No screen adj"));
    2444             :     aTest7CBox.SetText(rtl::OUString("win format"));
    2445             :     aTest8CBox.SetText(rtl::OUString("No Scroll"));
    2446             :     aTest9CBox.SetText(rtl::OUString("DrawingLayerNotLoading"));
    2447             :     aTest10CBox.SetText(rtl::OUString("AutoFormat by Input"));
    2448             :     aTestFL.Show();
    2449             :     aTest1CBox .Show();
    2450             :     aTest2CBox .Show();
    2451             :     aTest3CBox .Show();
    2452             :     aTest4CBox .Show();
    2453             :     aTest5CBox .Show();
    2454             :     aTest6CBox .Show();
    2455             :     aTest7CBox .Show();
    2456             :     aTest8CBox .Show();
    2457             :     aTest9CBox .Show();
    2458             :     aTest10CBox.Show();
    2459             :     Init();
    2460             : 
    2461             : }
    2462             : 
    2463             : SfxTabPage* SwTestTabPage::Create( Window* pParent,
    2464             :                                        const SfxItemSet& rAttrSet )
    2465             : {
    2466             :     return ( new SwTestTabPage( pParent, rAttrSet ) );
    2467             : }
    2468             : 
    2469             : sal_Bool    SwTestTabPage::FillItemSet( SfxItemSet& rCoreSet )
    2470             : {
    2471             : 
    2472             :     if ( bAttrModified )
    2473             :     {
    2474             :         SwTestItem aTestItem(FN_PARAM_SWTEST);
    2475             :             aTestItem.bTest1=aTest1CBox.IsChecked();
    2476             :             aTestItem.bTest2=aTest2CBox.IsChecked();
    2477             :             aTestItem.bTest3=aTest3CBox.IsChecked();
    2478             :             aTestItem.bTest4=aTest4CBox.IsChecked();
    2479             :             aTestItem.bTest5=aTest5CBox.IsChecked();
    2480             :             aTestItem.bTest6=aTest6CBox.IsChecked();
    2481             :             aTestItem.bTest7=aTest7CBox.IsChecked();
    2482             :             aTestItem.bTest8=aTest8CBox.IsChecked();
    2483             :             aTestItem.bTest9=aTest9CBox.IsChecked();
    2484             :             aTestItem.bTest10=aTest10CBox.IsChecked();
    2485             :         rCoreSet.Put(aTestItem);
    2486             :     }
    2487             :     return bAttrModified;
    2488             : }
    2489             : 
    2490             : void SwTestTabPage::Reset( const SfxItemSet& )
    2491             : {
    2492             :     const SfxItemSet& rSet = GetItemSet();
    2493             :     const SwTestItem* pTestAttr = 0;
    2494             : 
    2495             :     if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_SWTEST , sal_False,
    2496             :                                     (const SfxPoolItem**)&pTestAttr ))
    2497             :     {
    2498             :         aTest1CBox.Check(pTestAttr->bTest1);
    2499             :         aTest2CBox.Check(pTestAttr->bTest2);
    2500             :         aTest3CBox.Check(pTestAttr->bTest3);
    2501             :         aTest4CBox.Check(pTestAttr->bTest4);
    2502             :         aTest5CBox.Check(pTestAttr->bTest5);
    2503             :         aTest6CBox.Check(pTestAttr->bTest6);
    2504             :         aTest7CBox.Check(pTestAttr->bTest7);
    2505             :         aTest8CBox.Check(pTestAttr->bTest8);
    2506             :         aTest9CBox.Check(pTestAttr->bTest9);
    2507             :         aTest10CBox.Check(pTestAttr->bTest10);
    2508             :     }
    2509             : }
    2510             : 
    2511             : void SwTestTabPage::Init()
    2512             : {
    2513             :     // handler
    2514             :     Link aLk = LINK( this, SwTestTabPage, AutoClickHdl );
    2515             :     aTest1CBox.SetClickHdl( aLk );
    2516             :     aTest2CBox.SetClickHdl( aLk );
    2517             :     aTest3CBox.SetClickHdl( aLk );
    2518             :     aTest4CBox.SetClickHdl( aLk );
    2519             :     aTest5CBox.SetClickHdl( aLk );
    2520             :     aTest6CBox.SetClickHdl( aLk );
    2521             :     aTest7CBox.SetClickHdl( aLk );
    2522             :     aTest8CBox.SetClickHdl( aLk );
    2523             :     aTest9CBox.SetClickHdl( aLk );
    2524             :     aTest10CBox.SetClickHdl( aLk );
    2525             : }
    2526             : 
    2527             : IMPL_LINK_NOARG_INLINE_START(SwTestTabPage, AutoClickHdl)
    2528             : {
    2529             :     bAttrModified = sal_True;
    2530             :     return 0;
    2531             : }
    2532             : IMPL_LINK_NOARG_INLINE_END(SwTestTabPage, AutoClickHdl)
    2533             : 
    2534             : 
    2535             : #endif
    2536             : 
    2537             : 
    2538             : 
    2539             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10