LCOV - code coverage report
Current view: top level - sw/source/ui/config - optpage.cxx (source / functions) Hit Total Coverage
Test: commit 10e77ab3ff6f4314137acd6e2702a6e5c1ce1fae Lines: 0 1414 0.0 %
Date: 2014-11-03 Functions: 0 92 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 <IDocumentSettingAccess.hxx>
      31             : #include <swmodule.hxx>
      32             : #include <wrtsh.hxx>
      33             : #include <uitool.hxx>
      34             : #include <cfgitems.hxx>
      35             : #include <poolfmt.hxx>
      36             : #include <uiitems.hxx>
      37             : #include <initui.hxx>
      38             : #include <printdata.hxx>
      39             : #include <modcfg.hxx>
      40             : #include <srcview.hxx>
      41             : #include <crstate.hxx>
      42             : #include <viewopt.hxx>
      43             : #include <globals.hrc>
      44             : #include <config.hrc>
      45             : #include <swwrtshitem.hxx>
      46             : #include <unomid.h>
      47             : 
      48             : #include <editeng/fhgtitem.hxx>
      49             : #include <editeng/fontitem.hxx>
      50             : #include <editeng/langitem.hxx>
      51             : #include <editeng/svxenum.hxx>
      52             : #include <sal/macros.h>
      53             : #include <sfx2/dialoghelper.hxx>
      54             : #include <sfx2/request.hxx>
      55             : #include <sfx2/printer.hxx>
      56             : #include <sfx2/bindings.hxx>
      57             : #include <svl/slstitm.hxx>
      58             : #include <svl/ctloptions.hxx>
      59             : #include <svl/eitem.hxx>
      60             : #include <svl/cjkoptions.hxx>
      61             : #include <svtools/ctrltool.hxx>
      62             : #include <sfx2/htmlmode.hxx>
      63             : #include <svx/xtable.hxx>
      64             : #include <svx/dlgutil.hxx>
      65             : #include <svx/strarray.hxx>
      66             : 
      67             : #include <vcl/settings.hxx>
      68             : #include <vcl/svapp.hxx>
      69             : 
      70             : using namespace ::com::sun::star;
      71             : 
      72             : // Tools->Options->Writer->View
      73             : // Tools->Options->Writer/Web->View
      74           0 : SwContentOptPage::SwContentOptPage( vcl::Window* pParent,
      75             :                                       const SfxItemSet& rCoreSet ) :
      76             :     SfxTabPage(pParent, "ViewOptionsPage",
      77           0 :                "modules/swriter/ui/viewoptionspage.ui", &rCoreSet)
      78             : {
      79           0 :     get (m_pCrossCB, "helplines");
      80             : 
      81           0 :     get (m_pHScrollBox, "hscrollbar");
      82           0 :     get (m_pVScrollBox, "vscrollbar");
      83           0 :     get (m_pAnyRulerCB, "ruler");
      84           0 :     get (m_pHRulerCBox, "hruler");
      85           0 :     get (m_pHMetric, "hrulercombobox");
      86           0 :     get (m_pVRulerCBox, "vruler");
      87           0 :     get (m_pVRulerRightCBox, "vrulerright");
      88           0 :     get (m_pVMetric, "vrulercombobox");
      89           0 :     get (m_pSmoothCBox, "smoothscroll");
      90             : 
      91           0 :     get (m_pGrfCB, "graphics");
      92           0 :     get (m_pTblCB, "tables");
      93           0 :     get (m_pDrwCB, "drawings");
      94           0 :     get (m_pFldNameCB, "fieldcodes");
      95           0 :     get (m_pPostItCB, "comments");
      96             : 
      97           0 :     get (m_pSettingsFrame, "settingsframe");
      98           0 :     get (m_pSettingsLabel, "settingslabel");
      99           0 :     get (m_pMetricLabel, "measureunitlabel");
     100           0 :     get (m_pMetricLB, "measureunit");
     101             : 
     102             :     /* This part is visible only with Writer/Web->View dialogue. */
     103             :     const SfxPoolItem* pItem;
     104           0 :     if (! (SfxItemState::SET == rCoreSet.GetItemState(SID_HTML_MODE, false, &pItem )
     105           0 :            && ((SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON))
     106             :     {
     107           0 :         m_pSettingsFrame->Hide();
     108           0 :         m_pSettingsLabel->Hide();
     109           0 :         m_pMetricLabel->Hide();
     110           0 :         m_pMetricLB->Hide();
     111             :     }
     112             : 
     113           0 :     SvtCJKOptions aCJKOptions;
     114           0 :     if(!aCJKOptions.IsVerticalTextEnabled() )
     115           0 :         m_pVRulerRightCBox->Hide();
     116           0 :     m_pVRulerCBox->SetClickHdl(LINK(this, SwContentOptPage, VertRulerHdl ));
     117           0 :     m_pAnyRulerCB->SetClickHdl(LINK(this, SwContentOptPage, AnyRulerHdl));
     118             : 
     119           0 :     SvxStringArray aMetricArr( SW_RES( STR_ARR_METRIC ) );
     120           0 :     for ( size_t i = 0; i < aMetricArr.Count(); ++i )
     121             :     {
     122           0 :         const OUString 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_Int32 nPos = m_pMetricLB->InsertEntry( sMetric );
     141           0 :                    m_pMetricLB->SetEntryData( nPos, (void*)(sal_IntPtr)eFUnit );
     142           0 :                    m_pHMetric->InsertEntry( sMetric );
     143           0 :                    m_pHMetric->SetEntryData( nPos, (void*)(sal_IntPtr)eFUnit );
     144             :                 }
     145             :                 // a vertical ruler has not the 'character' unit
     146           0 :                 if ( eFUnit != FUNIT_CHAR )
     147             :                 {
     148           0 :                    sal_Int32 nPos = m_pVMetric->InsertEntry( sMetric );
     149           0 :                    m_pVMetric->SetEntryData( nPos, (void*)(sal_IntPtr)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( vcl::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, false, &pItem ) >= SfxItemState::DEFAULT )
     171             :     {
     172           0 :         FieldUnit eFieldUnit = (FieldUnit)((SfxUInt16Item*)pItem)->GetValue();
     173           0 :         for ( sal_Int32 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 , false,
     190           0 :                                     (const SfxPoolItem**)&pElemAttr );
     191           0 :     if(pElemAttr)
     192             :     {
     193           0 :         m_pTblCB->Check (pElemAttr->bTable);
     194           0 :         m_pGrfCB->Check (pElemAttr->bGraphic);
     195           0 :         m_pDrwCB->Check (pElemAttr->bDrawing);
     196           0 :         m_pFldNameCB->Check (pElemAttr->bFieldName);
     197           0 :         m_pPostItCB->Check (pElemAttr->bNotes);
     198           0 :         m_pCrossCB->Check (pElemAttr->bCrosshair);
     199           0 :         m_pHScrollBox->Check (pElemAttr->bHorzScrollbar);
     200           0 :         m_pVScrollBox->Check (pElemAttr->bVertScrollbar);
     201           0 :         m_pAnyRulerCB->Check (pElemAttr->bAnyRuler);
     202           0 :         m_pHRulerCBox->Check (pElemAttr->bHorzRuler);
     203           0 :         m_pVRulerCBox->Check (pElemAttr->bVertRuler);
     204           0 :         m_pVRulerRightCBox->Check (pElemAttr->bVertRulerRight);
     205           0 :         m_pSmoothCBox->Check (pElemAttr->bSmoothScroll);
     206             :     }
     207           0 :     m_pMetricLB->SetNoSelection();
     208           0 :     lcl_SelectMetricLB(m_pMetricLB, SID_ATTR_METRIC, *rSet);
     209           0 :     lcl_SelectMetricLB(m_pHMetric, FN_HSCROLL_METRIC, *rSet);
     210           0 :     lcl_SelectMetricLB(m_pVMetric, FN_VSCROLL_METRIC, *rSet);
     211           0 :     AnyRulerHdl(m_pAnyRulerCB);
     212           0 : }
     213             : 
     214           0 : 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                = m_pTblCB->IsChecked();
     223           0 :     aElem.bGraphic              = m_pGrfCB->IsChecked();
     224           0 :     aElem.bDrawing              = m_pDrwCB->IsChecked();
     225           0 :     aElem.bFieldName            = m_pFldNameCB->IsChecked();
     226           0 :     aElem.bNotes                = m_pPostItCB->IsChecked();
     227           0 :     aElem.bCrosshair            = m_pCrossCB->IsChecked();
     228           0 :     aElem.bHorzScrollbar        = m_pHScrollBox->IsChecked();
     229           0 :     aElem.bVertScrollbar        = m_pVScrollBox->IsChecked();
     230           0 :     aElem.bAnyRuler             = m_pAnyRulerCB->IsChecked();
     231           0 :     aElem.bHorzRuler            = m_pHRulerCBox->IsChecked();
     232           0 :     aElem.bVertRuler            = m_pVRulerCBox->IsChecked();
     233           0 :     aElem.bVertRulerRight       = m_pVRulerRightCBox->IsChecked();
     234           0 :     aElem.bSmoothScroll         = m_pSmoothCBox->IsChecked();
     235             : 
     236           0 :     bool bRet = !pOldAttr || aElem != *pOldAttr;
     237           0 :     if(bRet)
     238           0 :         bRet = 0 != rSet->Put(aElem);
     239             : 
     240           0 :     sal_Int32 nMPos = m_pMetricLB->GetSelectEntryPos();
     241           0 :     sal_Int32 nGlobalMetricPos = nMPos;
     242           0 :     if ( m_pMetricLB->IsValueChangedFromSaved() )
     243             :     {
     244             :         // Double-Cast for VA3.0
     245           0 :         const sal_uInt16 nFieldUnit = (sal_uInt16)(sal_IntPtr)m_pMetricLB->GetEntryData( nMPos );
     246           0 :         rSet->Put( SfxUInt16Item( SID_ATTR_METRIC, nFieldUnit ) );
     247           0 :         bRet = true;
     248             :     }
     249             : 
     250           0 :     nMPos = m_pHMetric->GetSelectEntryPos();
     251           0 :     if ( m_pHMetric->IsValueChangedFromSaved() || nMPos != nGlobalMetricPos )
     252             :     {
     253             :         // Double-Cast for VA3.0
     254           0 :         const sal_uInt16 nFieldUnit = (sal_uInt16)(sal_IntPtr)m_pHMetric->GetEntryData( nMPos );
     255           0 :         rSet->Put( SfxUInt16Item( FN_HSCROLL_METRIC, nFieldUnit ) );
     256           0 :         bRet = true;
     257             :     }
     258           0 :     nMPos = m_pVMetric->GetSelectEntryPos();
     259           0 :     if ( m_pVMetric->IsValueChangedFromSaved() || nMPos != nGlobalMetricPos )
     260             :     {
     261             :         // Double-Cast for VA3.0
     262           0 :         const sal_uInt16 nFieldUnit = (sal_uInt16)(sal_IntPtr)m_pVMetric->GetEntryData( nMPos );
     263           0 :         rSet->Put( SfxUInt16Item( FN_VSCROLL_METRIC, nFieldUnit ) );
     264           0 :         bRet = true;
     265             :     }
     266           0 :     return bRet;
     267             : }
     268             : 
     269           0 : IMPL_LINK(SwContentOptPage, VertRulerHdl, CheckBox*, pBox)
     270             : {
     271           0 :     m_pVRulerRightCBox->Enable(pBox->IsEnabled() && pBox->IsChecked());
     272           0 :     return 0;
     273             : }
     274             : 
     275           0 : IMPL_LINK( SwContentOptPage, AnyRulerHdl, CheckBox*, pBox)
     276             : {
     277           0 :     bool bChecked = pBox->IsChecked();
     278           0 :     m_pHRulerCBox->Enable(bChecked);
     279           0 :     m_pHMetric->Enable(bChecked);
     280           0 :     m_pVRulerCBox->Enable(bChecked);
     281           0 :     m_pVMetric->Enable(bChecked);
     282           0 :     VertRulerHdl(m_pVRulerCBox);
     283           0 :     return 0;
     284             : }
     285             : 
     286             : // TabPage Printer additional settings
     287           0 : SwAddPrinterTabPage::SwAddPrinterTabPage(vcl::Window* pParent,
     288             :     const SfxItemSet& rCoreSet)
     289             :     : SfxTabPage(pParent, "PrintOptionsPage",
     290             :         "modules/swriter/ui/printoptionspage.ui", &rCoreSet)
     291             :     , sNone(SW_RESSTR(SW_STR_NONE))
     292             :     , bAttrModified(false)
     293           0 :     , bPreview(false)
     294             : {
     295           0 :     get(m_pGrfCB, "graphics");
     296           0 :     get(m_pCtrlFldCB, "formcontrols");
     297           0 :     get(m_pBackgroundCB, "background");
     298           0 :     get(m_pBlackFontCB, "inblack");
     299           0 :     get(m_pPrintHiddenTextCB, "hiddentext");
     300           0 :     get(m_pPrintTextPlaceholderCB, "textplaceholder");
     301             : 
     302           0 :     get(m_pPagesFrame, "pagesframe");
     303           0 :     get(m_pLeftPageCB, "leftpages");
     304           0 :     get(m_pRightPageCB, "rightpages");
     305           0 :     get(m_pProspectCB, "brochure");
     306           0 :     get(m_pProspectCB_RTL, "rtl");
     307             : 
     308           0 :     get(m_pCommentsFrame, "commentsframe");
     309           0 :     get(m_pNoRB, "none");
     310           0 :     get(m_pOnlyRB, "only");
     311           0 :     get(m_pEndRB, "end");
     312           0 :     get(m_pEndPageRB, "endpage");
     313           0 :     get(m_pInMarginsRB, "inmargins");
     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_pInMarginsRB->SetClickHdl( aLk );
     335           0 :     m_pEndRB->SetClickHdl( aLk );
     336           0 :     m_pOnlyRB->SetClickHdl( aLk );
     337           0 :     m_pNoRB->SetClickHdl( aLk );
     338           0 :     m_pFaxLB->SetSelectHdl( LINK( this, SwAddPrinterTabPage, SelectHdl ) );
     339             : 
     340             :     const SfxPoolItem* pItem;
     341           0 :     if(SfxItemState::SET == rCoreSet.GetItemState(SID_HTML_MODE, false, &pItem )
     342           0 :         && ((SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON)
     343             :     {
     344           0 :         m_pLeftPageCB->Hide();
     345           0 :         m_pRightPageCB->Hide();
     346           0 :         m_pPrintHiddenTextCB->Hide();
     347           0 :         m_pPrintTextPlaceholderCB->Hide();
     348             : 
     349             :         // hide m_pPrintEmptyPagesCB
     350           0 :         m_pPrintEmptyPagesCB->Hide();
     351             :     }
     352           0 :     m_pProspectCB_RTL->Disable();
     353           0 :     SvtCTLOptions aCTLOptions;
     354           0 :     m_pProspectCB_RTL->Show(aCTLOptions.IsCTLFontEnabled());
     355           0 : }
     356             : 
     357           0 : void SwAddPrinterTabPage::SetPreview(bool bPrev)
     358             : {
     359           0 :     bPreview = bPrev;
     360           0 :     m_pCommentsFrame->Enable(!bPreview);
     361           0 :     m_pPagesFrame->Enable(!bPreview);
     362           0 : }
     363             : 
     364           0 : SfxTabPage* SwAddPrinterTabPage::Create( vcl::Window* pParent,
     365             :                                        const SfxItemSet* rAttrSet )
     366             : {
     367           0 :     return ( new SwAddPrinterTabPage( pParent, *rAttrSet ) );
     368             : }
     369             : 
     370           0 : bool    SwAddPrinterTabPage::FillItemSet( SfxItemSet* rCoreSet )
     371             : {
     372           0 :     if ( bAttrModified )
     373             :     {
     374           0 :         SwAddPrinterItem aAddPrinterAttr (FN_PARAM_ADDPRINTER);
     375           0 :         aAddPrinterAttr.bPrintGraphic   = m_pGrfCB->IsChecked();
     376           0 :         aAddPrinterAttr.bPrintTable     = true; // always enabled since CWS printerpullgpages /*aTabCB.IsChecked();*/
     377           0 :         aAddPrinterAttr.bPrintDraw      = m_pGrfCB->IsChecked(); // UI merged with m_pGrfCB in CWS printerpullgpages
     378           0 :         aAddPrinterAttr.bPrintControl   = m_pCtrlFldCB->IsChecked();
     379           0 :         aAddPrinterAttr.bPrintPageBackground = m_pBackgroundCB->IsChecked();
     380           0 :         aAddPrinterAttr.bPrintBlackFont = m_pBlackFontCB->IsChecked();
     381           0 :         aAddPrinterAttr.bPrintHiddenText = m_pPrintHiddenTextCB->IsChecked();
     382           0 :         aAddPrinterAttr.bPrintTextPlaceholder = m_pPrintTextPlaceholderCB->IsChecked();
     383             : 
     384           0 :         aAddPrinterAttr.bPrintLeftPages     = m_pLeftPageCB->IsChecked();
     385           0 :         aAddPrinterAttr.bPrintRightPages    = m_pRightPageCB->IsChecked();
     386           0 :         aAddPrinterAttr.bPrintReverse       = false; // handled by vcl itself since CWS printerpullpages /*aReverseCB.IsChecked()*/;
     387           0 :         aAddPrinterAttr.bPrintProspect      = m_pProspectCB->IsChecked();
     388           0 :         aAddPrinterAttr.bPrintProspectRTL   = m_pProspectCB_RTL->IsChecked();
     389           0 :         aAddPrinterAttr.bPaperFromSetup     = m_pPaperFromSetupCB->IsChecked();
     390           0 :         aAddPrinterAttr.bPrintEmptyPages    = m_pPrintEmptyPagesCB->IsChecked();
     391           0 :         aAddPrinterAttr.bPrintSingleJobs    = true; // handled by vcl in new print dialog since CWS printerpullpages /*aSingleJobsCB.IsChecked()*/;
     392             : 
     393           0 :         if (m_pNoRB->IsChecked())  aAddPrinterAttr.nPrintPostIts =
     394           0 :                                                         POSTITS_NONE;
     395           0 :         if (m_pOnlyRB->IsChecked()) aAddPrinterAttr.nPrintPostIts =
     396           0 :                                                         POSTITS_ONLY;
     397           0 :         if (m_pEndRB->IsChecked()) aAddPrinterAttr.nPrintPostIts =
     398           0 :                                                         POSTITS_ENDDOC;
     399           0 :         if (m_pEndPageRB->IsChecked()) aAddPrinterAttr.nPrintPostIts =
     400           0 :                                                         POSTITS_ENDPAGE;
     401           0 :         if (m_pInMarginsRB->IsChecked()) aAddPrinterAttr.nPrintPostIts =
     402           0 :                                                         POSTITS_INMARGINS;
     403             : 
     404           0 :         const OUString sFax = m_pFaxLB->GetSelectEntry();
     405           0 :         aAddPrinterAttr.sFaxName = sNone == sFax ? aEmptyOUStr : sFax;
     406           0 :         rCoreSet->Put(aAddPrinterAttr);
     407             :     }
     408           0 :     return bAttrModified;
     409             : }
     410             : 
     411           0 : void    SwAddPrinterTabPage::Reset( const SfxItemSet*  )
     412             : {
     413           0 :     const   SfxItemSet&         rSet = GetItemSet();
     414           0 :     const   SwAddPrinterItem*   pAddPrinterAttr = 0;
     415             : 
     416           0 :     if( SfxItemState::SET == rSet.GetItemState( FN_PARAM_ADDPRINTER , false,
     417           0 :                                     (const SfxPoolItem**)&pAddPrinterAttr ))
     418             :     {
     419           0 :         m_pGrfCB->Check(pAddPrinterAttr->bPrintGraphic || pAddPrinterAttr->bPrintDraw);
     420           0 :         m_pCtrlFldCB->Check(       pAddPrinterAttr->bPrintControl);
     421           0 :         m_pBackgroundCB->Check(    pAddPrinterAttr->bPrintPageBackground);
     422           0 :         m_pBlackFontCB->Check(     pAddPrinterAttr->bPrintBlackFont);
     423           0 :         m_pPrintHiddenTextCB->Check( pAddPrinterAttr->bPrintHiddenText);
     424           0 :         m_pPrintTextPlaceholderCB->Check(pAddPrinterAttr->bPrintTextPlaceholder);
     425           0 :         m_pLeftPageCB->Check(      pAddPrinterAttr->bPrintLeftPages);
     426           0 :         m_pRightPageCB->Check(     pAddPrinterAttr->bPrintRightPages);
     427           0 :         m_pPaperFromSetupCB->Check(pAddPrinterAttr->bPaperFromSetup);
     428           0 :         m_pPrintEmptyPagesCB->Check(pAddPrinterAttr->bPrintEmptyPages);
     429           0 :         m_pProspectCB->Check(      pAddPrinterAttr->bPrintProspect);
     430           0 :         m_pProspectCB_RTL->Check(      pAddPrinterAttr->bPrintProspectRTL);
     431             : 
     432           0 :         m_pNoRB->Check (pAddPrinterAttr->nPrintPostIts== POSTITS_NONE ) ;
     433           0 :         m_pOnlyRB->Check (pAddPrinterAttr->nPrintPostIts== POSTITS_ONLY ) ;
     434           0 :         m_pEndRB->Check (pAddPrinterAttr->nPrintPostIts== POSTITS_ENDDOC ) ;
     435           0 :         m_pEndPageRB->Check (pAddPrinterAttr->nPrintPostIts== POSTITS_ENDPAGE ) ;
     436           0 :         m_pInMarginsRB->Check (pAddPrinterAttr->nPrintPostIts== POSTITS_INMARGINS ) ;
     437           0 :         m_pFaxLB->SelectEntry( pAddPrinterAttr->sFaxName );
     438             :     }
     439           0 :     if (m_pProspectCB->IsChecked())
     440             :     {
     441           0 :         m_pProspectCB_RTL->Enable(true);
     442           0 :         m_pNoRB->Enable( false );
     443           0 :         m_pOnlyRB->Enable( false );
     444           0 :         m_pEndRB->Enable( false );
     445           0 :         m_pEndPageRB->Enable( false );
     446             :     }
     447             :     else
     448           0 :         m_pProspectCB_RTL->Enable( 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 = true;
     459           0 :     bool bIsProspect = m_pProspectCB->IsChecked();
     460           0 :     if (!bIsProspect)
     461           0 :         m_pProspectCB_RTL->Check( 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 :     m_pInMarginsRB->Enable( !bIsProspect );
     468           0 :     return 0;
     469             : }
     470           0 : IMPL_LINK_NOARG_INLINE_END(SwAddPrinterTabPage, AutoClickHdl)
     471             : 
     472           0 : void  SwAddPrinterTabPage::SetFax( const std::vector<OUString>& rFaxLst )
     473             : {
     474           0 :     m_pFaxLB->InsertEntry(sNone);
     475           0 :     for(size_t i = 0; i < rFaxLst.size(); ++i)
     476             :     {
     477           0 :         m_pFaxLB->InsertEntry(rFaxLst[i]);
     478             :     }
     479           0 :     m_pFaxLB->SelectEntryPos(0);
     480           0 : }
     481             : 
     482           0 : IMPL_LINK_NOARG_INLINE_START(SwAddPrinterTabPage, SelectHdl)
     483             : {
     484           0 :     bAttrModified=true;
     485           0 :     return 0;
     486             : }
     487           0 : IMPL_LINK_NOARG_INLINE_END(SwAddPrinterTabPage, SelectHdl)
     488             : 
     489           0 : void SwAddPrinterTabPage::PageCreated( const SfxAllItemSet& aSet)
     490             : {
     491           0 :     SFX_ITEMSET_ARG (&aSet,pListItem,SfxBoolItem,SID_FAX_LIST,false);
     492           0 :     SFX_ITEMSET_ARG (&aSet,pPreviewItem,SfxBoolItem,SID_PREVIEWFLAG_TYPE,false);
     493           0 :     if (pPreviewItem)
     494             :     {
     495           0 :         SetPreview(pPreviewItem->GetValue());
     496           0 :         Reset(&aSet);
     497             :     }
     498           0 :     if (pListItem && pListItem->GetValue())
     499             :     {
     500           0 :         std::vector<OUString> aFaxList;
     501           0 :         const std::vector<OUString>& rPrinters = Printer::GetPrinterQueues();
     502           0 :         for (unsigned int i = 0; i < rPrinters.size(); ++i)
     503           0 :             aFaxList.insert(aFaxList.begin(), rPrinters[i]);
     504           0 :         SetFax( aFaxList );
     505             :     }
     506           0 : }
     507             : 
     508             : // Tabpage Standardfonts
     509           0 : SwStdFontTabPage::SwStdFontTabPage( vcl::Window* pParent,
     510             :                                        const SfxItemSet& rSet ) :
     511             :     SfxTabPage( pParent, "OptFontTabPage" , "modules/swriter/ui/optfonttabpage.ui" , &rSet),
     512             :     pPrt(0),
     513             :     pFontList(0),
     514             :     pFontConfig(0),
     515             :     pWrtShell(0),
     516           0 :     eLanguage( GetAppLanguage() ),
     517             : 
     518             :     bListDefault(false),
     519             :     bSetListDefault(true),
     520             :     bLabelDefault(false),
     521             :     bSetLabelDefault(true),
     522             :     bIdxDefault(false),
     523             :     bSetIdxDefault(true),
     524             :     bDeletePrinter(false),
     525             : 
     526             :     bListHeightDefault    (false),
     527             :     bSetListHeightDefault (false),
     528             :     bLabelHeightDefault   (false),
     529             :     bSetLabelHeightDefault(false),
     530             :     bIndexHeightDefault     (false),
     531             :     bSetIndexHeightDefault  (false),
     532             : 
     533             :     nFontGroup(FONT_GROUP_DEFAULT),
     534             : 
     535             :     sScriptWestern(SW_RES(ST_SCRIPT_WESTERN)),
     536             :     sScriptAsian(SW_RES(ST_SCRIPT_ASIAN)),
     537           0 :     sScriptComplex(SW_RES(ST_SCRIPT_CTL))
     538             : {
     539           0 :     get(pLabelFT,"label1");
     540           0 :     get(pStandardBox,"standardbox");
     541           0 :     pStandardBox->SetStyle(pStandardBox->GetStyle() |  WB_SORT);
     542           0 :     get(pStandardHeightLB,"standardheight");
     543           0 :     get(pTitleBox,"titlebox");
     544           0 :     pTitleBox->SetStyle(pTitleBox->GetStyle() |  WB_SORT);
     545           0 :     get(pTitleHeightLB,"titleheight");
     546           0 :     get(pListBox,"listbox");
     547           0 :     pListBox->SetStyle(pListBox->GetStyle() |  WB_SORT);
     548           0 :     get(pListHeightLB,"listheight");
     549           0 :     get(pLabelBox,"labelbox");
     550           0 :     pLabelBox->SetStyle(pLabelBox->GetStyle() |  WB_SORT);
     551           0 :     get(pLabelHeightLB,"labelheight");
     552           0 :     get(pIdxBox,"idxbox");
     553           0 :     pIdxBox->SetStyle(pIdxBox->GetStyle() |  WB_SORT);
     554           0 :     get(pIndexHeightLB,"indexheight");
     555             : 
     556           0 :     get(pDocOnlyCB,"doconly");
     557           0 :     get(pStandardPB,"standard");
     558             : 
     559           0 :     pStandardPB->SetClickHdl(LINK(this, SwStdFontTabPage, StandardHdl));
     560           0 :     pStandardBox->SetModifyHdl( LINK(this, SwStdFontTabPage, ModifyHdl));
     561           0 :     pListBox    ->SetModifyHdl( LINK(this, SwStdFontTabPage, ModifyHdl));
     562           0 :     pLabelBox   ->SetModifyHdl( LINK(this, SwStdFontTabPage, ModifyHdl));
     563           0 :     pIdxBox     ->SetModifyHdl( LINK(this, SwStdFontTabPage, ModifyHdl));
     564           0 :     Link aFocusLink = LINK( this, SwStdFontTabPage, LoseFocusHdl);
     565           0 :     pStandardBox->SetLoseFocusHdl( aFocusLink );
     566           0 :     pTitleBox   ->SetLoseFocusHdl( aFocusLink );
     567           0 :     pListBox    ->SetLoseFocusHdl( aFocusLink );
     568           0 :     pLabelBox   ->SetLoseFocusHdl( aFocusLink );
     569           0 :     pIdxBox     ->SetLoseFocusHdl( aFocusLink );
     570             : 
     571           0 :     Link aModifyHeightLink( LINK( this, SwStdFontTabPage, ModifyHeightHdl));
     572           0 :     pStandardHeightLB->SetModifyHdl( aModifyHeightLink );
     573           0 :     pTitleHeightLB->   SetModifyHdl( aModifyHeightLink );
     574           0 :     pListHeightLB->    SetModifyHdl( aModifyHeightLink );
     575           0 :     pLabelHeightLB->   SetModifyHdl( aModifyHeightLink );
     576           0 :     pIndexHeightLB->   SetModifyHdl( aModifyHeightLink );
     577             : 
     578           0 :     pDocOnlyCB->Check(SW_MOD()->GetModuleConfig()->IsDefaultFontInCurrDocOnly());
     579           0 : }
     580             : 
     581           0 : SwStdFontTabPage::~SwStdFontTabPage()
     582             : {
     583           0 :     delete pFontList;
     584           0 :     if (bDeletePrinter)
     585             :     {
     586           0 :         delete pPrt;
     587             :     }
     588           0 : }
     589             : 
     590           0 : SfxTabPage* SwStdFontTabPage::Create( vcl::Window* pParent,
     591             :                                 const SfxItemSet* rAttrSet )
     592             : {
     593           0 :     return new SwStdFontTabPage(pParent, *rAttrSet);
     594             : }
     595             : 
     596           0 : static void lcl_SetColl(SwWrtShell* pWrtShell, sal_uInt16 nType,
     597             :                     SfxPrinter* pPrt, const OUString& rStyle,
     598             :                     sal_uInt16 nFontWhich)
     599             : {
     600           0 :     vcl::Font aFont( rStyle, Size( 0, 10 ) );
     601           0 :     if( pPrt )
     602           0 :         aFont = pPrt->GetFontMetric( aFont );
     603           0 :     SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(nType);
     604           0 :     pColl->SetFmtAttr(SvxFontItem(aFont.GetFamily(), aFont.GetName(),
     605           0 :                 aEmptyOUStr, aFont.GetPitch(), aFont.GetCharSet(), nFontWhich));
     606           0 : }
     607             : 
     608           0 : static void lcl_SetColl(SwWrtShell* pWrtShell, sal_uInt16 nType,
     609             :                     sal_Int32 nHeight, sal_uInt16 nFontHeightWhich)
     610             : {
     611           0 :     float fSize = (float)nHeight / 10;
     612           0 :     nHeight = CalcToUnit( fSize, SFX_MAPUNIT_TWIP );
     613           0 :     SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(nType);
     614           0 :     pColl->SetFmtAttr(SvxFontHeightItem(nHeight, 100, nFontHeightWhich));
     615           0 : }
     616             : 
     617           0 : bool SwStdFontTabPage::FillItemSet( SfxItemSet* )
     618             : {
     619           0 :     bool bNotDocOnly = !pDocOnlyCB->IsChecked();
     620           0 :     SW_MOD()->GetModuleConfig()->SetDefaultFontInCurrDocOnly(!bNotDocOnly);
     621             : 
     622           0 :     const OUString sStandard    = pStandardBox->GetText();
     623           0 :     const OUString sTitle       = pTitleBox->GetText();
     624           0 :     const OUString sList        = pListBox->GetText();
     625           0 :     const OUString sLabel       = pLabelBox->GetText();
     626           0 :     const OUString sIdx         = pIdxBox->GetText();
     627             : 
     628           0 :     bool bStandardHeightChanged = pStandardHeightLB->IsValueChangedFromSaved();
     629           0 :     bool bTitleHeightChanged = pTitleHeightLB->IsValueChangedFromSaved();
     630           0 :     bool bListHeightChanged = pListHeightLB->IsValueChangedFromSaved() && (!bListHeightDefault || !bSetListHeightDefault );
     631           0 :     bool bLabelHeightChanged = pLabelHeightLB->IsValueChangedFromSaved() && (!bLabelHeightDefault || !bSetLabelHeightDefault );
     632           0 :     bool bIndexHeightChanged = pIndexHeightLB->IsValueChangedFromSaved() && (!bIndexHeightDefault || !bSetIndexHeightDefault );
     633           0 :     if(bNotDocOnly)
     634             :     {
     635           0 :         pFontConfig->SetFontStandard(sStandard, nFontGroup);
     636           0 :         pFontConfig->SetFontOutline(sTitle, nFontGroup);
     637           0 :         pFontConfig->SetFontList(sList, nFontGroup);
     638           0 :         pFontConfig->SetFontCaption(sLabel, nFontGroup);
     639           0 :         pFontConfig->SetFontIndex(sIdx, nFontGroup);
     640           0 :         if(bStandardHeightChanged)
     641             :         {
     642           0 :             float fSize = (float)pStandardHeightLB->GetValue() / 10;
     643           0 :             pFontConfig->SetFontHeight( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), FONT_STANDARD, nFontGroup );
     644             :         }
     645           0 :         if(bTitleHeightChanged)
     646             :         {
     647           0 :             float fSize = (float)pTitleHeightLB->GetValue() / 10;
     648           0 :             pFontConfig->SetFontHeight( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), FONT_OUTLINE, nFontGroup );
     649             :         }
     650           0 :         if(bListHeightChanged)
     651             :         {
     652           0 :             float fSize = (float)pListHeightLB->GetValue() / 10;
     653           0 :             pFontConfig->SetFontHeight( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), FONT_LIST, nFontGroup );
     654             :         }
     655           0 :         if(bLabelHeightChanged)
     656             :         {
     657           0 :             float fSize = (float)pLabelHeightLB->GetValue() / 10;
     658           0 :             pFontConfig->SetFontHeight( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), FONT_CAPTION, nFontGroup );
     659             :         }
     660           0 :         if(bIndexHeightChanged)
     661             :         {
     662           0 :             float fSize = (float)pIndexHeightLB->GetValue() / 10;
     663           0 :             pFontConfig->SetFontHeight( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), FONT_INDEX, nFontGroup );
     664             :         }
     665             :     }
     666           0 :     if(pWrtShell)
     667             :     {
     668           0 :         pWrtShell->StartAllAction();
     669           0 :         SfxPrinter* pPrinter = pWrtShell->getIDocumentDeviceAccess()->getPrinter( false );
     670           0 :         bool bMod = false;
     671             :         const sal_uInt16 nFontWhich = sal::static_int_cast< sal_uInt16, RES_CHRATR >(
     672           0 :             nFontGroup == FONT_GROUP_DEFAULT  ? RES_CHRATR_FONT :
     673           0 :             FONT_GROUP_CJK == nFontGroup ? RES_CHRATR_CJK_FONT : RES_CHRATR_CTL_FONT);
     674             :         const sal_uInt16 nFontHeightWhich = sal::static_int_cast< sal_uInt16, RES_CHRATR >(
     675           0 :             nFontGroup == FONT_GROUP_DEFAULT  ? RES_CHRATR_FONTSIZE :
     676           0 :             FONT_GROUP_CJK == nFontGroup ? RES_CHRATR_CJK_FONTSIZE : RES_CHRATR_CTL_FONTSIZE);
     677           0 :         if(sStandard != sShellStd)
     678             :         {
     679           0 :             vcl::Font aFont( sStandard, Size( 0, 10 ) );
     680           0 :             if( pPrinter )
     681           0 :                 aFont = pPrinter->GetFontMetric( aFont );
     682           0 :             pWrtShell->SetDefault(SvxFontItem(aFont.GetFamily(), aFont.GetName(),
     683           0 :                                   aEmptyOUStr, aFont.GetPitch(), aFont.GetCharSet(), nFontWhich));
     684           0 :             SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_STANDARD);
     685           0 :             pColl->ResetFmtAttr(nFontWhich);
     686           0 :             bMod = true;
     687             :         }
     688           0 :         if(bStandardHeightChanged)
     689             :         {
     690           0 :             float fSize = (float)pStandardHeightLB->GetValue() / 10;
     691           0 :             pWrtShell->SetDefault(SvxFontHeightItem( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), 100, nFontHeightWhich ) );
     692           0 :             SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_STANDARD);
     693           0 :             pColl->ResetFmtAttr(nFontHeightWhich);
     694           0 :             bMod = true;
     695             :         }
     696             : 
     697           0 :         if(sTitle != sShellTitle )
     698             :         {
     699           0 :             lcl_SetColl(pWrtShell, RES_POOLCOLL_HEADLINE_BASE, pPrinter, sTitle, nFontWhich);
     700           0 :             bMod = true;
     701             :         }
     702           0 :         if(bTitleHeightChanged)
     703             :         {
     704             :             lcl_SetColl(pWrtShell, RES_POOLCOLL_HEADLINE_BASE,
     705           0 :                 sal::static_int_cast< sal_uInt16, sal_Int64 >(pTitleHeightLB->GetValue()), nFontHeightWhich);
     706           0 :             bMod = true;
     707             :         }
     708           0 :         if(sList != sShellList && (!bListDefault || !bSetListDefault ))
     709             :         {
     710           0 :             lcl_SetColl(pWrtShell, RES_POOLCOLL_NUMBUL_BASE, pPrinter, sList, nFontWhich);
     711           0 :             bMod = true;
     712             :         }
     713           0 :         if(bListHeightChanged)
     714             :         {
     715             :             lcl_SetColl(pWrtShell, RES_POOLCOLL_NUMBUL_BASE,
     716           0 :                 sal::static_int_cast< sal_uInt16, sal_Int64 >(pListHeightLB->GetValue()), nFontHeightWhich);
     717           0 :             bMod = true;
     718             :         }
     719           0 :         if(sLabel != sShellLabel && (!bLabelDefault || !bSetLabelDefault))
     720             :         {
     721           0 :             lcl_SetColl(pWrtShell, RES_POOLCOLL_LABEL, pPrinter, sLabel, nFontWhich);
     722           0 :             bMod = true;
     723             :         }
     724           0 :         if(bLabelHeightChanged)
     725             :         {
     726             :             lcl_SetColl(pWrtShell, RES_POOLCOLL_LABEL,
     727           0 :                 sal::static_int_cast< sal_uInt16, sal_Int64 >(pLabelHeightLB->GetValue()), nFontHeightWhich);
     728           0 :             bMod = true;
     729             :         }
     730           0 :         if(sIdx != sShellIndex && (!bIdxDefault || !bSetIdxDefault))
     731             :         {
     732           0 :             lcl_SetColl(pWrtShell, RES_POOLCOLL_REGISTER_BASE, pPrinter, sIdx, nFontWhich);
     733           0 :             bMod = true;
     734             :         }
     735           0 :         if(bIndexHeightChanged)
     736             :         {
     737             :             lcl_SetColl(pWrtShell, RES_POOLCOLL_REGISTER_BASE,
     738           0 :                 sal::static_int_cast< sal_uInt16, sal_Int64 >(pIndexHeightLB->GetValue()), nFontHeightWhich);
     739           0 :             bMod = true;
     740             :         }
     741           0 :         if ( bMod )
     742           0 :             pWrtShell->SetModified();
     743           0 :         pWrtShell->EndAllAction();
     744             :     }
     745           0 :     return false;
     746             : }
     747             : 
     748           0 : void SwStdFontTabPage::Reset( const SfxItemSet* rSet)
     749             : {
     750             :     const SfxPoolItem* pLang;
     751           0 :     const sal_uInt16 nLangSlot = nFontGroup == FONT_GROUP_DEFAULT  ? SID_ATTR_LANGUAGE :
     752           0 :         FONT_GROUP_CJK == nFontGroup ? SID_ATTR_CHAR_CJK_LANGUAGE : SID_ATTR_CHAR_CTL_LANGUAGE;
     753             : 
     754           0 :     if( SfxItemState::SET == rSet->GetItemState(nLangSlot, false, &pLang))
     755           0 :         eLanguage = ((const SvxLanguageItem*)pLang)->GetValue();
     756             : 
     757           0 :     OUString sToReplace = sScriptWestern;
     758           0 :     if(FONT_GROUP_CJK == nFontGroup )
     759           0 :         sToReplace = sScriptAsian;
     760           0 :     else if(FONT_GROUP_CTL == nFontGroup )
     761           0 :         sToReplace = sScriptComplex;
     762           0 :     pLabelFT->SetText(pLabelFT->GetText().replaceFirst("%1", sToReplace));
     763             : 
     764             :     const SfxPoolItem* pItem;
     765             : 
     766           0 :     if (bDeletePrinter)
     767             :     {
     768           0 :         delete pPrt;
     769             :     }
     770             : 
     771           0 :     if(SfxItemState::SET == rSet->GetItemState(FN_PARAM_PRINTER, false, &pItem))
     772             :     {
     773           0 :         pPrt = (SfxPrinter*)((const SwPtrItem*)pItem)->GetValue();
     774             :     }
     775             :     else
     776             :     {
     777             :         SfxItemSet* pPrinterSet = new SfxItemSet( *rSet->GetPool(),
     778             :                     SID_PRINTER_NOTFOUND_WARN, SID_PRINTER_NOTFOUND_WARN,
     779             :                     SID_PRINTER_CHANGESTODOC, SID_PRINTER_CHANGESTODOC,
     780           0 :                     0 );
     781           0 :         pPrt = new SfxPrinter(pPrinterSet);
     782             :     }
     783           0 :     delete pFontList;
     784           0 :     pFontList = new FontList( pPrt );
     785             :     // #i94536# prevent duplication of font entries when 'reset' button is pressed
     786           0 :     if( !pStandardBox->GetEntryCount() )
     787             :     {
     788             :         // get the set of disctinct available family names
     789           0 :         std::set< OUString > aFontNames;
     790           0 :         int nFontNames = pPrt->GetDevFontCount();
     791           0 :         for( int i = 0; i < nFontNames; i++ )
     792             :         {
     793           0 :             vcl::FontInfo aInf( pPrt->GetDevFont( i ) );
     794           0 :             aFontNames.insert( aInf.GetName() );
     795           0 :         }
     796             : 
     797             :         // insert to listboxes
     798           0 :         for( std::set< OUString >::const_iterator it = aFontNames.begin();
     799           0 :              it != aFontNames.end(); ++it )
     800             :         {
     801           0 :             pStandardBox->InsertEntry( *it );
     802           0 :             pTitleBox->InsertEntry( *it );
     803           0 :             pListBox->InsertEntry( *it );
     804           0 :             pLabelBox->InsertEntry( *it );
     805           0 :             pIdxBox->InsertEntry( *it );
     806           0 :         }
     807             :     }
     808           0 :     if(SfxItemState::SET == rSet->GetItemState(FN_PARAM_STDFONTS, false, &pItem))
     809             :     {
     810           0 :          pFontConfig = (SwStdFontConfig*)((const SwPtrItem*)pItem)->GetValue();
     811             :     }
     812             : 
     813           0 :     if(SfxItemState::SET == rSet->GetItemState(FN_PARAM_WRTSHELL, false, &pItem))
     814             :     {
     815           0 :         pWrtShell = (SwWrtShell*)((const SwPtrItem*)pItem)->GetValue();
     816             :     }
     817           0 :     OUString sStdBackup;
     818           0 :     OUString sOutBackup;
     819           0 :     OUString sListBackup;
     820           0 :     OUString sCapBackup;
     821           0 :     OUString sIdxBackup;
     822           0 :     sal_Int32 nStandardHeight = -1;
     823           0 :     sal_Int32 nTitleHeight = -1;
     824           0 :     sal_Int32 nListHeight = -1;
     825           0 :     sal_Int32 nLabelHeight = -1;
     826           0 :     sal_Int32 nIndexHeight = -1;
     827             : 
     828           0 :     if(!pWrtShell)
     829             :     {
     830           0 :         sStdBackup = pFontConfig->GetFontStandard(nFontGroup);
     831           0 :         sOutBackup = pFontConfig->GetFontOutline(nFontGroup);
     832           0 :         sListBackup= pFontConfig->GetFontList(nFontGroup);
     833           0 :         sCapBackup = pFontConfig->GetFontCaption(nFontGroup);
     834           0 :         sIdxBackup = pFontConfig->GetFontIndex(nFontGroup);
     835           0 :         nStandardHeight = pFontConfig->GetFontHeight( FONT_STANDARD, nFontGroup, eLanguage );
     836           0 :         nTitleHeight =    pFontConfig->GetFontHeight( FONT_OUTLINE , nFontGroup, eLanguage );
     837           0 :         nListHeight =     pFontConfig->GetFontHeight( FONT_LIST    , nFontGroup, eLanguage );
     838           0 :         nLabelHeight =    pFontConfig->GetFontHeight( FONT_CAPTION , nFontGroup, eLanguage );
     839           0 :         nIndexHeight =    pFontConfig->GetFontHeight( FONT_INDEX   , nFontGroup, eLanguage );
     840           0 :         if( nStandardHeight <= 0)
     841           0 :             nStandardHeight = SwStdFontConfig::GetDefaultHeightFor( FONT_STANDARD + nFontGroup * FONT_PER_GROUP, eLanguage);
     842           0 :         if( nTitleHeight <= 0)
     843           0 :             nTitleHeight = SwStdFontConfig::GetDefaultHeightFor( FONT_OUTLINE + nFontGroup * FONT_PER_GROUP, eLanguage);
     844           0 :         if( nListHeight <= 0)
     845           0 :             nListHeight = SwStdFontConfig::GetDefaultHeightFor( FONT_LIST + nFontGroup * FONT_PER_GROUP, eLanguage);
     846           0 :         if( nLabelHeight <= 0)
     847           0 :             nLabelHeight = SwStdFontConfig::GetDefaultHeightFor( FONT_CAPTION + nFontGroup * FONT_PER_GROUP, eLanguage);
     848           0 :         if( nIndexHeight <= 0)
     849           0 :             nIndexHeight = SwStdFontConfig::GetDefaultHeightFor( FONT_INDEX + nFontGroup * FONT_PER_GROUP, eLanguage);
     850             : 
     851           0 :        pDocOnlyCB->Enable(false);
     852             :     }
     853             :     else
     854             :     {
     855           0 :         SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_STANDARD);
     856           0 :         const SvxFontItem& rFont = !nFontGroup ? pColl->GetFont() :
     857           0 :                 FONT_GROUP_CJK == nFontGroup ? pColl->GetCJKFont() : pColl->GetCTLFont();
     858           0 :         sShellStd = sStdBackup =  rFont.GetFamilyName();
     859             : 
     860             :         const sal_uInt16 nFontHeightWhich = sal::static_int_cast< sal_uInt16, RES_CHRATR >(
     861           0 :             nFontGroup == FONT_GROUP_DEFAULT  ? RES_CHRATR_FONTSIZE :
     862           0 :             FONT_GROUP_CJK == nFontGroup ? RES_CHRATR_CJK_FONTSIZE : RES_CHRATR_CTL_FONTSIZE );
     863           0 :         const SvxFontHeightItem& rFontHeightStandard = (const SvxFontHeightItem& )pColl->GetFmtAttr(nFontHeightWhich);
     864           0 :         nStandardHeight = (sal_Int32)rFontHeightStandard.GetHeight();
     865             : 
     866           0 :         pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_HEADLINE_BASE);
     867           0 :         const SvxFontItem& rFontHL = !nFontGroup ? pColl->GetFont() :
     868           0 :                 FONT_GROUP_CJK == nFontGroup ? pColl->GetCJKFont() : pColl->GetCTLFont();
     869           0 :         sShellTitle = sOutBackup = rFontHL.GetFamilyName();
     870             : 
     871           0 :         const SvxFontHeightItem& rFontHeightTitle = (const SvxFontHeightItem&)pColl->GetFmtAttr( nFontHeightWhich, true );
     872           0 :         nTitleHeight = (sal_Int32)rFontHeightTitle.GetHeight();
     873             : 
     874             :         const sal_uInt16 nFontWhich = sal::static_int_cast< sal_uInt16, RES_CHRATR >(
     875           0 :             nFontGroup == FONT_GROUP_DEFAULT  ? RES_CHRATR_FONT :
     876           0 :             FONT_GROUP_CJK == nFontGroup ? RES_CHRATR_CJK_FONT : RES_CHRATR_CTL_FONT);
     877           0 :         pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_NUMBUL_BASE);
     878           0 :         const SvxFontItem& rFontLS = !nFontGroup ? pColl->GetFont() :
     879           0 :                 FONT_GROUP_CJK == nFontGroup ? pColl->GetCJKFont() : pColl->GetCTLFont();
     880           0 :         bListDefault = SfxItemState::DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, false);
     881           0 :         sShellList = sListBackup = rFontLS.GetFamilyName();
     882             : 
     883           0 :         const SvxFontHeightItem& rFontHeightList = (const SvxFontHeightItem&)pColl->GetFmtAttr(nFontHeightWhich, true);
     884           0 :         nListHeight = (sal_Int32)rFontHeightList.GetHeight();
     885           0 :         bListHeightDefault = SfxItemState::DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, false);
     886             : 
     887           0 :         pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_LABEL);
     888           0 :         bLabelDefault = SfxItemState::DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, false);
     889           0 :         const SvxFontItem& rFontCP = !nFontGroup ? pColl->GetFont() :
     890           0 :                 FONT_GROUP_CJK == nFontGroup ? pColl->GetCJKFont() : pColl->GetCTLFont();
     891           0 :         sShellLabel = sCapBackup = rFontCP.GetFamilyName();
     892           0 :         const SvxFontHeightItem& rFontHeightLabel = (const SvxFontHeightItem&)pColl->GetFmtAttr(nFontHeightWhich, true);
     893           0 :         nLabelHeight = (sal_Int32)rFontHeightLabel.GetHeight();
     894           0 :         bLabelHeightDefault = SfxItemState::DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, false);
     895             : 
     896           0 :         pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_REGISTER_BASE);
     897           0 :         bIdxDefault = SfxItemState::DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, false);
     898           0 :         const SvxFontItem& rFontIDX = !nFontGroup ? pColl->GetFont() :
     899           0 :                 FONT_GROUP_CJK == nFontGroup ? pColl->GetCJKFont() : pColl->GetCTLFont();
     900           0 :         sShellIndex = sIdxBackup = rFontIDX.GetFamilyName();
     901           0 :         const SvxFontHeightItem& rFontHeightIndex = (const SvxFontHeightItem&)pColl->GetFmtAttr(nFontHeightWhich, true);
     902           0 :         nIndexHeight = (sal_Int32)rFontHeightIndex.GetHeight();
     903           0 :         bIndexHeightDefault = SfxItemState::DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, false);
     904             :     }
     905           0 :     pStandardBox->SetText(sStdBackup );
     906           0 :     pTitleBox->SetText(sOutBackup );
     907           0 :     pListBox->SetText(sListBackup);
     908           0 :     pLabelBox->SetText(sCapBackup );
     909           0 :     pIdxBox->SetText(sIdxBackup );
     910             : 
     911           0 :     vcl::FontInfo aFontInfo( pFontList->Get(sStdBackup, sStdBackup) );
     912           0 :     pStandardHeightLB->Fill( &aFontInfo, pFontList );
     913           0 :     aFontInfo = pFontList->Get(sOutBackup, sOutBackup );
     914           0 :     pTitleHeightLB->Fill( &aFontInfo, pFontList );
     915           0 :     aFontInfo = pFontList->Get(sListBackup,sListBackup);
     916           0 :     pListHeightLB->Fill( &aFontInfo, pFontList );
     917           0 :     aFontInfo = pFontList->Get(sCapBackup, sCapBackup );
     918           0 :     pLabelHeightLB->Fill( &aFontInfo, pFontList );
     919           0 :     aFontInfo = pFontList->Get(sIdxBackup, sIdxBackup );
     920           0 :     pIndexHeightLB->Fill( &aFontInfo, pFontList );
     921             : 
     922           0 :     pStandardHeightLB->SetValue( CalcToPoint( nStandardHeight, SFX_MAPUNIT_TWIP, 10 ) );
     923           0 :     pTitleHeightLB->   SetValue( CalcToPoint( nTitleHeight   , SFX_MAPUNIT_TWIP, 10 ) );
     924           0 :     pListHeightLB->    SetValue( CalcToPoint( nListHeight    , SFX_MAPUNIT_TWIP, 10 ) );
     925           0 :     pLabelHeightLB->   SetValue( CalcToPoint( nLabelHeight   , SFX_MAPUNIT_TWIP, 10 ));
     926           0 :     pIndexHeightLB->   SetValue( CalcToPoint( nIndexHeight   , SFX_MAPUNIT_TWIP, 10 ));
     927             : 
     928           0 :     pStandardBox->SaveValue();
     929           0 :     pTitleBox->SaveValue();
     930           0 :     pListBox->SaveValue();
     931           0 :     pLabelBox->SaveValue();
     932           0 :     pIdxBox->SaveValue();
     933             : 
     934           0 :     pStandardHeightLB->SaveValue();
     935           0 :     pTitleHeightLB->SaveValue();
     936           0 :     pListHeightLB->SaveValue();
     937           0 :     pLabelHeightLB->SaveValue();
     938           0 :     pIndexHeightLB->SaveValue();
     939           0 : }
     940             : 
     941           0 : IMPL_LINK_NOARG(SwStdFontTabPage, StandardHdl)
     942             : {
     943           0 :     sal_uInt8 nFontOffset = nFontGroup * FONT_PER_GROUP;
     944           0 :     pStandardBox->SetText(SwStdFontConfig::GetDefaultFor(FONT_STANDARD + nFontOffset, eLanguage));
     945           0 :     pTitleBox   ->SetText(SwStdFontConfig::GetDefaultFor(FONT_OUTLINE  + nFontOffset, eLanguage));
     946           0 :     pListBox    ->SetText(SwStdFontConfig::GetDefaultFor(FONT_LIST     + nFontOffset, eLanguage));
     947           0 :     pLabelBox   ->SetText(SwStdFontConfig::GetDefaultFor(FONT_CAPTION  + nFontOffset, eLanguage));
     948           0 :     pIdxBox     ->SetText(SwStdFontConfig::GetDefaultFor(FONT_INDEX    + nFontOffset, eLanguage));
     949             : 
     950           0 :     pStandardBox->SaveValue();
     951           0 :     pTitleBox->SaveValue();
     952           0 :     pListBox->SaveValue();
     953           0 :     pLabelBox->SaveValue();
     954           0 :     pIdxBox->SaveValue();
     955             : 
     956             :     pStandardHeightLB->SetValue( CalcToPoint(
     957           0 :         SwStdFontConfig::GetDefaultHeightFor(FONT_STANDARD + nFontOffset, eLanguage),
     958           0 :             SFX_MAPUNIT_TWIP, 10 ) );
     959             :     pTitleHeightLB   ->SetValue(CalcToPoint(
     960             :         SwStdFontConfig::GetDefaultHeightFor(FONT_OUTLINE  +
     961           0 :             nFontOffset, eLanguage), SFX_MAPUNIT_TWIP, 10 ));
     962             :     pListHeightLB    ->SetValue(CalcToPoint(
     963           0 :         SwStdFontConfig::GetDefaultHeightFor(FONT_LIST + nFontOffset, eLanguage),
     964           0 :             SFX_MAPUNIT_TWIP, 10 ));
     965             :     pLabelHeightLB   ->SetValue(CalcToPoint(
     966           0 :         SwStdFontConfig::GetDefaultHeightFor(FONT_CAPTION  + nFontOffset, eLanguage),
     967           0 :             SFX_MAPUNIT_TWIP, 10 ));
     968             :     pIndexHeightLB   ->SetValue(CalcToPoint(
     969           0 :         SwStdFontConfig::GetDefaultHeightFor(FONT_INDEX    + nFontOffset, eLanguage),
     970           0 :             SFX_MAPUNIT_TWIP, 10 ));
     971           0 :     return 0;
     972             : }
     973             : 
     974           0 : IMPL_LINK( SwStdFontTabPage, ModifyHdl, ComboBox*, pBox )
     975             : {
     976           0 :     if(pBox == pStandardBox)
     977             :     {
     978           0 :         const OUString sEntry = pBox->GetText();
     979           0 :         if(bSetListDefault && bListDefault)
     980           0 :             pListBox->SetText(sEntry);
     981           0 :         if(bSetLabelDefault && bLabelDefault)
     982           0 :             pLabelBox->SetText(sEntry);
     983           0 :         if(bSetIdxDefault && bIdxDefault)
     984           0 :             pIdxBox->SetText(sEntry);
     985             :     }
     986           0 :     else if(pBox == pListBox)
     987             :     {
     988           0 :         bSetListDefault = false;
     989             :     }
     990           0 :     else if(pBox == pLabelBox)
     991             :     {
     992           0 :         bSetLabelDefault = false;
     993             :     }
     994           0 :     else if(pBox == pIdxBox)
     995             :     {
     996           0 :         bSetIdxDefault = false;
     997             :     }
     998           0 :     return 0;
     999             : }
    1000             : 
    1001           0 : IMPL_LINK( SwStdFontTabPage, ModifyHeightHdl, FontSizeBox*, pBox )
    1002             : {
    1003           0 :     if(pBox == pStandardHeightLB)
    1004             :     {
    1005           0 :         sal_Int64 nValue = pBox->GetValue(FUNIT_TWIP);
    1006           0 :         if(bSetListHeightDefault && bListHeightDefault)
    1007           0 :             pListHeightLB->SetValue(nValue, FUNIT_TWIP);
    1008           0 :         if(bSetLabelHeightDefault && bLabelHeightDefault)
    1009           0 :             pLabelHeightLB->SetValue(nValue, FUNIT_TWIP);
    1010           0 :         if(bSetIndexHeightDefault && bIndexHeightDefault)
    1011           0 :             pIndexHeightLB->SetValue(nValue, FUNIT_TWIP);
    1012             :     }
    1013           0 :     else if(pBox == pListHeightLB)
    1014             :     {
    1015           0 :         bSetListHeightDefault = false;
    1016             :     }
    1017           0 :     else if(pBox == pLabelHeightLB)
    1018             :     {
    1019           0 :         bSetLabelHeightDefault = false;
    1020             :     }
    1021           0 :     else if(pBox == pIndexHeightLB)
    1022             :     {
    1023           0 :         bSetIndexHeightDefault = false;
    1024             :     }
    1025           0 :     return 0;
    1026             : }
    1027             : 
    1028           0 : IMPL_LINK( SwStdFontTabPage, LoseFocusHdl, ComboBox*, pBox )
    1029             : {
    1030           0 :     FontSizeBox* pHeightLB = 0;
    1031           0 :     const OUString sEntry = pBox->GetText();
    1032           0 :     if(pBox == pStandardBox)
    1033             :     {
    1034           0 :         pHeightLB = pStandardHeightLB;
    1035             :     }
    1036           0 :     else if(pBox == pTitleBox)
    1037             :     {
    1038           0 :         pHeightLB = pTitleHeightLB;
    1039             :     }
    1040           0 :     else if(pBox == pListBox)
    1041             :     {
    1042           0 :         pHeightLB = pListHeightLB;
    1043             :     }
    1044           0 :     else if(pBox == pLabelBox)
    1045             :     {
    1046           0 :         pHeightLB = pLabelHeightLB;
    1047             :     }
    1048             :     else /*if(pBox == pIdxBox)*/
    1049             :     {
    1050           0 :         pHeightLB = pIndexHeightLB;
    1051             :     }
    1052           0 :     vcl::FontInfo aFontInfo( pFontList->Get(sEntry, sEntry) );
    1053           0 :     pHeightLB->Fill( &aFontInfo, pFontList );
    1054           0 :     return 0;
    1055             : }
    1056             : 
    1057           0 : void SwStdFontTabPage::PageCreated( const SfxAllItemSet& aSet)
    1058             : {
    1059           0 :     SFX_ITEMSET_ARG (&aSet,pFlagItem,SfxUInt16Item, SID_FONTMODE_TYPE, false);
    1060           0 :     if (pFlagItem)
    1061           0 :         SetFontMode(sal::static_int_cast< sal_uInt8, sal_uInt16>( pFlagItem->GetValue()));
    1062           0 : }
    1063             : 
    1064           0 : SwTableOptionsTabPage::SwTableOptionsTabPage( vcl::Window* pParent, const SfxItemSet& rSet ) :
    1065             :     SfxTabPage(pParent, "OptTablePage", "modules/swriter/ui/opttablepage.ui", &rSet),
    1066             :     pWrtShell(0),
    1067           0 :     bHTMLMode(false)
    1068             : {
    1069           0 :     get(pHeaderCB,"header");
    1070           0 :     get(pRepeatHeaderCB,"repeatheader");
    1071           0 :     get(pDontSplitCB,"dontsplit");
    1072           0 :     get(pBorderCB,"border");
    1073           0 :     get(pNumFormattingCB,"numformatting");
    1074           0 :     get(pNumFmtFormattingCB,"numfmtformatting");
    1075           0 :     get(pNumAlignmentCB,"numalignment");
    1076           0 :     get(pRowMoveMF,"rowmove");
    1077           0 :     get(pColMoveMF,"colmove");
    1078           0 :     get(pRowInsertMF,"rowinsert");
    1079           0 :     get(pColInsertMF,"colinsert");
    1080           0 :     get(pFixRB,"fix");
    1081           0 :     get(pFixPropRB,"fixprop");
    1082           0 :     get(pVarRB,"var");
    1083             : 
    1084           0 :     Link aLnk(LINK(this, SwTableOptionsTabPage, CheckBoxHdl));
    1085           0 :     pNumFormattingCB->SetClickHdl(aLnk);
    1086           0 :     pNumFmtFormattingCB->SetClickHdl(aLnk);
    1087           0 :     pHeaderCB->SetClickHdl(aLnk);
    1088           0 : }
    1089             : 
    1090           0 : SwTableOptionsTabPage::~SwTableOptionsTabPage()
    1091             : {
    1092           0 : }
    1093             : 
    1094           0 : SfxTabPage* SwTableOptionsTabPage::Create( vcl::Window* pParent,
    1095             :                                 const SfxItemSet* rAttrSet )
    1096             : {
    1097           0 :     return new SwTableOptionsTabPage(pParent, *rAttrSet );
    1098             : }
    1099             : 
    1100           0 : bool SwTableOptionsTabPage::FillItemSet( SfxItemSet* )
    1101             : {
    1102           0 :     bool bRet = false;
    1103           0 :     SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig();
    1104             : 
    1105           0 :     if(pRowMoveMF->IsModified())
    1106           0 :         pModOpt->SetTblHMove( (sal_uInt16)pRowMoveMF->Denormalize( pRowMoveMF->GetValue(FUNIT_TWIP)));
    1107             : 
    1108           0 :     if(pColMoveMF->IsModified())
    1109           0 :         pModOpt->SetTblVMove( (sal_uInt16)pColMoveMF->Denormalize( pColMoveMF->GetValue(FUNIT_TWIP)));
    1110             : 
    1111           0 :     if(pRowInsertMF->IsModified())
    1112           0 :         pModOpt->SetTblHInsert((sal_uInt16)pRowInsertMF->Denormalize( pRowInsertMF->GetValue(FUNIT_TWIP)));
    1113             : 
    1114           0 :     if(pColInsertMF->IsModified())
    1115           0 :         pModOpt->SetTblVInsert((sal_uInt16)pColInsertMF->Denormalize( pColInsertMF->GetValue(FUNIT_TWIP)));
    1116             : 
    1117             :     TblChgMode eMode;
    1118           0 :     if(pFixRB->IsChecked())
    1119           0 :         eMode = TBLFIX_CHGABS;
    1120           0 :     else if(pFixPropRB->IsChecked())
    1121           0 :         eMode = TBLFIX_CHGPROP;
    1122             :     else
    1123           0 :         eMode = TBLVAR_CHGABS;
    1124           0 :     if(eMode != pModOpt->GetTblMode())
    1125             :     {
    1126           0 :         pModOpt->SetTblMode(eMode);
    1127             :         // the table-keyboard-mode has changed, now the current
    1128             :         // table should know about that too.
    1129           0 :         if(pWrtShell && nsSelectionType::SEL_TBL & pWrtShell->GetSelectionType())
    1130             :         {
    1131           0 :             pWrtShell->SetTblChgMode(eMode);
    1132             :             static sal_uInt16 aInva[] =
    1133             :                                 {   FN_TABLE_MODE_FIX,
    1134             :                                     FN_TABLE_MODE_FIX_PROP,
    1135             :                                     FN_TABLE_MODE_VARIABLE,
    1136             :                                     0
    1137             :                                 };
    1138           0 :             pWrtShell->GetView().GetViewFrame()->GetBindings().Invalidate( aInva );
    1139             :         }
    1140             : 
    1141           0 :         bRet = true;
    1142             :     }
    1143             : 
    1144           0 :     SwInsertTableOptions aInsOpts( 0, 0 );
    1145             : 
    1146           0 :     if (pHeaderCB->IsChecked())
    1147           0 :         aInsOpts.mnInsMode |= tabopts::HEADLINE;
    1148             : 
    1149           0 :     if (pRepeatHeaderCB->IsEnabled() )
    1150           0 :         aInsOpts.mnRowsToRepeat = pRepeatHeaderCB->IsChecked()? 1 : 0;
    1151             : 
    1152           0 :     if (!pDontSplitCB->IsChecked())
    1153           0 :         aInsOpts.mnInsMode |= tabopts::SPLIT_LAYOUT;
    1154             : 
    1155           0 :     if (pBorderCB->IsChecked())
    1156           0 :         aInsOpts.mnInsMode |= tabopts::DEFAULT_BORDER;
    1157             : 
    1158           0 :     if (pHeaderCB->IsValueChangedFromSaved() ||
    1159           0 :         pRepeatHeaderCB->IsValueChangedFromSaved() ||
    1160           0 :         pDontSplitCB->IsValueChangedFromSaved() ||
    1161           0 :         pBorderCB->IsValueChangedFromSaved())
    1162             :     {
    1163           0 :         pModOpt->SetInsTblFlags(bHTMLMode, aInsOpts);
    1164             :     }
    1165             : 
    1166           0 :     if (pNumFormattingCB->IsValueChangedFromSaved())
    1167             :     {
    1168           0 :         pModOpt->SetInsTblFormatNum(bHTMLMode, pNumFormattingCB->IsChecked());
    1169           0 :         bRet = true;
    1170             :     }
    1171             : 
    1172           0 :     if (pNumFmtFormattingCB->IsValueChangedFromSaved())
    1173             :     {
    1174           0 :         pModOpt->SetInsTblChangeNumFormat(bHTMLMode, pNumFmtFormattingCB->IsChecked());
    1175           0 :         bRet = true;
    1176             :     }
    1177             : 
    1178           0 :     if (pNumAlignmentCB->IsValueChangedFromSaved())
    1179             :     {
    1180           0 :         pModOpt->SetInsTblAlignNum(bHTMLMode, pNumAlignmentCB->IsChecked());
    1181           0 :         bRet = true;
    1182             :     }
    1183             : 
    1184           0 :     return bRet;
    1185             : }
    1186             : 
    1187           0 : void SwTableOptionsTabPage::Reset( const SfxItemSet* rSet)
    1188             : {
    1189           0 :     const SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig();
    1190           0 :     if ( rSet->GetItemState( SID_ATTR_METRIC ) >= SfxItemState::DEFAULT )
    1191             :     {
    1192           0 :         const SfxUInt16Item& rItem = (SfxUInt16Item&)rSet->Get( SID_ATTR_METRIC );
    1193           0 :         FieldUnit eFieldUnit = (FieldUnit)rItem.GetValue();
    1194           0 :         ::SetFieldUnit( *pRowMoveMF, eFieldUnit );
    1195           0 :         ::SetFieldUnit( *pColMoveMF, eFieldUnit );
    1196           0 :         ::SetFieldUnit( *pRowInsertMF, eFieldUnit );
    1197           0 :         ::SetFieldUnit( *pColInsertMF, eFieldUnit );
    1198             :     }
    1199             : 
    1200           0 :     pRowMoveMF->SetValue(pRowMoveMF->Normalize(pModOpt->GetTblHMove()), FUNIT_TWIP);
    1201           0 :     pColMoveMF->SetValue(pColMoveMF->Normalize(pModOpt->GetTblVMove()), FUNIT_TWIP);
    1202           0 :     pRowInsertMF->SetValue(pRowInsertMF->Normalize(pModOpt->GetTblHInsert()), FUNIT_TWIP);
    1203           0 :     pColInsertMF->SetValue(pColInsertMF->Normalize(pModOpt->GetTblVInsert()), FUNIT_TWIP);
    1204             : 
    1205           0 :     switch(pModOpt->GetTblMode())
    1206             :     {
    1207           0 :         case TBLFIX_CHGABS:     pFixRB->Check();     break;
    1208           0 :         case TBLFIX_CHGPROP:    pFixPropRB->Check(); break;
    1209           0 :         case TBLVAR_CHGABS:     pVarRB->Check(); break;
    1210             :     }
    1211             :     const SfxPoolItem* pItem;
    1212           0 :     if(SfxItemState::SET == rSet->GetItemState(SID_HTML_MODE, false, &pItem))
    1213             :     {
    1214           0 :         bHTMLMode = 0 != (((const SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON);
    1215             :     }
    1216             : 
    1217             :     // hide certain controls for html
    1218           0 :     if(bHTMLMode)
    1219             :     {
    1220           0 :         pRepeatHeaderCB->Hide();
    1221           0 :         pDontSplitCB->Hide();
    1222             :     }
    1223             : 
    1224           0 :     SwInsertTableOptions aInsOpts = pModOpt->GetInsTblFlags(bHTMLMode);
    1225           0 :     const sal_uInt16 nInsTblFlags = aInsOpts.mnInsMode;
    1226             : 
    1227           0 :     pHeaderCB->Check(0 != (nInsTblFlags & tabopts::HEADLINE));
    1228           0 :     pRepeatHeaderCB->Check((!bHTMLMode) && (aInsOpts.mnRowsToRepeat > 0));
    1229           0 :     pDontSplitCB->Check(!(nInsTblFlags & tabopts::SPLIT_LAYOUT));
    1230           0 :     pBorderCB->Check(0 != (nInsTblFlags & tabopts::DEFAULT_BORDER));
    1231             : 
    1232           0 :     pNumFormattingCB->Check(pModOpt->IsInsTblFormatNum(bHTMLMode));
    1233           0 :     pNumFmtFormattingCB->Check(pModOpt->IsInsTblChangeNumFormat(bHTMLMode));
    1234           0 :     pNumAlignmentCB->Check(pModOpt->IsInsTblAlignNum(bHTMLMode));
    1235             : 
    1236           0 :     pHeaderCB->SaveValue();
    1237           0 :     pRepeatHeaderCB->SaveValue();
    1238           0 :     pDontSplitCB->SaveValue();
    1239           0 :     pBorderCB->SaveValue();
    1240           0 :     pNumFormattingCB->SaveValue();
    1241           0 :     pNumFmtFormattingCB->SaveValue();
    1242           0 :     pNumAlignmentCB->SaveValue();
    1243             : 
    1244           0 :     CheckBoxHdl(0);
    1245           0 : }
    1246             : 
    1247           0 : IMPL_LINK_NOARG(SwTableOptionsTabPage, CheckBoxHdl)
    1248             : {
    1249           0 :     pNumFmtFormattingCB->Enable(pNumFormattingCB->IsChecked());
    1250           0 :     pNumAlignmentCB->Enable(pNumFormattingCB->IsChecked());
    1251           0 :     pRepeatHeaderCB->Enable(pHeaderCB->IsChecked());
    1252           0 :     return 0;
    1253             : }
    1254             : 
    1255           0 : void SwTableOptionsTabPage::PageCreated( const SfxAllItemSet& aSet)
    1256             : {
    1257           0 :     SFX_ITEMSET_ARG (&aSet,pWrtSh,SwWrtShellItem,SID_WRT_SHELL,false);
    1258           0 :     if (pWrtSh)
    1259           0 :         SetWrtShell(pWrtSh->GetValue());
    1260           0 : }
    1261             : 
    1262           0 : SwShdwCrsrOptionsTabPage::SwShdwCrsrOptionsTabPage( vcl::Window* pParent,
    1263             :                                                     const SfxItemSet& rSet )
    1264             :    : SfxTabPage(pParent, "OptFormatAidsPage",
    1265             :                 "modules/swriter/ui/optformataidspage.ui", &rSet),
    1266           0 :     m_pWrtShell( NULL )
    1267             : {
    1268           0 :     get(m_pParaCB, "paragraph");
    1269           0 :     get(m_pSHyphCB, "hyphens");
    1270           0 :     get(m_pSpacesCB, "spaces");
    1271           0 :     get(m_pHSpacesCB, "nonbreak");
    1272           0 :     get(m_pTabCB, "tabs");
    1273           0 :     get(m_pBreakCB, "break");
    1274           0 :     get(m_pCharHiddenCB, "hiddentext");
    1275           0 :     get(m_pFldHiddenCB, "hiddentextfield");
    1276           0 :     get(m_pFldHiddenParaCB, "hiddenparafield");
    1277             : 
    1278           0 :     get(m_pDirectCursorFrame, "directcrsrframe");
    1279           0 :     get(m_pOnOffCB, "cursoronoff");
    1280             : 
    1281           0 :     get(m_pFillMarginRB, "fillmargin");
    1282           0 :     get(m_pFillIndentRB, "fillindent");
    1283           0 :     get(m_pFillTabRB, "filltab");
    1284           0 :     get(m_pFillSpaceRB, "fillspace");
    1285             : 
    1286           0 :     get(m_pCursorProtFrame, "crsrprotframe");
    1287           0 :     get(m_pCrsrInProtCB, "cursorinprot");
    1288             : 
    1289           0 :     get(m_pMathBaselineAlignmentCB, "mathbaseline");
    1290             : 
    1291           0 :     const SfxPoolItem* pItem = 0;
    1292             : 
    1293           0 :     SwShadowCursorItem aOpt;
    1294           0 :     if( SfxItemState::SET == rSet.GetItemState( FN_PARAM_SHADOWCURSOR, false, &pItem ))
    1295           0 :         aOpt = *(SwShadowCursorItem*)pItem;
    1296           0 :     m_pOnOffCB->Check( aOpt.IsOn() );
    1297             : 
    1298           0 :     sal_uInt8 eMode = aOpt.GetMode();
    1299           0 :     m_pFillIndentRB->Check( FILL_INDENT == eMode );
    1300           0 :     m_pFillMarginRB->Check( FILL_MARGIN == eMode );
    1301           0 :     m_pFillTabRB->Check( FILL_TAB == eMode );
    1302           0 :     m_pFillSpaceRB->Check( FILL_SPACE == eMode );
    1303             : 
    1304           0 :     if(SfxItemState::SET == rSet.GetItemState(SID_HTML_MODE, false, &pItem )
    1305           0 :         && ((SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON)
    1306             :     {
    1307           0 :         m_pTabCB->Hide();
    1308           0 :         m_pCharHiddenCB->Hide();
    1309           0 :         m_pFldHiddenCB->Hide();
    1310           0 :         m_pFldHiddenParaCB->Hide();
    1311             : 
    1312           0 :         m_pDirectCursorFrame->Hide();
    1313           0 :         m_pOnOffCB->Hide();
    1314           0 :         m_pFillMarginRB->Hide();
    1315           0 :         m_pFillIndentRB->Hide();
    1316           0 :         m_pFillTabRB->Hide();
    1317           0 :         m_pFillSpaceRB->Hide();
    1318             : 
    1319           0 :         m_pCursorProtFrame->Hide();
    1320           0 :         m_pCrsrInProtCB->Hide();
    1321           0 :     }
    1322           0 : }
    1323             : 
    1324           0 : SwShdwCrsrOptionsTabPage::~SwShdwCrsrOptionsTabPage()
    1325             : {
    1326           0 : }
    1327             : 
    1328           0 : SfxTabPage* SwShdwCrsrOptionsTabPage::Create( vcl::Window* pParent, const SfxItemSet* rSet )
    1329             : {
    1330           0 :     return new SwShdwCrsrOptionsTabPage( pParent, *rSet );
    1331             : }
    1332             : 
    1333           0 : void SwShdwCrsrOptionsTabPage::PageCreated( const SfxAllItemSet& aSet )
    1334             : {
    1335           0 :     SFX_ITEMSET_ARG (&aSet,pWrtSh,SwWrtShellItem,SID_WRT_SHELL,false);
    1336           0 :     if (pWrtSh)
    1337           0 :         SetWrtShell(pWrtSh->GetValue());
    1338           0 : }
    1339             : 
    1340           0 : bool SwShdwCrsrOptionsTabPage::FillItemSet( SfxItemSet* rSet )
    1341             : {
    1342           0 :     SwShadowCursorItem aOpt;
    1343           0 :     aOpt.SetOn( m_pOnOffCB->IsChecked() );
    1344             : 
    1345             :     sal_uInt8 eMode;
    1346           0 :     if( m_pFillIndentRB->IsChecked() )
    1347           0 :         eMode= FILL_INDENT;
    1348           0 :     else if( m_pFillMarginRB->IsChecked() )
    1349           0 :         eMode = FILL_MARGIN;
    1350           0 :     else if( m_pFillTabRB->IsChecked() )
    1351           0 :         eMode = FILL_TAB;
    1352             :     else
    1353           0 :         eMode = FILL_SPACE;
    1354           0 :     aOpt.SetMode( eMode );
    1355             : 
    1356           0 :     bool bRet = false;
    1357           0 :     const SfxPoolItem* pItem = 0;
    1358           0 :     if( SfxItemState::SET != rSet->GetItemState( FN_PARAM_SHADOWCURSOR, false, &pItem )
    1359           0 :         ||  ((SwShadowCursorItem&)*pItem) != aOpt )
    1360             :     {
    1361           0 :         rSet->Put( aOpt );
    1362           0 :         bRet = true;
    1363             :     }
    1364             : 
    1365           0 :     if (m_pWrtShell) {
    1366           0 :         m_pWrtShell->GetDoc()->getIDocumentSettingAccess().set( IDocumentSettingAccess::MATH_BASELINE_ALIGNMENT,
    1367           0 :                                     m_pMathBaselineAlignmentCB->IsChecked() );
    1368           0 :         bRet |= m_pMathBaselineAlignmentCB->IsValueChangedFromSaved();
    1369             :     }
    1370             : 
    1371           0 :     if( m_pCrsrInProtCB->IsValueChangedFromSaved())
    1372             :     {
    1373           0 :         rSet->Put(SfxBoolItem(FN_PARAM_CRSR_IN_PROTECTED, m_pCrsrInProtCB->IsChecked()));
    1374           0 :         bRet = true;
    1375             :     }
    1376             : 
    1377             :     const SwDocDisplayItem* pOldAttr = (const SwDocDisplayItem*)
    1378           0 :                         GetOldItem(GetItemSet(), FN_PARAM_DOCDISP);
    1379             : 
    1380           0 :     SwDocDisplayItem aDisp;
    1381           0 :     if(pOldAttr)
    1382           0 :         aDisp = *pOldAttr;
    1383             : 
    1384           0 :     aDisp.bParagraphEnd         = m_pParaCB->IsChecked();
    1385           0 :     aDisp.bTab                  = m_pTabCB->IsChecked();
    1386           0 :     aDisp.bSpace                = m_pSpacesCB->IsChecked();
    1387           0 :     aDisp.bNonbreakingSpace     = m_pHSpacesCB->IsChecked();
    1388           0 :     aDisp.bSoftHyphen           = m_pSHyphCB->IsChecked();
    1389           0 :     aDisp.bFldHiddenText        = m_pFldHiddenCB->IsChecked();
    1390           0 :     aDisp.bCharHiddenText       = m_pCharHiddenCB->IsChecked();
    1391           0 :     aDisp.bShowHiddenPara       = m_pFldHiddenParaCB->IsChecked();
    1392           0 :     aDisp.bManualBreak          = m_pBreakCB->IsChecked();
    1393             : 
    1394           0 :     bRet |= (!pOldAttr || aDisp != *pOldAttr);
    1395           0 :     if(bRet)
    1396           0 :         bRet = 0 != rSet->Put(aDisp);
    1397             : 
    1398           0 :     return bRet;
    1399             : }
    1400             : 
    1401           0 : void SwShdwCrsrOptionsTabPage::Reset( const SfxItemSet* rSet )
    1402             : {
    1403           0 :     const SfxPoolItem* pItem = 0;
    1404             : 
    1405           0 :     SwShadowCursorItem aOpt;
    1406           0 :     if( SfxItemState::SET == rSet->GetItemState( FN_PARAM_SHADOWCURSOR, false, &pItem ))
    1407           0 :         aOpt = *(SwShadowCursorItem*)pItem;
    1408           0 :     m_pOnOffCB->Check( aOpt.IsOn() );
    1409             : 
    1410           0 :     sal_uInt8 eMode = aOpt.GetMode();
    1411           0 :     m_pFillIndentRB->Check( FILL_INDENT == eMode );
    1412           0 :     m_pFillMarginRB->Check( FILL_MARGIN == eMode );
    1413           0 :     m_pFillTabRB->Check( FILL_TAB == eMode );
    1414           0 :     m_pFillSpaceRB->Check( FILL_SPACE == eMode );
    1415             : 
    1416           0 :     if (m_pWrtShell) {
    1417           0 :        m_pMathBaselineAlignmentCB->Check( m_pWrtShell->GetDoc()->getIDocumentSettingAccess().get( IDocumentSettingAccess::MATH_BASELINE_ALIGNMENT ) );
    1418           0 :        m_pMathBaselineAlignmentCB->SaveValue();
    1419             :     } else {
    1420           0 :         m_pMathBaselineAlignmentCB->Hide();
    1421             :     }
    1422             : 
    1423           0 :     if( SfxItemState::SET == rSet->GetItemState( FN_PARAM_CRSR_IN_PROTECTED, false, &pItem ))
    1424           0 :         m_pCrsrInProtCB->Check(((const SfxBoolItem*)pItem)->GetValue());
    1425           0 :     m_pCrsrInProtCB->SaveValue();
    1426             : 
    1427           0 :     const SwDocDisplayItem* pDocDisplayAttr = 0;
    1428             : 
    1429             :     rSet->GetItemState( FN_PARAM_DOCDISP, false,
    1430           0 :                                     (const SfxPoolItem**)&pDocDisplayAttr );
    1431           0 :     if(pDocDisplayAttr)
    1432             :     {
    1433           0 :         m_pParaCB->Check  ( pDocDisplayAttr->bParagraphEnd );
    1434           0 :         m_pTabCB->Check  ( pDocDisplayAttr->bTab );
    1435           0 :         m_pSpacesCB->Check  ( pDocDisplayAttr->bSpace );
    1436           0 :         m_pHSpacesCB->Check  ( pDocDisplayAttr->bNonbreakingSpace );
    1437           0 :         m_pSHyphCB->Check  ( pDocDisplayAttr->bSoftHyphen );
    1438           0 :         m_pCharHiddenCB->Check ( pDocDisplayAttr->bCharHiddenText );
    1439           0 :         m_pFldHiddenCB->Check  ( pDocDisplayAttr->bFldHiddenText );
    1440           0 :         m_pFldHiddenParaCB->Check ( pDocDisplayAttr->bShowHiddenPara );
    1441           0 :         m_pBreakCB->Check  ( pDocDisplayAttr->bManualBreak );
    1442           0 :     }
    1443           0 : }
    1444             : 
    1445             : // TabPage for Redlining
    1446             : struct CharAttr
    1447             : {
    1448             :     sal_uInt16 nItemId;
    1449             :     sal_uInt16 nAttr;
    1450             : };
    1451             : 
    1452             : // Edit corresponds to Paste-attributes
    1453             : static CharAttr aRedlineAttr[] =
    1454             : {
    1455             :     { SID_ATTR_CHAR_CASEMAP,        SVX_CASEMAP_NOT_MAPPED },
    1456             :     { SID_ATTR_CHAR_WEIGHT,         WEIGHT_BOLD },
    1457             :     { SID_ATTR_CHAR_POSTURE,        ITALIC_NORMAL },
    1458             :     { SID_ATTR_CHAR_UNDERLINE,      UNDERLINE_SINGLE },
    1459             :     { SID_ATTR_CHAR_UNDERLINE,      UNDERLINE_DOUBLE },
    1460             :     { SID_ATTR_CHAR_STRIKEOUT,      STRIKEOUT_SINGLE },
    1461             :     { SID_ATTR_CHAR_CASEMAP,        SVX_CASEMAP_VERSALIEN },
    1462             :     { SID_ATTR_CHAR_CASEMAP,        SVX_CASEMAP_GEMEINE },
    1463             :     { SID_ATTR_CHAR_CASEMAP,        SVX_CASEMAP_KAPITAELCHEN },
    1464             :     { SID_ATTR_CHAR_CASEMAP,        SVX_CASEMAP_TITEL },
    1465             :     { SID_ATTR_BRUSH,               0 }
    1466             : };
    1467             : // Items from aRedlineAttr relevant for InsertAttr: strikethrough is
    1468             : // not used
    1469             : static sal_uInt16 aInsertAttrMap[] = { 0, 1, 2, 3, 4, 6, 7, 8, 9, 10 };
    1470             : 
    1471             : // Items from aRedlineAttr relevant for DeleteAttr: underline and
    1472             : // double underline is not used
    1473             : static sal_uInt16 aDeletedAttrMap[] = { 0, 1, 2, 5, 6, 7, 8, 9, 10 };
    1474             : 
    1475             : // Items from aRedlineAttr relevant for ChangeAttr: strikethrough is
    1476             : // not used
    1477             : static sal_uInt16 aChangedAttrMap[] = { 0, 1, 2, 3, 4, 6, 7, 8, 9, 10 };
    1478             : 
    1479             : // Preview of selection
    1480           0 : SwMarkPreview::SwMarkPreview( vcl::Window *pParent, WinBits nWinBits ) :
    1481             : 
    1482             :     Window(pParent, nWinBits),
    1483             :     m_aTransCol( COL_TRANSPARENT ),
    1484             :     m_aMarkCol( COL_LIGHTRED ),
    1485           0 :     nMarkPos(0)
    1486             : 
    1487             : {
    1488           0 :     m_aInitialSize = getPreviewOptionsSize(this);
    1489           0 :     InitColors();
    1490           0 :     SetMapMode(MAP_PIXEL);
    1491           0 : }
    1492             : 
    1493           0 : extern "C" SAL_DLLPUBLIC_EXPORT vcl::Window* SAL_CALL makeSwMarkPreview(vcl::Window *pParent, VclBuilder::stringmap &)
    1494             : {
    1495           0 :     return new SwMarkPreview(pParent, 0);
    1496             : }
    1497             : 
    1498           0 : SwMarkPreview::~SwMarkPreview()
    1499             : {
    1500           0 : }
    1501             : 
    1502           0 : void SwMarkPreview::InitColors( void )
    1503             : {
    1504             :     // m_aTransCol and m_aMarkCol are _not_ changed because they are set from outside!
    1505             : 
    1506           0 :     const StyleSettings& rSettings = GetSettings().GetStyleSettings();
    1507           0 :     m_aBgCol = Color( rSettings.GetWindowColor() );
    1508             : 
    1509           0 :     bool bHC = rSettings.GetHighContrastMode();
    1510           0 :     m_aLineCol = bHC? SwViewOption::GetFontColor() : Color( COL_BLACK );
    1511           0 :     m_aShadowCol = bHC? m_aBgCol : rSettings.GetShadowColor();
    1512           0 :     m_aTxtCol = bHC? SwViewOption::GetFontColor() : Color( COL_GRAY );
    1513           0 :     m_aPrintAreaCol = m_aTxtCol;
    1514           0 : }
    1515             : 
    1516           0 : void SwMarkPreview::DataChanged( const DataChangedEvent& rDCEvt )
    1517             : {
    1518           0 :     Window::DataChanged( rDCEvt );
    1519             : 
    1520           0 :     if( rDCEvt.GetType() == DATACHANGED_SETTINGS && ( rDCEvt.GetFlags() & SETTINGS_STYLE ) )
    1521           0 :         InitColors();
    1522           0 : }
    1523             : 
    1524           0 : void SwMarkPreview::Paint(const Rectangle &/*rRect*/)
    1525             : {
    1526           0 :     const Size aSz(GetOutputSizePixel());
    1527             : 
    1528             :     // Page
    1529           0 :     aPage.SetSize(Size(aSz.Width() - 3, aSz.Height() - 3));
    1530             : 
    1531           0 :     const long nOutWPix = aPage.GetWidth();
    1532           0 :     const long nOutHPix = aPage.GetHeight();
    1533             : 
    1534             :     // PrintArea
    1535           0 :     const long nLBorder = 8;
    1536           0 :     const long nRBorder = 8;
    1537           0 :     const long nTBorder = 4;
    1538           0 :     const long nBBorder = 4;
    1539             : 
    1540           0 :     aLeftPagePrtArea = Rectangle(Point(nLBorder, nTBorder), Point((nOutWPix - 1) - nRBorder, (nOutHPix - 1) - nBBorder));
    1541           0 :     const long nWidth = aLeftPagePrtArea.GetWidth();
    1542           0 :     const long nKorr = (nWidth & 1) != 0 ? 0 : 1;
    1543           0 :     aLeftPagePrtArea.SetSize(Size(nWidth / 2 - (nLBorder + nRBorder) / 2 + nKorr, aLeftPagePrtArea.GetHeight()));
    1544             : 
    1545           0 :     aRightPagePrtArea = aLeftPagePrtArea;
    1546           0 :     aRightPagePrtArea.Move(aLeftPagePrtArea.GetWidth() + nLBorder + nRBorder + 1, 0);
    1547             : 
    1548             :     // draw shadow
    1549           0 :     Rectangle aShadow(aPage);
    1550           0 :     aShadow += Point(3, 3);
    1551           0 :     DrawRect( aShadow, m_aShadowCol, m_aTransCol );
    1552             : 
    1553             :     // draw page
    1554           0 :     DrawRect( aPage, m_aBgCol, m_aLineCol );
    1555             : 
    1556             :     // draw separator
    1557           0 :     Rectangle aPageSeparator(aPage);
    1558           0 :     aPageSeparator.SetSize(Size(2, aPageSeparator.GetHeight()));
    1559           0 :     aPageSeparator.Move(aPage.GetWidth() / 2 - 1, 0);
    1560           0 :     DrawRect( aPageSeparator, m_aLineCol, m_aTransCol );
    1561             : 
    1562           0 :     PaintPage(aLeftPagePrtArea);
    1563           0 :     PaintPage(aRightPagePrtArea);
    1564             : 
    1565           0 :     Rectangle aLeftMark(Point(aPage.Left() + 2, aLeftPagePrtArea.Top() + 4), Size(aLeftPagePrtArea.Left() - 4, 2));
    1566           0 :     Rectangle aRightMark(Point(aRightPagePrtArea.Right() + 2, aRightPagePrtArea.Bottom() - 6), Size(aLeftPagePrtArea.Left() - 4, 2));
    1567             : 
    1568           0 :     switch (nMarkPos)
    1569             :     {
    1570             :         case 1:     // left
    1571           0 :             aRightMark.SetPos(Point(aRightPagePrtArea.Left() - 2 - aRightMark.GetWidth(), aRightMark.Top()));
    1572           0 :             break;
    1573             : 
    1574             :         case 2:     // right
    1575           0 :             aLeftMark.SetPos(Point(aLeftPagePrtArea.Right() + 2, aLeftMark.Top()));
    1576           0 :             break;
    1577             : 
    1578             :         case 3:     // outside
    1579           0 :             break;
    1580             : 
    1581             :         case 4:     // inside
    1582           0 :             aLeftMark.SetPos(Point(aLeftPagePrtArea.Right() + 2, aLeftMark.Top()));
    1583           0 :             aRightMark.SetPos(Point(aRightPagePrtArea.Left() - 2 - aRightMark.GetWidth(), aRightMark.Top()));
    1584           0 :             break;
    1585             : 
    1586             :         case 0:     // none
    1587             :         default:
    1588           0 :             return;
    1589             :     }
    1590           0 :     DrawRect( aLeftMark, m_aMarkCol, m_aTransCol );
    1591           0 :     DrawRect( aRightMark, m_aMarkCol, m_aTransCol );
    1592             : }
    1593             : 
    1594           0 : void SwMarkPreview::PaintPage(const Rectangle &rRect)
    1595             : {
    1596             :     // draw PrintArea
    1597           0 :     DrawRect(rRect, m_aTransCol, m_aPrintAreaCol );
    1598             : 
    1599             :     // draw Testparagraph
    1600           0 :     sal_uLong nLTxtBorder = 4;
    1601           0 :     sal_uLong nRTxtBorder = 4;
    1602           0 :     sal_uLong nTTxtBorder = 4;
    1603             : 
    1604           0 :     Rectangle aTextLine = rRect;
    1605           0 :     aTextLine.SetSize(Size(aTextLine.GetWidth(), 2));
    1606           0 :     aTextLine.Left()    += nLTxtBorder;
    1607           0 :     aTextLine.Right()   -= nRTxtBorder;
    1608           0 :     aTextLine.Move(0, nTTxtBorder);
    1609             : 
    1610           0 :     const long nStep = aTextLine.GetHeight() + 2;
    1611           0 :     const long nLines = rRect.GetHeight() / (aTextLine.GetHeight() + 2) - 1;
    1612             : 
    1613             :     // simulate text
    1614           0 :     for (long i = 0; i < nLines; ++i)
    1615             :     {
    1616           0 :         if (i == (nLines - 1))
    1617           0 :             aTextLine.SetSize(Size(aTextLine.GetWidth() / 2, aTextLine.GetHeight()));
    1618             : 
    1619           0 :         if (aPage.IsInside(aTextLine))
    1620           0 :             DrawRect(aTextLine, m_aTxtCol, m_aTransCol );
    1621             : 
    1622           0 :         aTextLine.Move(0, nStep);
    1623             :     }
    1624           0 :     aTextLine.Move(0, -nStep);
    1625           0 : }
    1626             : 
    1627           0 : void SwMarkPreview::DrawRect(const Rectangle &rRect, const Color &rFillColor, const Color &rLineColor)
    1628             : {
    1629           0 :     SetFillColor(rFillColor);
    1630           0 :     SetLineColor(rLineColor);
    1631           0 :     Window::DrawRect(rRect);
    1632           0 : }
    1633             : 
    1634           0 : Size SwMarkPreview::GetOptimalSize() const
    1635             : {
    1636           0 :     return m_aInitialSize;
    1637             : }
    1638             : 
    1639             : namespace
    1640             : {
    1641           0 :     void lcl_FillRedlineAttrListBox(
    1642             :             ListBox& rLB, const AuthorCharAttr& rAttrToSelect,
    1643             :             const sal_uInt16* pAttrMap, const size_t nAttrMapSize)
    1644             :     {
    1645           0 :         for (size_t i = 0; i != nAttrMapSize; ++i)
    1646             :         {
    1647           0 :             CharAttr& rAttr(aRedlineAttr[pAttrMap[i]]);
    1648           0 :             rLB.SetEntryData(i, &rAttr);
    1649           0 :             if (rAttr.nItemId == rAttrToSelect.nItemId &&
    1650           0 :                 rAttr.nAttr == rAttrToSelect.nAttr)
    1651           0 :                 rLB.SelectEntryPos(i);
    1652             :         }
    1653           0 :     }
    1654             : }
    1655             : 
    1656           0 : SwRedlineOptionsTabPage::SwRedlineOptionsTabPage( vcl::Window* pParent,
    1657             :                                                     const SfxItemSet& rSet )
    1658             :     : SfxTabPage(pParent, "OptRedLinePage",
    1659             :         "modules/swriter/ui/optredlinepage.ui" , &rSet)
    1660           0 :     , sNone(SW_RESSTR(SW_STR_NONE))
    1661             : {
    1662           0 :     Size aPreviewSize(getPreviewOptionsSize(this));
    1663             : 
    1664           0 :     get(pInsertLB,"insert");
    1665           0 :     get(pInsertColorLB,"insertcolor");
    1666           0 :     get(pInsertedPreviewWN,"insertedpreview");
    1667             : 
    1668           0 :     get(pDeletedLB,"deleted");
    1669           0 :     get(pDeletedColorLB,"deletedcolor");
    1670           0 :     get(pDeletedPreviewWN,"deletedpreview");
    1671             : 
    1672           0 :     get(pChangedLB,"changed");
    1673           0 :     get(pChangedColorLB,"changedcolor");
    1674           0 :     get(pChangedPreviewWN,"changedpreview");
    1675             : 
    1676           0 :     get(pMarkPosLB,"markpos");
    1677           0 :     get(pMarkColorLB,"markcolor");
    1678           0 :     get(pMarkPreviewWN,"markpreview");
    1679             : 
    1680           0 :     pInsertedPreviewWN->set_height_request(aPreviewSize.Height());
    1681           0 :     pDeletedPreviewWN->set_height_request(aPreviewSize.Height());
    1682           0 :     pChangedPreviewWN->set_height_request(aPreviewSize.Height());
    1683           0 :     pMarkPreviewWN->set_height_request(aPreviewSize.Height());
    1684             : 
    1685           0 :     pInsertedPreviewWN->set_width_request(aPreviewSize.Width());
    1686           0 :     pDeletedPreviewWN->set_width_request(aPreviewSize.Width());
    1687           0 :     pChangedPreviewWN->set_width_request(aPreviewSize.Width());
    1688           0 :     pMarkPreviewWN->set_width_request(aPreviewSize.Width());
    1689             : 
    1690           0 :     sAuthor = get<vcl::Window>("byauthor")->GetText();
    1691             : 
    1692           0 :     for (sal_Int32 i = 0; i < pInsertLB->GetEntryCount(); ++i)
    1693             :     {
    1694           0 :         const OUString sEntry(pInsertLB->GetEntry(i));
    1695           0 :         pDeletedLB->InsertEntry(sEntry);
    1696           0 :         pChangedLB->InsertEntry(sEntry);
    1697           0 :     };
    1698             : 
    1699             :     // remove strikethrough from insert and change and underline + double
    1700             :     // underline from delete
    1701           0 :     pInsertLB->RemoveEntry(5);
    1702           0 :     pChangedLB->RemoveEntry(5);
    1703           0 :     pDeletedLB->RemoveEntry(4);
    1704           0 :     pDeletedLB->RemoveEntry(3);
    1705             : 
    1706           0 :     Link aLk = LINK(this, SwRedlineOptionsTabPage, AttribHdl);
    1707           0 :     pInsertLB->SetSelectHdl( aLk );
    1708           0 :     pDeletedLB->SetSelectHdl( aLk );
    1709           0 :     pChangedLB->SetSelectHdl( aLk );
    1710             : 
    1711           0 :     aLk = LINK(this, SwRedlineOptionsTabPage, ColorHdl);
    1712           0 :     pInsertColorLB->SetSelectHdl( aLk );
    1713           0 :     pDeletedColorLB->SetSelectHdl( aLk );
    1714           0 :     pChangedColorLB->SetSelectHdl( aLk );
    1715             : 
    1716           0 :     aLk = LINK(this, SwRedlineOptionsTabPage, ChangedMaskPrevHdl);
    1717           0 :     pMarkPosLB->SetSelectHdl( aLk );
    1718           0 :     pMarkColorLB->SetSelectHdl( aLk );
    1719             : /*
    1720             :     //solution: set different accessible name of four color box
    1721             :     pInsertColorLB->SetAccessibleName(OUString( aInsertFT.GetDisplayText()) + OUString(aInsertColorFT.GetDisplayText()));
    1722             :     pDeletedColorLB->SetAccessibleName(OUString( aDeletedFT.GetDisplayText()) + OUString( aDeletedColorFT.GetDisplayText()));
    1723             :     pChangedColorLB->SetAccessibleName(OUString( aChangedFT.GetDisplayText()) + OUString( aChangedColorFT.GetDisplayText()));
    1724             :     pMarkColorLB->SetAccessibleName(OUString( aMarkPosFT.GetDisplayText()) + OUString( aMarkColorFT.GetDisplayText()));*/
    1725           0 : }
    1726             : 
    1727           0 : SwRedlineOptionsTabPage::~SwRedlineOptionsTabPage()
    1728             : {
    1729           0 : }
    1730             : 
    1731           0 : SfxTabPage* SwRedlineOptionsTabPage::Create( vcl::Window* pParent, const SfxItemSet* rSet)
    1732             : {
    1733           0 :     return new SwRedlineOptionsTabPage( pParent, *rSet );
    1734             : }
    1735             : 
    1736           0 : bool SwRedlineOptionsTabPage::FillItemSet( SfxItemSet* )
    1737             : {
    1738             :     CharAttr *pAttr;
    1739           0 :     SwModuleOptions *pOpt = SW_MOD()->GetModuleConfig();
    1740             : 
    1741           0 :     AuthorCharAttr aInsertedAttr;
    1742           0 :     AuthorCharAttr aDeletedAttr;
    1743           0 :     AuthorCharAttr aChangedAttr;
    1744             : 
    1745           0 :     AuthorCharAttr aOldInsertAttr(pOpt->GetInsertAuthorAttr());
    1746           0 :     AuthorCharAttr aOldDeletedAttr(pOpt->GetDeletedAuthorAttr());
    1747           0 :     AuthorCharAttr aOldChangedAttr(pOpt->GetFormatAuthorAttr());
    1748             : 
    1749           0 :     ColorData nOldMarkColor = pOpt->GetMarkAlignColor().GetColor();
    1750           0 :     sal_uInt16 nOldMarkMode = pOpt->GetMarkAlignMode();
    1751             : 
    1752           0 :     sal_Int32 nPos = pInsertLB->GetSelectEntryPos();
    1753           0 :     if (nPos != LISTBOX_ENTRY_NOTFOUND)
    1754             :     {
    1755           0 :         pAttr = (CharAttr *)pInsertLB->GetEntryData(nPos);
    1756           0 :         aInsertedAttr.nItemId = pAttr->nItemId;
    1757           0 :         aInsertedAttr.nAttr = pAttr->nAttr;
    1758             : 
    1759           0 :         nPos = pInsertColorLB->GetSelectEntryPos();
    1760             : 
    1761           0 :         switch (nPos)
    1762             :         {
    1763             :             case 0:
    1764           0 :                 aInsertedAttr.nColor = COL_NONE_COLOR;
    1765           0 :                 break;
    1766             :             case 1:
    1767             :             case LISTBOX_ENTRY_NOTFOUND:
    1768           0 :                 aInsertedAttr.nColor = COL_TRANSPARENT;
    1769           0 :                 break;
    1770             :             default:
    1771           0 :                 aInsertedAttr.nColor = pInsertColorLB->GetEntryColor(nPos).GetColor();
    1772           0 :                 break;
    1773             :         }
    1774             : 
    1775           0 :         pOpt->SetInsertAuthorAttr(aInsertedAttr);
    1776             :     }
    1777             : 
    1778           0 :     nPos = pDeletedLB->GetSelectEntryPos();
    1779           0 :     if (nPos != LISTBOX_ENTRY_NOTFOUND)
    1780             :     {
    1781           0 :         pAttr = (CharAttr *)pDeletedLB->GetEntryData(nPos);
    1782           0 :         aDeletedAttr.nItemId = pAttr->nItemId;
    1783           0 :         aDeletedAttr.nAttr = pAttr->nAttr;
    1784             : 
    1785           0 :         nPos = pDeletedColorLB->GetSelectEntryPos();
    1786             : 
    1787           0 :         switch (nPos)
    1788             :         {
    1789             :             case 0:
    1790           0 :                 aDeletedAttr.nColor = COL_NONE_COLOR;
    1791           0 :                 break;
    1792             :             case 1:
    1793             :             case LISTBOX_ENTRY_NOTFOUND:
    1794           0 :                 aDeletedAttr.nColor = COL_TRANSPARENT;
    1795           0 :                 break;
    1796             :             default:
    1797           0 :                 aDeletedAttr.nColor = pDeletedColorLB->GetEntryColor(nPos).GetColor();
    1798           0 :                 break;
    1799             :         }
    1800             : 
    1801           0 :         pOpt->SetDeletedAuthorAttr(aDeletedAttr);
    1802             :     }
    1803             : 
    1804           0 :     nPos = pChangedLB->GetSelectEntryPos();
    1805           0 :     if (nPos != LISTBOX_ENTRY_NOTFOUND)
    1806             :     {
    1807           0 :         pAttr = (CharAttr *)pChangedLB->GetEntryData(nPos);
    1808           0 :         aChangedAttr.nItemId = pAttr->nItemId;
    1809           0 :         aChangedAttr.nAttr = pAttr->nAttr;
    1810             : 
    1811           0 :         nPos = pChangedColorLB->GetSelectEntryPos();
    1812             : 
    1813           0 :         switch (nPos)
    1814             :         {
    1815             :             case 0:
    1816           0 :                 aChangedAttr.nColor = COL_NONE_COLOR;
    1817           0 :                 break;
    1818             :             case 1:
    1819             :             case LISTBOX_ENTRY_NOTFOUND:
    1820           0 :                 aChangedAttr.nColor = COL_TRANSPARENT;
    1821           0 :                 break;
    1822             :             default:
    1823           0 :                 aChangedAttr.nColor = pChangedColorLB->GetEntryColor(nPos).GetColor();
    1824           0 :                 break;
    1825             :         }
    1826             : 
    1827           0 :         pOpt->SetFormatAuthorAttr(aChangedAttr);
    1828             :     }
    1829             : 
    1830           0 :     nPos = 0;
    1831           0 :     switch (pMarkPosLB->GetSelectEntryPos())
    1832             :     {
    1833           0 :         case 0: nPos = text::HoriOrientation::NONE;       break;
    1834           0 :         case 1: nPos = text::HoriOrientation::LEFT;       break;
    1835           0 :         case 2: nPos = text::HoriOrientation::RIGHT;      break;
    1836           0 :         case 3: nPos = text::HoriOrientation::OUTSIDE;    break;
    1837           0 :         case 4: nPos = text::HoriOrientation::INSIDE;     break;
    1838             :     }
    1839           0 :     pOpt->SetMarkAlignMode(nPos);
    1840             : 
    1841           0 :     pOpt->SetMarkAlignColor(pMarkColorLB->GetSelectEntryColor());
    1842             : 
    1843           0 :     if (!(aInsertedAttr == aOldInsertAttr) ||
    1844           0 :         !(aDeletedAttr == aOldDeletedAttr) ||
    1845           0 :         !(aChangedAttr == aOldChangedAttr) ||
    1846           0 :        nOldMarkColor != pOpt->GetMarkAlignColor().GetColor() ||
    1847           0 :        nOldMarkMode != pOpt->GetMarkAlignMode())
    1848             :     {
    1849             :         // update all documents
    1850           0 :         TypeId aType(TYPE(SwDocShell));
    1851           0 :         SwDocShell* pDocShell = (SwDocShell*)SfxObjectShell::GetFirst(&aType);
    1852             : 
    1853           0 :         while( pDocShell )
    1854             :         {
    1855           0 :             pDocShell->GetWrtShell()->UpdateRedlineAttr();
    1856           0 :             pDocShell = (SwDocShell*)SfxObjectShell::GetNext(*pDocShell, &aType);
    1857             :         }
    1858             :     }
    1859             : 
    1860           0 :     return false;
    1861             : }
    1862             : 
    1863           0 : void SwRedlineOptionsTabPage::Reset( const SfxItemSet*  )
    1864             : {
    1865           0 :     const SwModuleOptions *pOpt = SW_MOD()->GetModuleConfig();
    1866             : 
    1867           0 :     const AuthorCharAttr &rInsertAttr = pOpt->GetInsertAuthorAttr();
    1868           0 :     const AuthorCharAttr &rDeletedAttr = pOpt->GetDeletedAuthorAttr();
    1869           0 :     const AuthorCharAttr &rChangedAttr = pOpt->GetFormatAuthorAttr();
    1870             : 
    1871             :     // initialise preview
    1872           0 :     InitFontStyle(*pInsertedPreviewWN);
    1873           0 :     InitFontStyle(*pDeletedPreviewWN);
    1874           0 :     InitFontStyle(*pChangedPreviewWN);
    1875             : 
    1876             :     // initialise colour list box
    1877           0 :     pInsertColorLB->SetUpdateMode(false);
    1878           0 :     pDeletedColorLB->SetUpdateMode(false);
    1879           0 :     pChangedColorLB->SetUpdateMode(false);
    1880           0 :     pMarkColorLB->SetUpdateMode(false);
    1881           0 :     pInsertColorLB->InsertEntry(sNone);
    1882           0 :     pDeletedColorLB->InsertEntry(sNone);
    1883           0 :     pChangedColorLB->InsertEntry(sNone);
    1884             : 
    1885           0 :     pInsertColorLB->InsertEntry(sAuthor);
    1886           0 :     pDeletedColorLB->InsertEntry(sAuthor);
    1887           0 :     pChangedColorLB->InsertEntry(sAuthor);
    1888             : 
    1889           0 :     XColorListRef pColorLst = XColorList::GetStdColorList();
    1890           0 :     for( sal_Int32 i = 0; i < pColorLst->Count(); ++i )
    1891             :     {
    1892           0 :         XColorEntry* pEntry = pColorLst->GetColor( i );
    1893           0 :         Color aColor = pEntry->GetColor();
    1894           0 :         const OUString sName = pEntry->GetName();
    1895             : 
    1896           0 :         pInsertColorLB->InsertEntry( aColor, sName );
    1897           0 :         pDeletedColorLB->InsertEntry( aColor, sName );
    1898           0 :         pChangedColorLB->InsertEntry( aColor, sName );
    1899           0 :         pMarkColorLB->InsertEntry( aColor, sName );
    1900           0 :     }
    1901           0 :     pInsertColorLB->SetUpdateMode( true );
    1902           0 :     pDeletedColorLB->SetUpdateMode( true );
    1903           0 :     pChangedColorLB->SetUpdateMode( true );
    1904           0 :     pMarkColorLB->SetUpdateMode( true );
    1905             : 
    1906           0 :     ColorData nColor = rInsertAttr.nColor;
    1907             : 
    1908           0 :     switch (nColor)
    1909             :     {
    1910             :         case COL_TRANSPARENT:
    1911           0 :             pInsertColorLB->SelectEntryPos(1);
    1912           0 :             break;
    1913             :         case COL_NONE_COLOR:
    1914           0 :             pInsertColorLB->SelectEntryPos(0);
    1915           0 :             break;
    1916             :         default:
    1917           0 :             pInsertColorLB->SelectEntry(Color(nColor));
    1918             :     }
    1919             : 
    1920           0 :     nColor = rDeletedAttr.nColor;
    1921             : 
    1922           0 :     switch (nColor)
    1923             :     {
    1924             :         case COL_TRANSPARENT:
    1925           0 :             pDeletedColorLB->SelectEntryPos(1);
    1926           0 :             break;
    1927             :         case COL_NONE_COLOR:
    1928           0 :             pDeletedColorLB->SelectEntryPos(0);
    1929           0 :             break;
    1930             :         default:
    1931           0 :             pDeletedColorLB->SelectEntry(Color(nColor));
    1932             :     }
    1933             : 
    1934           0 :     nColor = rChangedAttr.nColor;
    1935             : 
    1936           0 :     switch (nColor)
    1937             :     {
    1938             :         case COL_TRANSPARENT:
    1939           0 :             pChangedColorLB->SelectEntryPos(1);
    1940           0 :             break;
    1941             :         case COL_NONE_COLOR:
    1942           0 :             pChangedColorLB->SelectEntryPos(0);
    1943           0 :             break;
    1944             :         default:
    1945           0 :             pChangedColorLB->SelectEntry(Color(nColor));
    1946             :     }
    1947             : 
    1948           0 :     pMarkColorLB->SelectEntry(pOpt->GetMarkAlignColor());
    1949             : 
    1950           0 :     pInsertLB->SelectEntryPos(0);
    1951           0 :     pDeletedLB->SelectEntryPos(0);
    1952           0 :     pChangedLB->SelectEntryPos(0);
    1953             : 
    1954           0 :     lcl_FillRedlineAttrListBox(*pInsertLB, rInsertAttr, aInsertAttrMap, SAL_N_ELEMENTS(aInsertAttrMap));
    1955           0 :     lcl_FillRedlineAttrListBox(*pDeletedLB, rDeletedAttr, aDeletedAttrMap, SAL_N_ELEMENTS(aDeletedAttrMap));
    1956           0 :     lcl_FillRedlineAttrListBox(*pChangedLB, rChangedAttr, aChangedAttrMap, SAL_N_ELEMENTS(aChangedAttrMap));
    1957             : 
    1958           0 :     sal_Int32 nPos = 0;
    1959           0 :     switch (pOpt->GetMarkAlignMode())
    1960             :     {
    1961           0 :         case text::HoriOrientation::NONE:     nPos = 0;   break;
    1962           0 :         case text::HoriOrientation::LEFT:     nPos = 1;   break;
    1963           0 :         case text::HoriOrientation::RIGHT:    nPos = 2;   break;
    1964           0 :         case text::HoriOrientation::OUTSIDE:  nPos = 3;   break;
    1965           0 :         case text::HoriOrientation::INSIDE:   nPos = 4;   break;
    1966             :     }
    1967           0 :     pMarkPosLB->SelectEntryPos(nPos);
    1968             : 
    1969             :     // show settings in preview
    1970           0 :     AttribHdl(pInsertLB);
    1971           0 :     ColorHdl(pInsertColorLB);
    1972           0 :     AttribHdl(pDeletedLB);
    1973           0 :     ColorHdl(pInsertColorLB);
    1974           0 :     AttribHdl(pChangedLB);
    1975           0 :     ColorHdl(pChangedColorLB);
    1976             : 
    1977           0 :     ChangedMaskPrevHdl();
    1978           0 : }
    1979             : 
    1980           0 : IMPL_LINK( SwRedlineOptionsTabPage, AttribHdl, ListBox *, pLB )
    1981             : {
    1982           0 :     SvxFontPrevWindow *pPrev = 0;
    1983             :     ColorListBox *pColorLB;
    1984             : 
    1985           0 :     if (pLB == pInsertLB)
    1986             :     {
    1987           0 :         pColorLB = pInsertColorLB;
    1988           0 :         pPrev = pInsertedPreviewWN;
    1989             :     }
    1990           0 :     else if (pLB == pDeletedLB)
    1991             :     {
    1992           0 :         pColorLB = pDeletedColorLB;
    1993           0 :         pPrev = pDeletedPreviewWN;
    1994             :     }
    1995             :     else
    1996             :     {
    1997           0 :         pColorLB = pChangedColorLB;
    1998           0 :         pPrev = pChangedPreviewWN;
    1999             :     }
    2000             : 
    2001           0 :     SvxFont&    rFont = pPrev->GetFont();
    2002           0 :     SvxFont&    rCJKFont = pPrev->GetCJKFont();
    2003             : 
    2004           0 :     rFont.SetWeight(WEIGHT_NORMAL);
    2005           0 :     rCJKFont.SetWeight(WEIGHT_NORMAL);
    2006           0 :     rFont.SetItalic(ITALIC_NONE);
    2007           0 :     rCJKFont.SetItalic(ITALIC_NONE);
    2008           0 :     rFont.SetUnderline(UNDERLINE_NONE);
    2009           0 :     rCJKFont.SetUnderline(UNDERLINE_NONE);
    2010           0 :     rFont.SetStrikeout(STRIKEOUT_NONE);
    2011           0 :     rCJKFont.SetStrikeout(STRIKEOUT_NONE);
    2012           0 :     rFont.SetCaseMap(SVX_CASEMAP_NOT_MAPPED);
    2013           0 :     rCJKFont.SetCaseMap(SVX_CASEMAP_NOT_MAPPED);
    2014             : 
    2015           0 :     sal_Int32      nPos = pColorLB->GetSelectEntryPos();
    2016             : 
    2017           0 :     switch( nPos )
    2018             :     {
    2019             :         case 0:
    2020           0 :             rFont.SetColor( Color( COL_BLACK ) );
    2021           0 :             rCJKFont.SetColor( Color( COL_BLACK ) );
    2022           0 :             break;
    2023             :         case 1:
    2024             :         case LISTBOX_ENTRY_NOTFOUND:
    2025           0 :             rFont.SetColor( Color( COL_RED ) );
    2026           0 :             rCJKFont.SetColor( Color( COL_RED ) );
    2027           0 :             break;
    2028             :         default:
    2029           0 :             rFont.SetColor( pColorLB->GetEntryColor( nPos ) );
    2030           0 :             rCJKFont.SetColor( pColorLB->GetEntryColor( nPos ) );
    2031           0 :             break;
    2032             :     }
    2033             : 
    2034           0 :     nPos = pLB->GetSelectEntryPos();
    2035           0 :     if( nPos == LISTBOX_ENTRY_NOTFOUND )
    2036           0 :         nPos = 0;
    2037             : 
    2038           0 :     CharAttr*   pAttr = ( CharAttr* ) pLB->GetEntryData( nPos );
    2039             :     //switch off preview background color
    2040           0 :     pPrev->ResetColor();
    2041           0 :     switch (pAttr->nItemId)
    2042             :     {
    2043             :         case SID_ATTR_CHAR_WEIGHT:
    2044           0 :             rFont.SetWeight( ( FontWeight ) pAttr->nAttr );
    2045           0 :             rCJKFont.SetWeight( ( FontWeight ) pAttr->nAttr );
    2046           0 :             break;
    2047             : 
    2048             :         case SID_ATTR_CHAR_POSTURE:
    2049           0 :             rFont.SetItalic( ( FontItalic ) pAttr->nAttr );
    2050           0 :             rCJKFont.SetItalic( ( FontItalic ) pAttr->nAttr );
    2051           0 :             break;
    2052             : 
    2053             :         case SID_ATTR_CHAR_UNDERLINE:
    2054           0 :             rFont.SetUnderline( ( FontUnderline ) pAttr->nAttr );
    2055           0 :             rCJKFont.SetUnderline( ( FontUnderline ) pAttr->nAttr );
    2056           0 :             break;
    2057             : 
    2058             :         case SID_ATTR_CHAR_STRIKEOUT:
    2059           0 :             rFont.SetStrikeout( ( FontStrikeout ) pAttr->nAttr );
    2060           0 :             rCJKFont.SetStrikeout( ( FontStrikeout ) pAttr->nAttr );
    2061           0 :             break;
    2062             : 
    2063             :         case SID_ATTR_CHAR_CASEMAP:
    2064           0 :             rFont.SetCaseMap( ( SvxCaseMap ) pAttr->nAttr );
    2065           0 :             rCJKFont.SetCaseMap( ( SvxCaseMap ) pAttr->nAttr );
    2066           0 :             break;
    2067             : 
    2068             :         case SID_ATTR_BRUSH:
    2069             :         {
    2070           0 :             nPos = pColorLB->GetSelectEntryPos();
    2071           0 :             if( nPos )
    2072           0 :                 pPrev->SetColor( pColorLB->GetSelectEntryColor() );
    2073             :             else
    2074           0 :                 pPrev->SetColor( Color( COL_LIGHTGRAY ) );
    2075             : 
    2076           0 :             rFont.SetColor( Color( COL_BLACK ) );
    2077           0 :             rCJKFont.SetColor( Color( COL_BLACK ) );
    2078             :         }
    2079           0 :         break;
    2080             :     }
    2081             : 
    2082           0 :     pPrev->Invalidate();
    2083             : 
    2084           0 :     return 0;
    2085             : }
    2086             : 
    2087           0 : IMPL_LINK( SwRedlineOptionsTabPage, ColorHdl, ColorListBox *, pColorLB )
    2088             : {
    2089           0 :     SvxFontPrevWindow *pPrev = 0;
    2090             :     ListBox* pLB;
    2091             : 
    2092           0 :     if (pColorLB == pInsertColorLB)
    2093             :     {
    2094           0 :         pLB = pInsertLB;
    2095           0 :         pPrev = pInsertedPreviewWN;
    2096             :     }
    2097           0 :     else if (pColorLB == pDeletedColorLB)
    2098             :     {
    2099           0 :         pLB = pDeletedLB;
    2100           0 :         pPrev = pDeletedPreviewWN;
    2101             :     }
    2102             :     else
    2103             :     {
    2104           0 :         pLB = pChangedLB;
    2105           0 :         pPrev = pChangedPreviewWN;
    2106             :     }
    2107             : 
    2108           0 :     SvxFont&    rFont = pPrev->GetFont();
    2109           0 :     SvxFont&    rCJKFont = pPrev->GetCJKFont();
    2110           0 :     sal_Int32      nPos = pLB->GetSelectEntryPos();
    2111           0 :     if( nPos == LISTBOX_ENTRY_NOTFOUND )
    2112           0 :         nPos = 0;
    2113             : 
    2114           0 :     CharAttr*   pAttr = ( CharAttr* ) pLB->GetEntryData( nPos );
    2115             : 
    2116           0 :     if( pAttr->nItemId == SID_ATTR_BRUSH )
    2117             :     {
    2118           0 :         rFont.SetColor( Color( COL_BLACK ) );
    2119           0 :         rCJKFont.SetColor( Color( COL_BLACK ) );
    2120           0 :         nPos = pColorLB->GetSelectEntryPos();
    2121           0 :         if( nPos && nPos != LISTBOX_ENTRY_NOTFOUND )
    2122           0 :             pPrev->SetColor( pColorLB->GetSelectEntryColor() );
    2123             :         else
    2124           0 :             pPrev->SetColor( Color( COL_LIGHTGRAY ) );
    2125             :     }
    2126             :     else
    2127             :     {
    2128           0 :         nPos = pColorLB->GetSelectEntryPos();
    2129             : 
    2130           0 :         switch( nPos )
    2131             :         {
    2132             :             case 0:
    2133           0 :                 rFont.SetColor( Color( COL_BLACK ) );
    2134           0 :                 rCJKFont.SetColor( Color( COL_BLACK ) );
    2135           0 :                 break;
    2136             :             case 1:
    2137             :             case LISTBOX_ENTRY_NOTFOUND:
    2138           0 :                 rFont.SetColor( Color( COL_RED ) );
    2139           0 :                 rCJKFont.SetColor( Color( COL_RED ) );
    2140           0 :                 break;
    2141             :             default:
    2142           0 :                 rFont.SetColor( pColorLB->GetEntryColor( nPos ) );
    2143           0 :                 rCJKFont.SetColor( pColorLB->GetEntryColor( nPos ) );
    2144           0 :                 break;
    2145             :         }
    2146             :     }
    2147             : 
    2148           0 :     pPrev->Invalidate();
    2149             : 
    2150           0 :     return 0;
    2151             : }
    2152             : 
    2153           0 : IMPL_LINK_NOARG(SwRedlineOptionsTabPage, ChangedMaskPrevHdl)
    2154             : {
    2155           0 :     pMarkPreviewWN->SetMarkPos(pMarkPosLB->GetSelectEntryPos());
    2156           0 :     pMarkPreviewWN->SetColor(pMarkColorLB->GetSelectEntryColor().GetColor());
    2157             : 
    2158           0 :     pMarkPreviewWN->Invalidate();
    2159             : 
    2160           0 :     return 0;
    2161             : }
    2162             : 
    2163           0 : void SwRedlineOptionsTabPage::InitFontStyle(SvxFontPrevWindow& rExampleWin)
    2164             : {
    2165           0 :     const AllSettings&  rAllSettings = Application::GetSettings();
    2166           0 :     LanguageType        eLangType = rAllSettings.GetUILanguageTag().getLanguageType();
    2167           0 :     Color               aBackCol( rAllSettings.GetStyleSettings().GetWindowColor() );
    2168           0 :     SvxFont&            rFont = rExampleWin.GetFont();
    2169           0 :     SvxFont&            rCJKFont = rExampleWin.GetCJKFont();
    2170           0 :     SvxFont&            rCTLFont = rExampleWin.GetCTLFont();
    2171             : 
    2172             :     vcl::Font           aFont( OutputDevice::GetDefaultFont( DEFAULTFONT_SERIF, eLangType,
    2173           0 :                                                         DEFAULTFONT_FLAGS_ONLYONE, &rExampleWin ) );
    2174             :     vcl::Font           aCJKFont( OutputDevice::GetDefaultFont( DEFAULTFONT_CJK_TEXT, eLangType,
    2175           0 :                                                         DEFAULTFONT_FLAGS_ONLYONE, &rExampleWin ) );
    2176             :     vcl::Font           aCTLFont( OutputDevice::GetDefaultFont( DEFAULTFONT_CTL_TEXT, eLangType,
    2177           0 :                                                         DEFAULTFONT_FLAGS_ONLYONE, &rExampleWin ) );
    2178           0 :     const Size          aDefSize( 0, 12 );
    2179           0 :     aFont.SetSize( aDefSize );
    2180           0 :     aCJKFont.SetSize( aDefSize );
    2181           0 :     aCTLFont.SetSize( aDefSize );
    2182             : 
    2183           0 :     aFont.SetFillColor( aBackCol );
    2184           0 :     aCJKFont.SetFillColor( aBackCol );
    2185           0 :     aCTLFont.SetFillColor( aBackCol );
    2186             : 
    2187           0 :     aFont.SetWeight( WEIGHT_NORMAL );
    2188           0 :     aCJKFont.SetWeight( WEIGHT_NORMAL );
    2189           0 :     aCTLFont.SetWeight( WEIGHT_NORMAL );
    2190             : 
    2191           0 :     rFont = aFont;
    2192           0 :     rCJKFont = aCJKFont;
    2193           0 :     rCTLFont = aCTLFont;
    2194             : 
    2195           0 :     const Size          aNewSize( 0, rExampleWin.GetOutputSize().Height() * 2 / 3 );
    2196           0 :     rFont.SetSize( aNewSize );
    2197           0 :     rCJKFont.SetSize( aNewSize );
    2198             : 
    2199           0 :     rExampleWin.SetFont( rFont, rCJKFont,rCTLFont );
    2200             : 
    2201           0 :     rExampleWin.UseResourceText();
    2202             : 
    2203           0 :     Wallpaper           aWall( aBackCol );
    2204           0 :     rExampleWin.SetBackground( aWall );
    2205           0 :     rExampleWin.Invalidate();
    2206           0 : }
    2207             : 
    2208           0 : SwCompareOptionsTabPage::SwCompareOptionsTabPage(  vcl::Window* pParent, const SfxItemSet& rSet )
    2209           0 :     : SfxTabPage( pParent,"OptComparison","modules/swriter/ui/optcomparison.ui", &rSet )
    2210             : {
    2211           0 :     get(m_pAutoRB,"auto");
    2212           0 :     get(m_pWordRB, "byword");
    2213           0 :     get(m_pCharRB, "bycharacter");
    2214             : 
    2215           0 :     get(m_pRsidCB, "useRSID");
    2216           0 :     get(m_pIgnoreCB, "ignore");
    2217           0 :     get(m_pLenNF, "ignorelen");
    2218             : 
    2219           0 :     Link aLnk( LINK( this, SwCompareOptionsTabPage, ComparisonHdl ) );
    2220           0 :     m_pAutoRB->SetClickHdl( aLnk );
    2221           0 :     m_pWordRB->SetClickHdl( aLnk );
    2222           0 :     m_pCharRB->SetClickHdl( aLnk );
    2223             : 
    2224           0 :     m_pIgnoreCB->SetClickHdl( LINK( this, SwCompareOptionsTabPage, IgnoreHdl) );
    2225           0 : }
    2226             : 
    2227           0 : SwCompareOptionsTabPage::~SwCompareOptionsTabPage()
    2228             : {
    2229           0 : }
    2230             : 
    2231           0 : SfxTabPage* SwCompareOptionsTabPage::Create( vcl::Window* pParent, const SfxItemSet* rAttrSet )
    2232             : {
    2233           0 :     return new SwCompareOptionsTabPage( pParent, *rAttrSet );
    2234             : }
    2235             : 
    2236           0 : bool SwCompareOptionsTabPage::FillItemSet( SfxItemSet* )
    2237             : {
    2238           0 :     bool bRet = false;
    2239           0 :     SwModuleOptions *pOpt = SW_MOD()->GetModuleConfig();
    2240             : 
    2241           0 :     if( m_pAutoRB->IsValueChangedFromSaved() ||
    2242           0 :         m_pWordRB->IsValueChangedFromSaved() ||
    2243           0 :         m_pCharRB->IsValueChangedFromSaved() )
    2244             :     {
    2245           0 :         SvxCompareMode eCmpMode = SVX_CMP_AUTO;
    2246             : 
    2247           0 :         if ( m_pAutoRB->IsChecked() ) eCmpMode = SVX_CMP_AUTO;
    2248           0 :         if ( m_pWordRB->IsChecked() ) eCmpMode = SVX_CMP_BY_WORD;
    2249           0 :         if ( m_pCharRB->IsChecked() ) eCmpMode = SVX_CMP_BY_CHAR;
    2250             : 
    2251           0 :         pOpt->SetCompareMode( eCmpMode );
    2252           0 :         bRet = true;
    2253             :     }
    2254             : 
    2255           0 :     if( m_pRsidCB->IsValueChangedFromSaved() )
    2256             :     {
    2257           0 :         pOpt->SetUseRsid( m_pRsidCB->IsChecked() );
    2258           0 :         bRet = true;
    2259             :     }
    2260             : 
    2261           0 :     if( m_pIgnoreCB->IsValueChangedFromSaved() )
    2262             :     {
    2263           0 :         pOpt->SetIgnorePieces( m_pIgnoreCB->IsChecked() );
    2264           0 :         bRet = true;
    2265             :     }
    2266             : 
    2267           0 :     if( m_pLenNF->IsModified() )
    2268             :     {
    2269           0 :         pOpt->SetPieceLen( m_pLenNF->GetValue() );
    2270           0 :         bRet = true;
    2271             :     }
    2272             : 
    2273           0 :     return bRet;
    2274             : }
    2275             : 
    2276           0 : void SwCompareOptionsTabPage::Reset( const SfxItemSet* )
    2277             : {
    2278           0 :     SwModuleOptions *pOpt = SW_MOD()->GetModuleConfig();
    2279             : 
    2280           0 :     SvxCompareMode eCmpMode = pOpt->GetCompareMode();
    2281           0 :     if( eCmpMode == SVX_CMP_AUTO )
    2282             :     {
    2283           0 :         m_pAutoRB->Check();
    2284           0 :         m_pRsidCB->Disable();
    2285           0 :         m_pIgnoreCB->Disable();
    2286           0 :         m_pLenNF->Disable();
    2287             :     }
    2288           0 :     else if( eCmpMode == SVX_CMP_BY_WORD )
    2289             :     {
    2290           0 :         m_pWordRB->Check();
    2291           0 :         m_pRsidCB->Enable();
    2292           0 :         m_pIgnoreCB->Enable();
    2293           0 :         m_pLenNF->Enable();
    2294             :     }
    2295           0 :     else if( eCmpMode == SVX_CMP_BY_CHAR)
    2296             :     {
    2297           0 :         m_pCharRB->Check();
    2298           0 :         m_pRsidCB->Enable();
    2299           0 :         m_pIgnoreCB->Enable();
    2300           0 :         m_pLenNF->Enable();
    2301             :     }
    2302           0 :     m_pAutoRB->SaveValue();
    2303           0 :     m_pWordRB->SaveValue();
    2304           0 :     m_pCharRB->SaveValue();
    2305             : 
    2306           0 :     m_pRsidCB->Check( pOpt->IsUseRsid() );
    2307           0 :     m_pRsidCB->SaveValue();
    2308             : 
    2309           0 :     m_pIgnoreCB->Check( pOpt->IsIgnorePieces() );
    2310           0 :     m_pIgnoreCB->SaveValue();
    2311             : 
    2312           0 :     m_pLenNF->Enable( m_pIgnoreCB->IsChecked() && eCmpMode );
    2313             : 
    2314           0 :     m_pLenNF->SetValue( pOpt->GetPieceLen() );
    2315           0 :     m_pLenNF->SaveValue();
    2316           0 : }
    2317             : 
    2318           0 : IMPL_LINK_NOARG(SwCompareOptionsTabPage, ComparisonHdl)
    2319             : {
    2320           0 :     bool bChecked = !m_pAutoRB->IsChecked();
    2321           0 :     m_pRsidCB->Enable( bChecked );
    2322           0 :     m_pIgnoreCB->Enable( bChecked );
    2323           0 :     m_pLenNF->Enable( bChecked && m_pIgnoreCB->IsChecked() );
    2324             : 
    2325           0 :     return 0;
    2326             : }
    2327             : 
    2328           0 : IMPL_LINK_NOARG(SwCompareOptionsTabPage, IgnoreHdl)
    2329             : {
    2330           0 :     m_pLenNF->Enable( m_pIgnoreCB->IsChecked() );
    2331           0 :     return 0;
    2332           0 : }
    2333             : 
    2334             : #ifdef DBG_UTIL
    2335             : 
    2336             : SwTestTabPage::SwTestTabPage(vcl::Window* pParent, const SfxItemSet& rCoreSet)
    2337             :     : SfxTabPage( pParent, "OptTestPage", "modules/swriter/ui/opttestpage.ui", &rCoreSet)
    2338             :     , bAttrModified( false )
    2339             : {
    2340             :     get(m_pTest1CBox, "unused");
    2341             :     get(m_pTest2CBox, "dynamic");
    2342             :     get(m_pTest3CBox, "nocalm");
    2343             :     get(m_pTest4CBox, "wysiwygdbg");
    2344             :     get(m_pTest5CBox, "noidle");
    2345             :     get(m_pTest6CBox, "noscreenadj");
    2346             :     get(m_pTest7CBox, "winformat");
    2347             :     get(m_pTest8CBox, "noscroll");
    2348             :     get(m_pTest9CBox, "DrawingLayerNotLoading");
    2349             :     get(m_pTest10CBox, "AutoFormatByInput");
    2350             : 
    2351             :     Init();
    2352             : 
    2353             : }
    2354             : 
    2355             : SfxTabPage* SwTestTabPage::Create( vcl::Window* pParent,
    2356             :                                        const SfxItemSet* rAttrSet )
    2357             : {
    2358             :     return new SwTestTabPage(pParent, *rAttrSet);
    2359             : }
    2360             : 
    2361             : bool    SwTestTabPage::FillItemSet( SfxItemSet* rCoreSet )
    2362             : {
    2363             : 
    2364             :     if ( bAttrModified )
    2365             :     {
    2366             :         SwTestItem aTestItem(FN_PARAM_SWTEST);
    2367             :         aTestItem.bTest1=m_pTest1CBox->IsChecked();
    2368             :         aTestItem.bTest2=m_pTest2CBox->IsChecked();
    2369             :         aTestItem.bTest3=m_pTest3CBox->IsChecked();
    2370             :         aTestItem.bTest4=m_pTest4CBox->IsChecked();
    2371             :         aTestItem.bTest5=m_pTest5CBox->IsChecked();
    2372             :         aTestItem.bTest6=m_pTest6CBox->IsChecked();
    2373             :         aTestItem.bTest7=m_pTest7CBox->IsChecked();
    2374             :         aTestItem.bTest8=m_pTest8CBox->IsChecked();
    2375             :         aTestItem.bTest9=m_pTest9CBox->IsChecked();
    2376             :         aTestItem.bTest10=m_pTest10CBox->IsChecked();
    2377             :         rCoreSet->Put(aTestItem);
    2378             :     }
    2379             :     return bAttrModified;
    2380             : }
    2381             : 
    2382             : void SwTestTabPage::Reset( const SfxItemSet* )
    2383             : {
    2384             :     const SfxItemSet& rSet = GetItemSet();
    2385             :     const SwTestItem* pTestAttr = 0;
    2386             : 
    2387             :     if( SfxItemState::SET == rSet.GetItemState( FN_PARAM_SWTEST , false,
    2388             :                                     (const SfxPoolItem**)&pTestAttr ))
    2389             :     {
    2390             :         m_pTest1CBox->Check(pTestAttr->bTest1);
    2391             :         m_pTest2CBox->Check(pTestAttr->bTest2);
    2392             :         m_pTest3CBox->Check(pTestAttr->bTest3);
    2393             :         m_pTest4CBox->Check(pTestAttr->bTest4);
    2394             :         m_pTest5CBox->Check(pTestAttr->bTest5);
    2395             :         m_pTest6CBox->Check(pTestAttr->bTest6);
    2396             :         m_pTest7CBox->Check(pTestAttr->bTest7);
    2397             :         m_pTest8CBox->Check(pTestAttr->bTest8);
    2398             :         m_pTest9CBox->Check(pTestAttr->bTest9);
    2399             :         m_pTest10CBox->Check(pTestAttr->bTest10);
    2400             :     }
    2401             : }
    2402             : 
    2403             : void SwTestTabPage::Init()
    2404             : {
    2405             :     // handler
    2406             :     Link aLk = LINK( this, SwTestTabPage, AutoClickHdl );
    2407             :     m_pTest1CBox->SetClickHdl( aLk );
    2408             :     m_pTest2CBox->SetClickHdl( aLk );
    2409             :     m_pTest3CBox->SetClickHdl( aLk );
    2410             :     m_pTest4CBox->SetClickHdl( aLk );
    2411             :     m_pTest5CBox->SetClickHdl( aLk );
    2412             :     m_pTest6CBox->SetClickHdl( aLk );
    2413             :     m_pTest7CBox->SetClickHdl( aLk );
    2414             :     m_pTest8CBox->SetClickHdl( aLk );
    2415             :     m_pTest9CBox->SetClickHdl( aLk );
    2416             :     m_pTest10CBox->SetClickHdl( aLk );
    2417             : }
    2418             : 
    2419             : IMPL_LINK_NOARG_INLINE_START(SwTestTabPage, AutoClickHdl)
    2420             : {
    2421             :     bAttrModified = true;
    2422             :     return 0;
    2423             : }
    2424             : IMPL_LINK_NOARG_INLINE_END(SwTestTabPage, AutoClickHdl)
    2425             : 
    2426             : #endif
    2427             : 
    2428             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10