LCOV - code coverage report
Current view: top level - sw/source/ui/table - tabledlg.cxx (source / functions) Hit Total Coverage
Test: commit c8344322a7af75b84dd3ca8f78b05543a976dfd5 Lines: 0 1078 0.0 %
Date: 2015-06-13 12:38:46 Functions: 0 69 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 <hintids.hxx>
      21             : #include <comphelper/string.hxx>
      22             : #include <vcl/layout.hxx>
      23             : #include <vcl/msgbox.hxx>
      24             : #include <svl/stritem.hxx>
      25             : #include <svl/intitem.hxx>
      26             : #include <editeng/keepitem.hxx>
      27             : #include <editeng/formatbreakitem.hxx>
      28             : #include <editeng/ulspitem.hxx>
      29             : #include <editeng/frmdiritem.hxx>
      30             : #include <svl/ctloptions.hxx>
      31             : #include <swmodule.hxx>
      32             : #include <fmtornt.hxx>
      33             : #include <fmtpdsc.hxx>
      34             : #include <fmtlsplt.hxx>
      35             : 
      36             : #include <svtools/htmlcfg.hxx>
      37             : #include <fmtrowsplt.hxx>
      38             : #include <sfx2/htmlmode.hxx>
      39             : 
      40             : #include "access.hrc"
      41             : 
      42             : #include <docsh.hxx>
      43             : #include <wrtsh.hxx>
      44             : #include <view.hxx>
      45             : #include <viewopt.hxx>
      46             : #include <uitool.hxx>
      47             : #include <frmatr.hxx>
      48             : #include <tabledlg.hxx>
      49             : #include <../../uibase/table/tablepg.hxx>
      50             : #include <tablemgr.hxx>
      51             : #include <pagedesc.hxx>
      52             : #include <uiitems.hxx>
      53             : #include <poolfmt.hxx>
      54             : #include <SwStyleNameMapper.hxx>
      55             : 
      56             : #include <app.hrc>
      57             : #include <cmdid.h>
      58             : #include <table.hrc>
      59             : #include <svx/svxids.hrc>
      60             : #include <svx/dialogs.hrc>
      61             : #include <svx/flagsdef.hxx>
      62             : #include <svx/svxdlg.hxx>
      63             : 
      64             : using namespace ::com::sun::star;
      65             : 
      66           0 : SwFormatTablePage::SwFormatTablePage(vcl::Window* pParent, const SfxItemSet& rSet)
      67             :     : SfxTabPage(pParent, "FormatTablePage", "modules/swriter/ui/formattablepage.ui", &rSet)
      68             :     , m_aTextFilter(" .<>")
      69             :     , pTableData(0)
      70             :     , nSaveWidth(0)
      71             :     , nMinTableWidth(MINLAY)
      72             :     , bModified(false)
      73             :     , bFull(false)
      74           0 :     , bHtmlMode(false)
      75             : {
      76           0 :     get(m_pNameED, "name");
      77           0 :     get(m_pWidthFT, "widthft");
      78           0 :     m_aWidthMF.set(get<MetricField>("widthmf"));
      79           0 :     m_aLeftMF.set(get<MetricField>("leftmf"));
      80           0 :     m_aRightMF.set(get<MetricField>("rightmf"));
      81           0 :     get(m_pRelWidthCB, "relwidth");
      82           0 :     get(m_pFullBtn, "full");
      83           0 :     get(m_pLeftBtn, "left");
      84           0 :     get(m_pFromLeftBtn, "fromleft");
      85           0 :     get(m_pRightBtn, "right");
      86           0 :     get(m_pCenterBtn, "center");
      87           0 :     get(m_pFreeBtn, "free");
      88           0 :     get(m_pLeftFT, "leftft");
      89           0 :     get(m_pRightFT, "rightft");
      90           0 :     get(m_pTopFT, "aboveft");
      91           0 :     get(m_pTopMF, "abovemf");
      92           0 :     get(m_pBottomFT, "belowft");
      93           0 :     get(m_pBottomMF, "belowmf");
      94           0 :     get(m_pTextDirectionLB, "textdirection");
      95             : 
      96           0 :     SetExchangeSupport();
      97             : 
      98             :     const SfxPoolItem* pItem;
      99           0 :     if(SfxItemState::SET == rSet.GetItemState(SID_HTML_MODE, false, &pItem))
     100           0 :         bHtmlMode = 0 != (static_cast<const SfxUInt16Item*>(pItem)->GetValue() & HTMLMODE_ON);
     101             : 
     102           0 :     bool bCTL = SW_MOD()->GetCTLOptions().IsCTLFontEnabled();
     103           0 :     get<VclContainer>("properties")->Show(!bHtmlMode && bCTL);
     104             : 
     105           0 :     Init();
     106           0 : }
     107             : 
     108           0 : SwFormatTablePage::~SwFormatTablePage()
     109             : {
     110           0 :     disposeOnce();
     111           0 : }
     112             : 
     113           0 : void SwFormatTablePage::dispose()
     114             : {
     115           0 :     m_pNameED.clear();
     116           0 :     m_pWidthFT.clear();
     117           0 :     m_pRelWidthCB.clear();
     118           0 :     m_pFullBtn.clear();
     119           0 :     m_pLeftBtn.clear();
     120           0 :     m_pFromLeftBtn.clear();
     121           0 :     m_pRightBtn.clear();
     122           0 :     m_pCenterBtn.clear();
     123           0 :     m_pFreeBtn.clear();
     124           0 :     m_pLeftFT.clear();
     125           0 :     m_pRightFT.clear();
     126           0 :     m_pTopFT.clear();
     127           0 :     m_pTopMF.clear();
     128           0 :     m_pBottomFT.clear();
     129           0 :     m_pBottomMF.clear();
     130           0 :     m_pTextDirectionLB.clear();
     131           0 :     SfxTabPage::dispose();
     132           0 : }
     133             : 
     134           0 : void  SwFormatTablePage::Init()
     135             : {
     136           0 :     m_aLeftMF.SetMetricFieldMin(-999999);
     137           0 :     m_aRightMF.SetMetricFieldMin(-999999);
     138             : 
     139             :     //handler
     140           0 :     Link<> aLk = LINK( this, SwFormatTablePage, AutoClickHdl );
     141           0 :     m_pFullBtn->SetClickHdl( aLk );
     142           0 :     m_pFreeBtn->SetClickHdl( aLk );
     143           0 :     m_pLeftBtn->SetClickHdl( aLk );
     144           0 :     m_pFromLeftBtn->SetClickHdl( aLk );
     145           0 :     m_pRightBtn->SetClickHdl( aLk );
     146           0 :     m_pCenterBtn->SetClickHdl( aLk );
     147             : 
     148           0 :     aLk = LINK( this, SwFormatTablePage, UpDownLoseFocusHdl );
     149           0 :     m_pTopMF->SetUpHdl( aLk );
     150           0 :     m_pBottomMF->SetUpHdl( aLk );
     151           0 :     m_aRightMF.SetUpHdl( aLk );
     152           0 :     m_aLeftMF.SetUpHdl( aLk );
     153           0 :     m_aWidthMF.SetUpHdl( aLk );
     154             : 
     155           0 :     m_pTopMF->SetDownHdl( aLk );
     156           0 :     m_pBottomMF->SetDownHdl( aLk );
     157           0 :     m_aRightMF.SetDownHdl( aLk );
     158           0 :     m_aLeftMF.SetDownHdl( aLk );
     159           0 :     m_aWidthMF.SetDownHdl( aLk );
     160             : 
     161           0 :     m_pTopMF->SetLoseFocusHdl( aLk );
     162           0 :     m_pBottomMF->SetLoseFocusHdl( aLk );
     163           0 :     m_aRightMF.SetLoseFocusHdl( aLk );
     164           0 :     m_aLeftMF.SetLoseFocusHdl( aLk );
     165           0 :     m_aWidthMF.SetLoseFocusHdl( aLk );
     166             : 
     167           0 :     m_pRelWidthCB->SetClickHdl(LINK( this, SwFormatTablePage, RelWidthClickHdl ));
     168           0 : }
     169             : 
     170           0 : IMPL_LINK( SwFormatTablePage, RelWidthClickHdl, CheckBox *, pBtn )
     171             : {
     172             :     OSL_ENSURE(pTableData, "table data not available?");
     173           0 :     bool bIsChecked = pBtn->IsChecked();
     174           0 :     sal_Int64 nLeft  = m_aLeftMF.DenormalizePercent(m_aLeftMF.GetValue(FUNIT_TWIP ));
     175           0 :     sal_Int64 nRight = m_aRightMF.DenormalizePercent(m_aRightMF.GetValue(FUNIT_TWIP ));
     176           0 :     m_aWidthMF.ShowPercent(bIsChecked);
     177           0 :     m_aLeftMF.ShowPercent(bIsChecked);
     178           0 :     m_aRightMF.ShowPercent(bIsChecked);
     179             : 
     180           0 :     if (bIsChecked)
     181             :     {
     182           0 :         m_aWidthMF.SetRefValue(pTableData->GetSpace());
     183           0 :         m_aLeftMF.SetRefValue(pTableData->GetSpace());
     184           0 :         m_aRightMF.SetRefValue(pTableData->GetSpace());
     185           0 :         m_aLeftMF.SetMetricFieldMin(0); //will be overwritten by the Percentfield
     186           0 :         m_aRightMF.SetMetricFieldMin(0); //dito
     187           0 :         m_aLeftMF.SetMetricFieldMax(99);
     188           0 :         m_aRightMF.SetMetricFieldMax(99);
     189           0 :         m_aLeftMF.SetPrcntValue(m_aLeftMF.NormalizePercent(nLeft ), FUNIT_TWIP );
     190           0 :         m_aRightMF.SetPrcntValue(m_aRightMF.NormalizePercent(nRight ), FUNIT_TWIP );
     191             :     }
     192             :     else
     193           0 :         ModifyHdl(m_aLeftMF.get());    //correct values again
     194             : 
     195           0 :     if(m_pFreeBtn->IsChecked())
     196             :     {
     197           0 :         bool bEnable = !pBtn->IsChecked();
     198           0 :         m_aRightMF.Enable(bEnable);
     199           0 :         m_pRightFT->Enable(bEnable);
     200             :     }
     201           0 :     bModified = true;
     202             : 
     203           0 :     return 0;
     204             : }
     205             : 
     206           0 : IMPL_LINK( SwFormatTablePage, AutoClickHdl, void *, pControl )
     207             : {
     208           0 :     bool bRestore = true,
     209           0 :          bLeftEnable = false,
     210           0 :          bRightEnable= false,
     211           0 :          bWidthEnable= false,
     212           0 :          bOthers = true;
     213           0 :     if (pControl == m_pFullBtn)
     214             :     {
     215           0 :         m_aLeftMF.SetPrcntValue(0);
     216           0 :         m_aRightMF.SetPrcntValue(0);
     217           0 :         nSaveWidth = static_cast< SwTwips >(m_aWidthMF.DenormalizePercent(m_aWidthMF.GetValue(FUNIT_TWIP )));
     218           0 :         m_aWidthMF.SetPrcntValue(m_aWidthMF.NormalizePercent(pTableData->GetSpace() ), FUNIT_TWIP );
     219           0 :         bFull = true;
     220           0 :         bRestore = false;
     221             :     }
     222           0 :     else if (pControl == m_pLeftBtn)
     223             :     {
     224           0 :         bRightEnable = bWidthEnable = true;
     225           0 :         m_aLeftMF.SetPrcntValue(0);
     226             :     }
     227           0 :     else if (pControl == m_pFromLeftBtn)
     228             :     {
     229           0 :         bLeftEnable = bWidthEnable = true;
     230           0 :         m_aRightMF.SetPrcntValue(0);
     231             :     }
     232           0 :     else if (pControl == m_pRightBtn)
     233             :     {
     234           0 :         bLeftEnable = bWidthEnable = true;
     235           0 :         m_aRightMF.SetPrcntValue(0);
     236             :     }
     237           0 :     else if (pControl == m_pCenterBtn)
     238             :     {
     239           0 :         bLeftEnable = bWidthEnable = true;
     240             :     }
     241           0 :     else if (pControl == m_pFreeBtn)
     242             :     {
     243           0 :         RightModify();
     244           0 :         bLeftEnable = true;
     245           0 :         bWidthEnable = true;
     246           0 :         bOthers = false;
     247             :     }
     248           0 :     m_aLeftMF.Enable(bLeftEnable);
     249           0 :     m_pLeftFT->Enable(bLeftEnable);
     250           0 :     m_aWidthMF.Enable(bWidthEnable);
     251           0 :     m_pWidthFT->Enable(bWidthEnable);
     252           0 :     if ( bOthers )
     253             :     {
     254           0 :         m_aRightMF.Enable(bRightEnable);
     255           0 :         m_pRightFT->Enable(bRightEnable);
     256           0 :         m_pRelWidthCB->Enable(bWidthEnable);
     257             :     }
     258             : 
     259           0 :     if(bFull && bRestore)
     260             :     {
     261             :         //After being switched on automatic, the width was pinned
     262             :         //in order to restore the width while switching back to.
     263           0 :         bFull = false;
     264           0 :         m_aWidthMF.SetPrcntValue(m_aWidthMF.NormalizePercent(nSaveWidth ), FUNIT_TWIP );
     265             :     }
     266           0 :     ModifyHdl(m_aWidthMF.get());
     267           0 :     bModified = true;
     268           0 :     return 0;
     269             : }
     270             : 
     271           0 : void SwFormatTablePage::RightModify()
     272             : {
     273           0 :     if(m_pFreeBtn->IsChecked())
     274             :     {
     275           0 :         bool bEnable = m_aRightMF.GetValue() == 0;
     276           0 :         m_pRelWidthCB->Enable(bEnable);
     277           0 :         if ( !bEnable )
     278             :         {
     279           0 :             m_pRelWidthCB->Check(false);
     280           0 :             RelWidthClickHdl(m_pRelWidthCB);
     281             :         }
     282           0 :         bEnable = m_pRelWidthCB->IsChecked();
     283           0 :         m_aRightMF.Enable(!bEnable);
     284           0 :         m_pRightFT->Enable(!bEnable);
     285             :     }
     286           0 : }
     287             : 
     288           0 : IMPL_LINK( SwFormatTablePage, UpDownLoseFocusHdl, MetricField *, pEdit )
     289             : {
     290           0 :     if( m_aRightMF.get() == pEdit)
     291           0 :         RightModify();
     292           0 :     ModifyHdl( pEdit );
     293           0 :     return 0;
     294             : }
     295             : 
     296           0 : void  SwFormatTablePage::ModifyHdl(const Edit * pEdit)
     297             : {
     298             : 
     299           0 :     SwTwips nCurWidth  = static_cast< SwTwips >(m_aWidthMF.DenormalizePercent(m_aWidthMF.GetValue( FUNIT_TWIP )));
     300           0 :     SwTwips nPrevWidth = nCurWidth;
     301           0 :     SwTwips nRight = static_cast< SwTwips >(m_aRightMF.DenormalizePercent(m_aRightMF.GetValue( FUNIT_TWIP )));
     302           0 :     SwTwips nLeft  = static_cast< SwTwips >(m_aLeftMF.DenormalizePercent(m_aLeftMF.GetValue( FUNIT_TWIP )));
     303             :     SwTwips nDiff;
     304             : 
     305           0 :     if (pEdit == m_aWidthMF.get())
     306             :     {
     307           0 :         if( nCurWidth < MINLAY )
     308           0 :             nCurWidth = MINLAY;
     309           0 :         nDiff = nRight + nLeft + nCurWidth - pTableData->GetSpace() ;
     310             :         //right aligned: only change the left margin
     311           0 :         if(m_pRightBtn->IsChecked())
     312           0 :             nLeft -= nDiff;
     313             :         //left aligned: only change the right margin
     314           0 :         else if(m_pLeftBtn->IsChecked())
     315           0 :             nRight -= nDiff;
     316             :         //left margin and width allowed - first right - then left
     317           0 :         else if(m_pFromLeftBtn->IsChecked())
     318             :         {
     319           0 :             if( nRight >= nDiff )
     320           0 :                 nRight -= nDiff;
     321             :             else
     322             :             {
     323           0 :                 nDiff -= nRight;
     324           0 :                 nRight = 0;
     325           0 :                 if(nLeft >= nDiff)
     326           0 :                     nLeft -= nDiff;
     327             :                 else
     328             :                 {
     329           0 :                     nRight += nLeft - nDiff;
     330           0 :                     nLeft = 0;
     331           0 :                     nCurWidth = pTableData->GetSpace();
     332             :                 }
     333             : 
     334             :             }
     335             :         }
     336             :         //centered: change both sides equally
     337           0 :         else if(m_pCenterBtn->IsChecked())
     338             :         {
     339           0 :             if((nLeft != nRight))
     340             :             {
     341           0 :                 nDiff += nLeft + nRight;
     342           0 :                 nLeft = nDiff/2;
     343           0 :                 nRight = nDiff/2;
     344             :             }
     345             :             else
     346             :             {
     347           0 :                     nLeft -= nDiff/2;
     348           0 :                     nRight -= nDiff/2;
     349             :             }
     350             :         }
     351             :         //free alignment: decrease both margins
     352           0 :         else if(m_pFreeBtn->IsChecked())
     353             :         {
     354           0 :             nLeft -= nDiff/2;
     355           0 :             nRight -= nDiff/2;
     356             :         }
     357             :     }
     358           0 :     if (pEdit == m_aRightMF.get())
     359             :     {
     360             : 
     361           0 :         if( nRight + nLeft > pTableData->GetSpace() - MINLAY )
     362           0 :             nRight = pTableData->GetSpace() -nLeft - MINLAY;
     363             : 
     364           0 :         nCurWidth = pTableData->GetSpace() - nLeft - nRight;
     365             :     }
     366           0 :     if (pEdit == m_aLeftMF.get())
     367             :     {
     368           0 :         if(!m_pFromLeftBtn->IsChecked())
     369             :         {
     370           0 :             bool bCenter = m_pCenterBtn->IsChecked();
     371           0 :             if( bCenter )
     372           0 :                 nRight = nLeft;
     373           0 :             if(nRight + nLeft > pTableData->GetSpace() - MINLAY )
     374             :             {
     375           0 :                 nLeft  = bCenter ?  (pTableData->GetSpace() - MINLAY) /2 :
     376           0 :                                     (pTableData->GetSpace() - MINLAY) - nRight;
     377           0 :                 nRight = bCenter ?  (pTableData->GetSpace() - MINLAY) /2 : nRight;
     378             :             }
     379           0 :             nCurWidth = pTableData->GetSpace() - nLeft - nRight;
     380             :         }
     381             :         else
     382             :         {
     383             :             //Upon changes on the left side the right margin will be changed at first,
     384             :             //thereafter the width.
     385           0 :             nDiff = nRight + nLeft + nCurWidth - pTableData->GetSpace() ;
     386             : 
     387           0 :             nRight -= nDiff;
     388           0 :             nCurWidth = pTableData->GetSpace() - nLeft - nRight;
     389             :         }
     390             :     }
     391           0 :     if (nCurWidth != nPrevWidth )
     392           0 :         m_aWidthMF.SetPrcntValue( m_aWidthMF.NormalizePercent( nCurWidth ), FUNIT_TWIP );
     393           0 :     m_aRightMF.SetPrcntValue( m_aRightMF.NormalizePercent( nRight ), FUNIT_TWIP );
     394           0 :     m_aLeftMF.SetPrcntValue( m_aLeftMF.NormalizePercent( nLeft ), FUNIT_TWIP );
     395           0 :     bModified = true;
     396           0 : }
     397             : 
     398           0 : VclPtr<SfxTabPage> SwFormatTablePage::Create( vcl::Window* pParent,
     399             :                                               const SfxItemSet* rAttrSet)
     400             : {
     401           0 :     return VclPtr<SwFormatTablePage>::Create( pParent, *rAttrSet );
     402             : }
     403             : 
     404           0 : bool  SwFormatTablePage::FillItemSet( SfxItemSet* rCoreSet )
     405             : {
     406             :     //Test if one of the controls still has the focus
     407           0 :     if (m_aWidthMF.HasFocus())
     408           0 :         ModifyHdl(m_aWidthMF.get());
     409           0 :     else if (m_aLeftMF.HasFocus())
     410           0 :         ModifyHdl(m_aLeftMF.get());
     411           0 :     else if(m_aRightMF.HasFocus())
     412           0 :         ModifyHdl(m_aRightMF.get());
     413           0 :     else if(m_pTopMF->HasFocus())
     414           0 :         ModifyHdl(m_pTopMF);
     415           0 :     else if(m_pBottomMF->HasFocus())
     416           0 :         ModifyHdl(m_pBottomMF);
     417             : 
     418           0 :     if(bModified)
     419             :     {
     420           0 :         if( m_pBottomMF->IsValueChangedFromSaved() ||
     421           0 :             m_pTopMF->IsValueChangedFromSaved() )
     422             :         {
     423           0 :             SvxULSpaceItem aULSpace(RES_UL_SPACE);
     424           0 :             aULSpace.SetUpper( m_pTopMF->Denormalize(m_pTopMF->GetValue( FUNIT_TWIP )));
     425           0 :             aULSpace.SetLower( m_pBottomMF->Denormalize(m_pBottomMF->GetValue( FUNIT_TWIP )));
     426           0 :             rCoreSet->Put(aULSpace);
     427             :         }
     428             : 
     429             :     }
     430           0 :     if(m_pNameED->IsValueChangedFromSaved())
     431             :     {
     432           0 :         rCoreSet->Put(SfxStringItem( FN_PARAM_TABLE_NAME, m_pNameED->GetText()));
     433           0 :         bModified = true;
     434             :     }
     435             : 
     436           0 :     if( m_pTextDirectionLB->IsVisible() )
     437             :     {
     438           0 :         const sal_Int32 nPos = m_pTextDirectionLB->GetSelectEntryPos();
     439           0 :         if ( m_pTextDirectionLB->IsValueChangedFromSaved() )
     440             :         {
     441             :             const sal_uInt32 nDirection =
     442           0 :                              (sal_uInt32)reinterpret_cast<sal_uIntPtr>(m_pTextDirectionLB->GetEntryData( nPos ));
     443           0 :             rCoreSet->Put( SvxFrameDirectionItem( (SvxFrameDirection)nDirection, RES_FRAMEDIR));
     444           0 :             bModified = true;
     445             :         }
     446             :     }
     447             : 
     448           0 :     return bModified;
     449             : }
     450             : 
     451           0 : void  SwFormatTablePage::Reset( const SfxItemSet* )
     452             : {
     453           0 :     const SfxItemSet& rSet = GetItemSet();
     454             :     const SfxPoolItem*  pItem;
     455             : 
     456           0 :     if(bHtmlMode)
     457             :     {
     458           0 :         m_pNameED->Disable();
     459           0 :         m_pTopFT->Hide();
     460           0 :         m_pTopMF->Hide();
     461           0 :         m_pBottomFT->Hide();
     462           0 :         m_pBottomMF->Hide();
     463           0 :         m_pFreeBtn->Enable(false);
     464             :     }
     465           0 :     FieldUnit aMetric = ::GetDfltMetric(bHtmlMode);
     466           0 :     m_aWidthMF.SetMetric(aMetric);
     467           0 :     m_aRightMF.SetMetric(aMetric);
     468           0 :     m_aLeftMF.SetMetric(aMetric);
     469           0 :     SetMetric(*m_pTopMF, aMetric);
     470           0 :     SetMetric(*m_pBottomMF, aMetric);
     471             : 
     472             :     //Name
     473           0 :     if(SfxItemState::SET == rSet.GetItemState( FN_PARAM_TABLE_NAME, false, &pItem ))
     474             :     {
     475           0 :         m_pNameED->SetText(static_cast<const SfxStringItem*>(pItem)->GetValue());
     476           0 :         m_pNameED->SaveValue();
     477             :     }
     478             : 
     479           0 :     if(SfxItemState::SET == rSet.GetItemState( FN_TABLE_REP, false, &pItem ))
     480             :     {
     481           0 :         pTableData = static_cast<SwTableRep*>(static_cast<const SwPtrItem*>( pItem)->GetValue());
     482           0 :         nMinTableWidth = pTableData->GetColCount() * MINLAY;
     483             : 
     484           0 :         if(pTableData->GetWidthPercent())
     485             :         {
     486           0 :             m_pRelWidthCB->Check(true);
     487           0 :             RelWidthClickHdl(m_pRelWidthCB);
     488           0 :             m_aWidthMF.SetPrcntValue(pTableData->GetWidthPercent(), FUNIT_CUSTOM);
     489             : 
     490           0 :             m_aWidthMF.SaveValue();
     491           0 :             nSaveWidth = static_cast< SwTwips >(m_aWidthMF.GetValue(FUNIT_CUSTOM));
     492             :         }
     493             :         else
     494             :         {
     495             :             m_aWidthMF.SetPrcntValue(m_aWidthMF.NormalizePercent(
     496           0 :                     pTableData->GetWidth()), FUNIT_TWIP);
     497           0 :             m_aWidthMF.SaveValue();
     498           0 :             nSaveWidth = pTableData->GetWidth();
     499           0 :             nMinTableWidth = std::min( nSaveWidth, nMinTableWidth );
     500             :         }
     501             : 
     502           0 :         m_aWidthMF.SetRefValue(pTableData->GetSpace());
     503           0 :         m_aWidthMF.SetLast(m_aWidthMF.NormalizePercent( pTableData->GetSpace() ));
     504           0 :         m_aLeftMF.SetLast(m_aLeftMF.NormalizePercent( pTableData->GetSpace() ));
     505           0 :         m_aRightMF.SetLast(m_aRightMF.NormalizePercent( pTableData->GetSpace() ));
     506             : 
     507             :         m_aLeftMF.SetPrcntValue(m_aLeftMF.NormalizePercent(
     508           0 :                     pTableData->GetLeftSpace()), FUNIT_TWIP);
     509             :         m_aRightMF.SetPrcntValue(m_aRightMF.NormalizePercent(
     510           0 :                     pTableData->GetRightSpace()), FUNIT_TWIP);
     511           0 :         m_aLeftMF.SaveValue();
     512           0 :         m_aRightMF.SaveValue();
     513             : 
     514           0 :         bool bSetRight = false, bSetLeft = false;
     515           0 :         switch( pTableData->GetAlign() )
     516             :         {
     517             :             case text::HoriOrientation::NONE:
     518           0 :                 m_pFreeBtn->Check();
     519           0 :                 if(m_pRelWidthCB->IsChecked())
     520           0 :                     bSetRight = true;
     521           0 :             break;
     522             :             case text::HoriOrientation::FULL:
     523             :             {
     524           0 :                 bSetRight = bSetLeft = true;
     525           0 :                 m_pFullBtn->Check();
     526           0 :                 m_aWidthMF.Enable(false);
     527           0 :                 m_pRelWidthCB->Enable(false);
     528           0 :                 m_pWidthFT->Enable(false);
     529             :             }
     530           0 :             break;
     531             :             case text::HoriOrientation::LEFT:
     532             :             {
     533           0 :                 bSetLeft = true;
     534           0 :                 m_pLeftBtn->Check();
     535             :             }
     536           0 :             break;
     537             :             case text::HoriOrientation::LEFT_AND_WIDTH :
     538             :             {
     539           0 :                 bSetRight = true;
     540           0 :                 m_pFromLeftBtn->Check();
     541             :             }
     542           0 :             break;
     543             :             case text::HoriOrientation::RIGHT:
     544             :             {
     545           0 :                 bSetRight = true;
     546           0 :                 m_pRightBtn->Check();
     547             :             }
     548           0 :             break;
     549             :             case text::HoriOrientation::CENTER:
     550             :             {
     551           0 :                 bSetRight = true;
     552           0 :                 m_pCenterBtn->Check();
     553             :             }
     554           0 :             break;
     555             :         }
     556           0 :         if ( bSetRight )
     557             :         {
     558           0 :             m_aRightMF.Enable(false);
     559           0 :             m_pRightFT->Enable(false);
     560             :         }
     561           0 :         if ( bSetLeft )
     562             :         {
     563           0 :             m_aLeftMF.Enable(false);
     564           0 :             m_pLeftFT->Enable(false);
     565             :         }
     566             : 
     567             :     }
     568             : 
     569             :     //Margins
     570           0 :     if(SfxItemState::SET == rSet.GetItemState( RES_UL_SPACE, false,&pItem ))
     571             :     {
     572           0 :         m_pTopMF->SetValue(m_pTopMF->Normalize(
     573           0 :                         static_cast<const SvxULSpaceItem*>(pItem)->GetUpper()), FUNIT_TWIP);
     574           0 :         m_pBottomMF->SetValue(m_pBottomMF->Normalize(
     575           0 :                         static_cast<const SvxULSpaceItem*>(pItem)->GetLower()), FUNIT_TWIP);
     576           0 :         m_pTopMF->SaveValue();
     577           0 :         m_pBottomMF->SaveValue();
     578             :     }
     579             : 
     580             :     //Text direction
     581           0 :     if( SfxItemState::SET == rSet.GetItemState( RES_FRAMEDIR, true, &pItem ) )
     582             :     {
     583           0 :         sal_uIntPtr nVal  = static_cast<const SvxFrameDirectionItem*>(pItem)->GetValue();
     584           0 :         const sal_Int32 nPos = m_pTextDirectionLB->GetEntryPos( reinterpret_cast<void*>(nVal) );
     585           0 :         m_pTextDirectionLB->SelectEntryPos( nPos );
     586           0 :         m_pTextDirectionLB->SaveValue();
     587             :     }
     588             : 
     589           0 :     m_aWidthMF.SetMax( 2*m_aWidthMF.NormalizePercent( pTableData->GetSpace() ), FUNIT_TWIP );
     590           0 :     m_aRightMF.SetMax( m_aRightMF.NormalizePercent( pTableData->GetSpace() ), FUNIT_TWIP );
     591           0 :     m_aLeftMF.SetMax( m_aLeftMF.NormalizePercent( pTableData->GetSpace() ), FUNIT_TWIP );
     592           0 :     m_aWidthMF.SetMin( m_aWidthMF.NormalizePercent( nMinTableWidth ), FUNIT_TWIP );
     593             : 
     594           0 : }
     595             : 
     596           0 : void    SwFormatTablePage::ActivatePage( const SfxItemSet& rSet )
     597             : {
     598             :     OSL_ENSURE(pTableData, "table data not available?");
     599           0 :     if(SfxItemState::SET == rSet.GetItemState( FN_TABLE_REP ))
     600             :     {
     601           0 :         SwTwips nCurWidth = text::HoriOrientation::FULL != pTableData->GetAlign() ?
     602           0 :                                         pTableData->GetWidth() :
     603           0 :                                             pTableData->GetSpace();
     604           0 :         if(pTableData->GetWidthPercent() == 0 &&
     605           0 :                 nCurWidth != m_aWidthMF.DenormalizePercent(m_aWidthMF.GetValue(FUNIT_TWIP )))
     606             :         {
     607             :             m_aWidthMF.SetPrcntValue(m_aWidthMF.NormalizePercent(
     608           0 :                             nCurWidth), FUNIT_TWIP);
     609           0 :             m_aWidthMF.SaveValue();
     610           0 :             nSaveWidth = nCurWidth;
     611             :             m_aLeftMF.SetPrcntValue(m_aLeftMF.NormalizePercent(
     612           0 :                             pTableData->GetLeftSpace()), FUNIT_TWIP);
     613           0 :             m_aLeftMF.SaveValue();
     614             :             m_aRightMF.SetPrcntValue(m_aRightMF.NormalizePercent(
     615           0 :                             pTableData->GetRightSpace()), FUNIT_TWIP);
     616           0 :             m_aRightMF.SaveValue();
     617             :         }
     618             :     }
     619             : 
     620           0 : }
     621             : 
     622           0 : SfxTabPage::sfxpg SwFormatTablePage::DeactivatePage( SfxItemSet* _pSet )
     623             : {
     624             :     //os: VCL doesn't take care of making the active widget
     625             :     //in the dialog lose the focus
     626           0 :     m_pNameED->GrabFocus();
     627             :     //test the table name for spaces
     628           0 :     OUString sTableName = m_pNameED->GetText();
     629           0 :     if(sTableName.indexOf(' ') != -1)
     630             :     {
     631           0 :         ScopedVclPtrInstance<MessageDialog>::Create(this, SW_RES(STR_WRONG_TABLENAME), VCL_MESSAGE_INFO)->Execute();
     632           0 :         m_pNameED->GrabFocus();
     633           0 :         return KEEP_PAGE;
     634             :     }
     635           0 :     if(_pSet)
     636             :     {
     637           0 :         FillItemSet(_pSet);
     638           0 :         if(bModified)
     639             :         {
     640           0 :             SwTwips lLeft  = static_cast< SwTwips >(m_aLeftMF.DenormalizePercent(m_aLeftMF.GetValue( FUNIT_TWIP )));
     641           0 :             SwTwips lRight = static_cast< SwTwips >(m_aRightMF.DenormalizePercent(m_aRightMF.GetValue( FUNIT_TWIP )));
     642             : 
     643           0 :             if( m_aLeftMF.GetText() != m_aLeftMF.GetSavedValue() ||
     644           0 :                 m_aRightMF.GetText() != m_aRightMF.GetSavedValue() )
     645             :             {
     646           0 :                 pTableData->SetWidthChanged();
     647           0 :                 pTableData->SetLeftSpace( lLeft);
     648           0 :                 pTableData->SetRightSpace( lRight);
     649             :             }
     650             : 
     651             :             SwTwips lWidth;
     652           0 :             if (m_pRelWidthCB->IsChecked() && m_pRelWidthCB->IsEnabled())
     653             :             {
     654           0 :                 lWidth = pTableData->GetSpace() - lRight - lLeft;
     655           0 :                 const sal_uInt16 nPercentWidth = m_aWidthMF.GetValue(FUNIT_CUSTOM);
     656           0 :                 if(pTableData->GetWidthPercent() != nPercentWidth)
     657             :                 {
     658           0 :                     pTableData->SetWidthPercent(nPercentWidth);
     659           0 :                     pTableData->SetWidthChanged();
     660             :                 }
     661             :             }
     662             :             else
     663             :             {
     664           0 :                 pTableData->SetWidthPercent(0);
     665           0 :                 lWidth = static_cast< SwTwips >(m_aWidthMF.DenormalizePercent(m_aWidthMF.GetValue( FUNIT_TWIP )));
     666             :             }
     667           0 :             pTableData->SetWidth(lWidth);
     668             : 
     669           0 :             SwTwips nColSum = 0;
     670             : 
     671           0 :             for( sal_uInt16 i = 0; i < pTableData->GetColCount(); i++)
     672             :             {
     673           0 :                 nColSum += pTableData->GetColumns()[i].nWidth;
     674             :             }
     675           0 :             if(nColSum != pTableData->GetWidth())
     676             :             {
     677             :                 SwTwips nMinWidth = std::min( (long)MINLAY,
     678           0 :                                     (long) (pTableData->GetWidth() /
     679           0 :                                             pTableData->GetColCount() - 1));
     680           0 :                 SwTwips nDiff = nColSum - pTableData->GetWidth();
     681           0 :                 while ( std::abs(nDiff) > pTableData->GetColCount() + 1 )
     682             :                 {
     683           0 :                     SwTwips nSub = nDiff / pTableData->GetColCount();
     684           0 :                     for( sal_uInt16 i = 0; i < pTableData->GetColCount(); i++)
     685             :                     {
     686           0 :                         if(pTableData->GetColumns()[i].nWidth - nMinWidth > nSub)
     687             :                         {
     688           0 :                             pTableData->GetColumns()[i].nWidth -= nSub;
     689           0 :                             nDiff -= nSub;
     690             :                         }
     691             :                         else
     692             :                         {
     693           0 :                             nDiff -= pTableData->GetColumns()[i].nWidth - nMinWidth;
     694           0 :                             pTableData->GetColumns()[i].nWidth = nMinWidth;
     695             :                         }
     696             : 
     697             :                     }
     698             :                 }
     699             :             }
     700             : 
     701           0 :             sal_Int16 nAlign = 0;
     702           0 :             if(m_pRightBtn->IsChecked())
     703           0 :                 nAlign = text::HoriOrientation::RIGHT;
     704           0 :             else if(m_pLeftBtn->IsChecked())
     705           0 :                 nAlign = text::HoriOrientation::LEFT;
     706           0 :             else if(m_pFromLeftBtn->IsChecked())
     707           0 :                 nAlign = text::HoriOrientation::LEFT_AND_WIDTH;
     708           0 :             else if(m_pCenterBtn->IsChecked())
     709           0 :                 nAlign = text::HoriOrientation::CENTER;
     710           0 :             else if(m_pFreeBtn->IsChecked())
     711           0 :                 nAlign = text::HoriOrientation::NONE;
     712           0 :             else if(m_pFullBtn->IsChecked())
     713             :             {
     714           0 :                 nAlign = text::HoriOrientation::FULL;
     715           0 :                 lWidth = lAutoWidth;
     716             :             }
     717           0 :             if(nAlign != pTableData->GetAlign())
     718             :             {
     719           0 :                 pTableData->SetWidthChanged();
     720           0 :                 pTableData->SetAlign(nAlign);
     721             :             }
     722             : 
     723           0 :             if(pTableData->GetWidth() != lWidth )
     724             :             {
     725           0 :                 pTableData->SetWidthChanged();
     726             :                 pTableData->SetWidth(
     727           0 :                     nAlign == text::HoriOrientation::FULL ? pTableData->GetSpace() : lWidth );
     728             :             }
     729           0 :             if(pTableData->HasWidthChanged())
     730           0 :                 _pSet->Put(SwPtrItem(FN_TABLE_REP, pTableData));
     731             :         }
     732             :     }
     733           0 :     return LEAVE_PAGE;
     734             : }
     735             : 
     736             : //Description: Page column configuration
     737           0 : SwTableColumnPage::SwTableColumnPage(vcl::Window* pParent, const SfxItemSet& rSet)
     738             :     : SfxTabPage(pParent, "TableColumnPage",
     739             :         "modules/swriter/ui/tablecolumnpage.ui", &rSet)
     740             :     , pTableData(0)
     741             :     , nTableWidth(0)
     742             :     , nMinWidth(MINLAY)
     743             :     , nNoOfCols(0)
     744             :     , nNoOfVisibleCols(0)
     745             :     , bModified(false)
     746             :     , bModifyTable(false)
     747           0 :     , bPercentMode(false)
     748             : {
     749           0 :     get(m_pModifyTableCB, "adaptwidth");
     750           0 :     get(m_pProportionalCB, "adaptcolumns");
     751           0 :     get(m_pSpaceFT, "spaceft");
     752           0 :     get(m_pSpaceED, "space-nospin");
     753           0 :     get(m_pUpBtn, "next");
     754           0 :     get(m_pDownBtn, "back");
     755             : 
     756           0 :     m_aFieldArr[0].set(get<MetricField>("width1"));
     757           0 :     m_aFieldArr[1].set(get<MetricField>("width2"));
     758           0 :     m_aFieldArr[2].set(get<MetricField>("width3"));
     759           0 :     m_aFieldArr[3].set(get<MetricField>("width4"));
     760           0 :     m_aFieldArr[4].set(get<MetricField>("width5"));
     761           0 :     m_aFieldArr[5].set(get<MetricField>("width6"));
     762             : 
     763           0 :     m_pTextArr[0] = get<FixedText>("1");
     764           0 :     m_pTextArr[1] = get<FixedText>("2");
     765           0 :     m_pTextArr[2] = get<FixedText>("3");
     766           0 :     m_pTextArr[3] = get<FixedText>("4");
     767           0 :     m_pTextArr[4] = get<FixedText>("5");
     768           0 :     m_pTextArr[5] = get<FixedText>("6");
     769             : 
     770           0 :     SetExchangeSupport();
     771             : 
     772             :     const SfxPoolItem* pItem;
     773           0 :     Init((SfxItemState::SET == rSet.GetItemState( SID_HTML_MODE, false,&pItem )
     774           0 :         && static_cast<const SfxUInt16Item*>(pItem)->GetValue() & HTMLMODE_ON));
     775           0 : }
     776             : 
     777           0 : SwTableColumnPage::~SwTableColumnPage()
     778             : {
     779           0 :     disposeOnce();
     780           0 : }
     781             : 
     782           0 : void SwTableColumnPage::dispose()
     783             : {
     784           0 :     m_pModifyTableCB.clear();
     785           0 :     m_pProportionalCB.clear();
     786           0 :     m_pSpaceFT.clear();
     787           0 :     m_pSpaceED.clear();
     788           0 :     m_pUpBtn.clear();
     789           0 :     m_pDownBtn.clear();
     790           0 :     for (auto p : m_pTextArr)
     791           0 :         p.clear();
     792           0 :     SfxTabPage::dispose();
     793           0 : }
     794             : 
     795           0 : VclPtr<SfxTabPage> SwTableColumnPage::Create( vcl::Window* pParent,
     796             :                                               const SfxItemSet* rAttrSet)
     797             : {
     798           0 :     return VclPtr<SwTableColumnPage>::Create( pParent, *rAttrSet );
     799             : }
     800             : 
     801           0 : void  SwTableColumnPage::Reset( const SfxItemSet* )
     802             : {
     803           0 :     const SfxItemSet& rSet = GetItemSet();
     804             : 
     805             :     const SfxPoolItem* pItem;
     806           0 :     if(SfxItemState::SET == rSet.GetItemState( FN_TABLE_REP, false, &pItem ))
     807             :     {
     808           0 :         pTableData = static_cast<SwTableRep*>(static_cast<const SwPtrItem*>( pItem)->GetValue());
     809           0 :         nNoOfVisibleCols = pTableData->GetColCount();
     810           0 :         nNoOfCols = pTableData->GetAllColCount();
     811           0 :         nTableWidth = pTableData->GetAlign() != text::HoriOrientation::FULL &&
     812           0 :                             pTableData->GetAlign() != text::HoriOrientation::LEFT_AND_WIDTH?
     813           0 :                         pTableData->GetWidth() : pTableData->GetSpace();
     814             : 
     815           0 :         for( sal_uInt16 i = 0; i < nNoOfCols; i++ )
     816             :         {
     817           0 :             if( pTableData->GetColumns()[i].nWidth  < nMinWidth )
     818           0 :                     nMinWidth = pTableData->GetColumns()[i].nWidth;
     819             :         }
     820           0 :         sal_Int64 nMinTwips = m_aFieldArr[0].NormalizePercent( nMinWidth );
     821           0 :         sal_Int64 nMaxTwips = m_aFieldArr[0].NormalizePercent( nTableWidth );
     822           0 :         for( sal_uInt16 i = 0; (i < MET_FIELDS) && (i < nNoOfVisibleCols); i++ )
     823             :         {
     824           0 :             m_aFieldArr[i].SetPrcntValue( m_aFieldArr[i].NormalizePercent(
     825           0 :                                                 GetVisibleWidth(i) ), FUNIT_TWIP );
     826           0 :             m_aFieldArr[i].SetMin( nMinTwips , FUNIT_TWIP );
     827           0 :             m_aFieldArr[i].SetMax( nMaxTwips , FUNIT_TWIP );
     828           0 :             m_aFieldArr[i].Enable();
     829           0 :             m_pTextArr[i]->Enable();
     830             :         }
     831             : 
     832           0 :         if( nNoOfVisibleCols > MET_FIELDS )
     833           0 :             m_pUpBtn->Enable();
     834             : 
     835           0 :         for( sal_uInt16 i = nNoOfVisibleCols; i < MET_FIELDS; ++i )
     836             :         {
     837           0 :             m_aFieldArr[i].SetText( OUString() );
     838           0 :             m_pTextArr[i]->Disable();
     839             :         }
     840             :     }
     841           0 :     ActivatePage(rSet);
     842             : 
     843           0 : }
     844             : 
     845           0 : void  SwTableColumnPage::Init(bool bWeb)
     846             : {
     847           0 :     FieldUnit aMetric = ::GetDfltMetric(bWeb);
     848           0 :     Link<> aLkUp = LINK( this, SwTableColumnPage, UpHdl );
     849           0 :     Link<> aLkDown = LINK( this, SwTableColumnPage, DownHdl );
     850           0 :     Link<> aLkLF = LINK( this, SwTableColumnPage, LoseFocusHdl );
     851           0 :     for( sal_uInt16 i = 0; i < MET_FIELDS; i++ )
     852             :     {
     853           0 :         aValueTable[i] = i;
     854           0 :         m_aFieldArr[i].SetMetric(aMetric);
     855           0 :         m_aFieldArr[i].SetUpHdl( aLkUp );
     856           0 :         m_aFieldArr[i].SetDownHdl( aLkDown );
     857           0 :         m_aFieldArr[i].SetLoseFocusHdl( aLkLF );
     858             :     }
     859           0 :     SetMetric(*m_pSpaceED, aMetric);
     860             : 
     861           0 :     Link<> aLk = LINK( this, SwTableColumnPage, AutoClickHdl );
     862           0 :     m_pUpBtn->SetClickHdl( aLk );
     863           0 :     m_pDownBtn->SetClickHdl( aLk );
     864             : 
     865           0 :     aLk = LINK( this, SwTableColumnPage, ModeHdl );
     866           0 :     m_pModifyTableCB->SetClickHdl( aLk );
     867           0 :     m_pProportionalCB->SetClickHdl( aLk );
     868           0 : }
     869             : 
     870           0 : IMPL_LINK( SwTableColumnPage, AutoClickHdl, void *, pControl )
     871             : {
     872             :     //move display window
     873           0 :     if(pControl == m_pDownBtn.get())
     874             :     {
     875           0 :         if(aValueTable[0] > 0)
     876             :         {
     877           0 :             for( sal_uInt16 i=0; i < MET_FIELDS; i++ )
     878           0 :                 aValueTable[i] -= 1;
     879             :         }
     880             :     }
     881           0 :     if (pControl == m_pUpBtn.get())
     882             :     {
     883           0 :         if( aValueTable[ MET_FIELDS -1 ] < nNoOfVisibleCols -1  )
     884             :         {
     885           0 :             for(sal_uInt16 i=0;i < MET_FIELDS;i++)
     886           0 :                 aValueTable[i] += 1;
     887             :         }
     888             :     }
     889           0 :     for( sal_uInt16 i = 0; (i < nNoOfVisibleCols ) && ( i < MET_FIELDS); i++ )
     890             :     {
     891           0 :         OUString sEntry('~');
     892           0 :         OUString sIndex = OUString::number( aValueTable[i] + 1 );
     893           0 :         sEntry += sIndex;
     894           0 :         m_pTextArr[i]->SetText( sEntry );
     895             : 
     896             :         //added by menghu for SODC_5143,12/12/2006
     897           0 :         OUString sColumnWidth = SW_RESSTR( STR_ACCESS_COLUMN_WIDTH);
     898           0 :         sColumnWidth = sColumnWidth.replaceFirst( "%1", sIndex );
     899           0 :         m_aFieldArr[i].SetAccessibleName( sColumnWidth );
     900           0 :     }
     901             : 
     902           0 :     m_pDownBtn->Enable(aValueTable[0] > 0);
     903           0 :     m_pUpBtn->Enable(aValueTable[ MET_FIELDS -1 ] < nNoOfVisibleCols -1 );
     904           0 :     UpdateCols(0);
     905           0 :     return 0;
     906             : }
     907             : 
     908           0 : IMPL_LINK( SwTableColumnPage, UpHdl, MetricField*, pEdit )
     909             : {
     910           0 :     bModified = true;
     911           0 :     ModifyHdl( pEdit );
     912           0 :     return 0;
     913             : }
     914             : 
     915           0 : IMPL_LINK( SwTableColumnPage, DownHdl, MetricField*, pEdit )
     916             : {
     917           0 :     bModified = true;
     918           0 :     ModifyHdl( pEdit );
     919           0 :     return 0;
     920             : }
     921             : 
     922           0 : IMPL_LINK( SwTableColumnPage, LoseFocusHdl, MetricField*, pEdit )
     923             : {
     924           0 :     if (pEdit->IsModified())
     925             :     {
     926           0 :         bModified = true;
     927           0 :         ModifyHdl( pEdit );
     928             :     }
     929           0 :     return 0;
     930             : }
     931             : 
     932           0 : IMPL_LINK( SwTableColumnPage, ModeHdl, CheckBox*, pBox )
     933             : {
     934           0 :     bool bCheck = pBox->IsChecked();
     935           0 :     if (pBox == m_pProportionalCB)
     936             :     {
     937           0 :         if(bCheck)
     938           0 :             m_pModifyTableCB->Check();
     939           0 :         m_pModifyTableCB->Enable(!bCheck && bModifyTable);
     940             :     }
     941           0 :     return 0;
     942             : }
     943             : 
     944           0 : bool  SwTableColumnPage::FillItemSet( SfxItemSet* )
     945             : {
     946           0 :     for( sal_uInt16 i = 0; i < MET_FIELDS; i++ )
     947             :     {
     948           0 :         if (m_aFieldArr[i].HasFocus())
     949             :         {
     950           0 :             LoseFocusHdl(m_aFieldArr[i].get());
     951           0 :             break;
     952             :         }
     953             :     }
     954             : 
     955           0 :     if(bModified)
     956             :     {
     957           0 :         pTableData->SetColsChanged();
     958             :     }
     959           0 :     return bModified;
     960             : }
     961             : 
     962           0 : void   SwTableColumnPage::ModifyHdl( MetricField* pField )
     963             : {
     964           0 :         PercentField *pEdit = NULL;
     965             :         sal_uInt16 i;
     966             : 
     967           0 :         for( i = 0; i < MET_FIELDS; i++)
     968             :         {
     969           0 :             if (pField == m_aFieldArr[i].get())
     970             :             {
     971           0 :                 pEdit = &m_aFieldArr[i];
     972           0 :                 break;
     973             :             }
     974             :         }
     975             : 
     976           0 :         if (MET_FIELDS <= i || !pEdit)
     977             :         {
     978             :             OSL_ENSURE(false, "cannot happen.");
     979           0 :             return;
     980             :         }
     981             : 
     982           0 :         SetVisibleWidth(aValueTable[i], static_cast< SwTwips >(pEdit->DenormalizePercent(pEdit->GetValue( FUNIT_TWIP ))) );
     983             : 
     984           0 :         UpdateCols( aValueTable[i] );
     985             : }
     986             : 
     987           0 : void SwTableColumnPage::UpdateCols( sal_uInt16 nAktPos )
     988             : {
     989           0 :     SwTwips nSum = 0;
     990             : 
     991           0 :     for( sal_uInt16 i = 0; i < nNoOfCols; i++ )
     992             :     {
     993           0 :         nSum += (pTableData->GetColumns())[i].nWidth;
     994             :     }
     995           0 :     SwTwips nDiff = nSum - nTableWidth;
     996             : 
     997           0 :     bool bModifyTableChecked = m_pModifyTableCB->IsChecked();
     998           0 :     bool bProp =    m_pProportionalCB->IsChecked();
     999             : 
    1000           0 :     if (!bModifyTableChecked && !bProp)
    1001             :     {
    1002             :         //The table width is constant, the difference is balanced with the other columns
    1003           0 :         sal_uInt16 nLoopCount = 0;
    1004           0 :         while( nDiff )
    1005             :         {
    1006           0 :             if( ++nAktPos == nNoOfVisibleCols)
    1007             :             {
    1008           0 :                 nAktPos = 0;
    1009           0 :                 ++nLoopCount;
    1010             :                 //#i101353# in small tables it might not be possible to balance column width
    1011           0 :                 if( nLoopCount > 1 )
    1012           0 :                     break;
    1013             :             }
    1014           0 :             if( nDiff < 0 )
    1015             :             {
    1016           0 :                 SetVisibleWidth(nAktPos, GetVisibleWidth(nAktPos) -nDiff);
    1017           0 :                 nDiff = 0;
    1018             :             }
    1019           0 :             else if( GetVisibleWidth(nAktPos) >= nDiff + nMinWidth )
    1020             :             {
    1021           0 :                 SetVisibleWidth(nAktPos, GetVisibleWidth(nAktPos) -nDiff);
    1022           0 :                 nDiff = 0;
    1023             :             }
    1024           0 :             if( nDiff > 0 && GetVisibleWidth(nAktPos) > nMinWidth )
    1025             :             {
    1026           0 :                 if( nDiff >= (GetVisibleWidth(nAktPos) - nMinWidth) )
    1027             :                 {
    1028           0 :                     nDiff -= (GetVisibleWidth(nAktPos) - nMinWidth);
    1029           0 :                     SetVisibleWidth(nAktPos, nMinWidth);
    1030             :                 }
    1031             :                 else
    1032             :                 {
    1033           0 :                     nDiff = 0;
    1034           0 :                     SetVisibleWidth(nAktPos, GetVisibleWidth(nAktPos) -nDiff);
    1035             :                 }
    1036             :                 OSL_ENSURE(nDiff >= 0, "nDiff < 0 cannot be here!");
    1037             :             }
    1038           0 :         }
    1039             :     }
    1040           0 :     else if (bModifyTableChecked && !bProp)
    1041             :     {
    1042             :         //Difference is balanced by the width of the table,
    1043             :         //other columns remain unchanged.
    1044             :         OSL_ENSURE(nDiff <= pTableData->GetSpace() - nTableWidth, "wrong maximum" );
    1045           0 :         SwTwips nActSpace = pTableData->GetSpace() - nTableWidth;
    1046           0 :         if(nDiff > nActSpace)
    1047             :         {
    1048           0 :             nTableWidth = pTableData->GetSpace();
    1049           0 :             SetVisibleWidth(nAktPos, GetVisibleWidth(nAktPos) - nDiff + nActSpace );
    1050             :         }
    1051             :         else
    1052             :         {
    1053           0 :             nTableWidth += nDiff;
    1054           0 :         }
    1055             :     }
    1056           0 :     else if (bModifyTableChecked && bProp)
    1057             :     {
    1058             :         //All columns will be changed proportionally with,
    1059             :         //the table width is adjusted accordingly.
    1060             :         OSL_ENSURE(nDiff * nNoOfVisibleCols <= pTableData->GetSpace() - nTableWidth, "wrong maximum" );
    1061           0 :         long nAdd = nDiff;
    1062           0 :         if(nDiff * nNoOfVisibleCols > pTableData->GetSpace() - nTableWidth)
    1063             :         {
    1064           0 :             nAdd = (pTableData->GetSpace() - nTableWidth) / nNoOfVisibleCols;
    1065           0 :             SetVisibleWidth(nAktPos, GetVisibleWidth(nAktPos) - nDiff + nAdd );
    1066           0 :             nDiff = nAdd;
    1067             :         }
    1068           0 :         if(nAdd)
    1069           0 :             for( sal_uInt16 i = 0; i < nNoOfVisibleCols; i++ )
    1070             :             {
    1071           0 :                 if(i == nAktPos)
    1072           0 :                     continue;
    1073             :                 SwTwips nVisWidth;
    1074           0 :                 if((nVisWidth = GetVisibleWidth(i)) + nDiff < MINLAY)
    1075             :                 {
    1076           0 :                     nAdd += nVisWidth - MINLAY;
    1077           0 :                     SetVisibleWidth(i, MINLAY);
    1078             :                 }
    1079             :                 else
    1080             :                 {
    1081           0 :                     SetVisibleWidth(i, nVisWidth + nDiff);
    1082           0 :                     nAdd += nDiff;
    1083             :                 }
    1084             : 
    1085             :             }
    1086           0 :         nTableWidth += nAdd;
    1087             :     }
    1088             : 
    1089           0 :     if(!bPercentMode)
    1090           0 :         m_pSpaceED->SetValue(m_pSpaceED->Normalize( pTableData->GetSpace() - nTableWidth) , FUNIT_TWIP);
    1091             : 
    1092           0 :     for( sal_uInt16 i = 0; ( i < nNoOfVisibleCols ) && ( i < MET_FIELDS ); i++)
    1093             :     {
    1094           0 :         m_aFieldArr[i].SetPrcntValue(m_aFieldArr[i].NormalizePercent(
    1095           0 :                         GetVisibleWidth(aValueTable[i]) ), FUNIT_TWIP);
    1096           0 :         m_aFieldArr[i].ClearModifyFlag();
    1097             :     }
    1098           0 : }
    1099             : 
    1100           0 : void    SwTableColumnPage::ActivatePage( const SfxItemSet& )
    1101             : {
    1102           0 :     bPercentMode = pTableData->GetWidthPercent() != 0;
    1103           0 :     for( sal_uInt16 i = 0; (i < MET_FIELDS) && (i < nNoOfVisibleCols); i++ )
    1104             :     {
    1105           0 :         m_aFieldArr[i].SetRefValue(pTableData->GetWidth());
    1106           0 :         m_aFieldArr[i].ShowPercent( bPercentMode );
    1107             :     }
    1108             : 
    1109           0 :     const sal_uInt16 nTableAlign = pTableData->GetAlign();
    1110           0 :     if((text::HoriOrientation::FULL != nTableAlign && nTableWidth != pTableData->GetWidth()) ||
    1111           0 :     (text::HoriOrientation::FULL == nTableAlign && nTableWidth != pTableData->GetSpace()))
    1112             :     {
    1113             :         nTableWidth = text::HoriOrientation::FULL == nTableAlign ?
    1114           0 :                                     pTableData->GetSpace() :
    1115           0 :                                         pTableData->GetWidth();
    1116           0 :         UpdateCols(0);
    1117             :     }
    1118           0 :     bModifyTable = true;
    1119           0 :     if(pTableData->GetWidthPercent() ||
    1120           0 :                 text::HoriOrientation::FULL == nTableAlign ||
    1121           0 :                         pTableData->IsLineSelected()  )
    1122           0 :         bModifyTable = false;
    1123           0 :     if(bPercentMode)
    1124             :     {
    1125           0 :         m_pModifyTableCB->Check(false);
    1126           0 :         m_pProportionalCB->Check(false);
    1127             :     }
    1128           0 :     else if( !bModifyTable )
    1129             :     {
    1130           0 :         m_pProportionalCB->Check(false);
    1131           0 :         m_pModifyTableCB->Check(false);
    1132             :     }
    1133           0 :     m_pSpaceFT->Enable(!bPercentMode);
    1134           0 :     m_pSpaceED->Enable(!bPercentMode);
    1135           0 :     m_pModifyTableCB->Enable( !bPercentMode && bModifyTable );
    1136           0 :     m_pProportionalCB->Enable(!bPercentMode && bModifyTable );
    1137             : 
    1138           0 :     m_pSpaceED->SetValue(m_pSpaceED->Normalize(
    1139           0 :                 pTableData->GetSpace() - nTableWidth) , FUNIT_TWIP);
    1140             : 
    1141           0 : }
    1142             : 
    1143           0 : SfxTabPage::sfxpg SwTableColumnPage::DeactivatePage( SfxItemSet* _pSet )
    1144             : {
    1145           0 :     if(_pSet)
    1146             :     {
    1147           0 :         FillItemSet(_pSet);
    1148           0 :         if(text::HoriOrientation::FULL != pTableData->GetAlign() && pTableData->GetWidth() != nTableWidth)
    1149             :         {
    1150           0 :             pTableData->SetWidth(nTableWidth);
    1151           0 :             SwTwips nDiff = pTableData->GetSpace() - pTableData->GetWidth() -
    1152           0 :                             pTableData->GetLeftSpace() - pTableData->GetRightSpace();
    1153           0 :             switch( pTableData->GetAlign()  )
    1154             :             {
    1155             :                 case text::HoriOrientation::RIGHT:
    1156           0 :                     pTableData->SetLeftSpace(pTableData->GetLeftSpace() + nDiff);
    1157           0 :                 break;
    1158             :                 case text::HoriOrientation::LEFT:
    1159           0 :                     pTableData->SetRightSpace(pTableData->GetRightSpace() + nDiff);
    1160           0 :                 break;
    1161             :                 case text::HoriOrientation::NONE:
    1162             :                 {
    1163           0 :                     SwTwips nDiff2 = nDiff/2;
    1164           0 :                     if( nDiff > 0 ||
    1165           0 :                         (-nDiff2 < pTableData->GetRightSpace() && - nDiff2 < pTableData->GetLeftSpace()))
    1166             :                     {
    1167           0 :                         pTableData->SetRightSpace(pTableData->GetRightSpace() + nDiff2);
    1168           0 :                         pTableData->SetLeftSpace(pTableData->GetLeftSpace() + nDiff2);
    1169             :                     }
    1170             :                     else
    1171             :                     {
    1172           0 :                         if(pTableData->GetRightSpace() > pTableData->GetLeftSpace())
    1173             :                         {
    1174           0 :                             pTableData->SetLeftSpace(0);
    1175           0 :                             pTableData->SetRightSpace(pTableData->GetSpace() - pTableData->GetWidth());
    1176             :                         }
    1177             :                         else
    1178             :                         {
    1179           0 :                             pTableData->SetRightSpace(0);
    1180           0 :                             pTableData->SetLeftSpace(pTableData->GetSpace() - pTableData->GetWidth());
    1181             :                         }
    1182             :                     }
    1183             :                 }
    1184           0 :                 break;
    1185             :                 case text::HoriOrientation::CENTER:
    1186           0 :                     pTableData->SetRightSpace(pTableData->GetRightSpace() + nDiff/2);
    1187           0 :                     pTableData->SetLeftSpace(pTableData->GetLeftSpace() + nDiff/2);
    1188           0 :                 break;
    1189             :                 case text::HoriOrientation::LEFT_AND_WIDTH :
    1190           0 :                     if(nDiff > pTableData->GetRightSpace())
    1191             :                     {
    1192           0 :                         pTableData->SetLeftSpace(pTableData->GetSpace() - pTableData->GetWidth());
    1193             :                     }
    1194             :                     pTableData->SetRightSpace(
    1195           0 :                         pTableData->GetSpace() - pTableData->GetWidth() - pTableData->GetLeftSpace());
    1196           0 :                 break;
    1197             :             }
    1198           0 :             pTableData->SetWidthChanged();
    1199             :         }
    1200           0 :         _pSet->Put(SwPtrItem( FN_TABLE_REP, pTableData ));
    1201             :     }
    1202           0 :     return LEAVE_PAGE;
    1203             : }
    1204             : 
    1205           0 : SwTwips  SwTableColumnPage::GetVisibleWidth(sal_uInt16 nPos)
    1206             : {
    1207           0 :     sal_uInt16 i=0;
    1208             : 
    1209           0 :     while( nPos )
    1210             :     {
    1211           0 :         if(pTableData->GetColumns()[i].bVisible && nPos)
    1212           0 :             nPos--;
    1213           0 :         i++;
    1214             :     }
    1215           0 :     SwTwips nReturn = pTableData->GetColumns()[i].nWidth;
    1216             :     OSL_ENSURE(i < nNoOfCols, "Array index out of range");
    1217           0 :     while(!pTableData->GetColumns()[i].bVisible && (i + 1) < nNoOfCols)
    1218           0 :         nReturn += pTableData->GetColumns()[++i].nWidth;
    1219             : 
    1220           0 :     return nReturn;
    1221             : }
    1222             : 
    1223           0 : void SwTableColumnPage::SetVisibleWidth(sal_uInt16 nPos, SwTwips nNewWidth)
    1224             : {
    1225           0 :     sal_uInt16 i=0;
    1226           0 :     while( nPos )
    1227             :     {
    1228           0 :         if(pTableData->GetColumns()[i].bVisible && nPos)
    1229           0 :             nPos--;
    1230           0 :         i++;
    1231             :     }
    1232             :     OSL_ENSURE(i < nNoOfCols, "Array index out of range");
    1233           0 :     pTableData->GetColumns()[i].nWidth = nNewWidth;
    1234           0 :     while(!pTableData->GetColumns()[i].bVisible && (i + 1) < nNoOfCols)
    1235           0 :         pTableData->GetColumns()[++i].nWidth = 0;
    1236             : 
    1237           0 : }
    1238             : 
    1239           0 : SwTableTabDlg::SwTableTabDlg(vcl::Window* pParent, SfxItemPool&,
    1240             :     const SfxItemSet* pItemSet, SwWrtShell* pSh)
    1241             :     : SfxTabDialog(0, pParent, "TablePropertiesDialog",
    1242             :         "modules/swriter/ui/tableproperties.ui", pItemSet)
    1243           0 :     , pShell(pSh)
    1244             : {
    1245           0 :     SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create();
    1246             :     OSL_ENSURE(pFact, "Dialog creation failed!");
    1247           0 :     AddTabPage("table", &SwFormatTablePage::Create, 0);
    1248           0 :     m_nTextFlowId = AddTabPage("textflow", &SwTextFlowPage::Create, 0);
    1249           0 :     AddTabPage("columns", &SwTableColumnPage::Create, 0);
    1250           0 :     m_nBackgroundId = AddTabPage("background", pFact->GetTabPageCreatorFunc(RID_SVXPAGE_BACKGROUND), 0);
    1251           0 :     m_nBorderId = AddTabPage("borders", pFact->GetTabPageCreatorFunc(RID_SVXPAGE_BORDER), 0);
    1252           0 : }
    1253             : 
    1254           0 : void  SwTableTabDlg::PageCreated(sal_uInt16 nId, SfxTabPage& rPage)
    1255             : {
    1256           0 :     SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool()));
    1257           0 :     if (nId == m_nBackgroundId)
    1258             :     {
    1259           0 :         SvxBackgroundTabFlags nFlagType = SvxBackgroundTabFlags::SHOW_TBLCTL | SvxBackgroundTabFlags::SHOW_SELECTOR;
    1260           0 :         aSet.Put (SfxUInt32Item(SID_FLAG_TYPE, static_cast<sal_uInt32>(nFlagType)));
    1261           0 :         rPage.PageCreated(aSet);
    1262             :     }
    1263           0 :     else if (nId == m_nBorderId)
    1264             :     {
    1265           0 :         aSet.Put (SfxUInt16Item(SID_SWMODE_TYPE, static_cast<sal_uInt16>(SwBorderModes::TABLE)));
    1266           0 :         rPage.PageCreated(aSet);
    1267             :     }
    1268           0 :     else if (nId == m_nTextFlowId)
    1269             :     {
    1270           0 :         static_cast<SwTextFlowPage&>(rPage).SetShell(pShell);
    1271           0 :         const FrmTypeFlags eType = pShell->GetFrmType(0,true);
    1272           0 :         if( !(FrmTypeFlags::BODY & eType) )
    1273           0 :             static_cast<SwTextFlowPage&>(rPage).DisablePageBreak();
    1274           0 :     }
    1275           0 : }
    1276             : 
    1277           0 : SwTextFlowPage::SwTextFlowPage(vcl::Window* pParent, const SfxItemSet& rSet)
    1278             :     : SfxTabPage(pParent, "TableTextFlowPage",
    1279             :         "modules/swriter/ui/tabletextflowpage.ui", &rSet)
    1280             :     , pShell(0)
    1281             :     , bPageBreak(true)
    1282           0 :     , bHtmlMode(false)
    1283             : {
    1284           0 :     get(m_pPgBrkCB, "break");
    1285             : 
    1286           0 :     get(m_pPgBrkRB, "page");
    1287           0 :     get(m_pColBrkRB, "column");
    1288             : 
    1289           0 :     get(m_pPgBrkBeforeRB, "before");
    1290           0 :     get(m_pPgBrkAfterRB, "after");
    1291             : 
    1292           0 :     get(m_pPageCollCB, "pagestyle");
    1293           0 :     get(m_pPageCollLB, "pagestylelb");
    1294           0 :     get(m_pPageNoFT, "pagenoft");
    1295           0 :     get(m_pPageNoNF, "pagenonf");
    1296             : 
    1297           0 :     get(m_pSplitCB, "split");
    1298           0 :     get(m_pSplitRowCB, "splitrow");
    1299           0 :     get(m_pKeepCB, "keep");
    1300           0 :     get(m_pHeadLineCB, "headline");
    1301             : 
    1302           0 :     get(m_pRepeatHeaderCombo, "repeatheader");
    1303           0 :     get(m_pRepeatHeaderNF, "repeatheadernf");
    1304             : 
    1305           0 :     get(m_pTextDirectionLB, "textdirection");
    1306           0 :     get(m_pVertOrientLB, "vertorient");
    1307             : 
    1308           0 :     m_pPgBrkRB->SetAccessibleRelationMemberOf(m_pPgBrkCB);
    1309           0 :     m_pColBrkRB->SetAccessibleRelationMemberOf(m_pPgBrkCB);
    1310           0 :     m_pPgBrkBeforeRB->SetAccessibleRelationMemberOf(m_pPgBrkCB);
    1311           0 :     m_pPgBrkAfterRB->SetAccessibleRelationMemberOf(m_pPgBrkCB);
    1312           0 :     m_pPageCollLB->SetAccessibleName(m_pPageCollCB->GetText());
    1313             : 
    1314           0 :     m_pPgBrkCB->SetClickHdl(LINK(this, SwTextFlowPage, PageBreakHdl_Impl));
    1315           0 :     m_pPgBrkBeforeRB->SetClickHdl(
    1316           0 :         LINK( this, SwTextFlowPage, PageBreakPosHdl_Impl ) );
    1317           0 :     m_pPgBrkAfterRB->SetClickHdl(
    1318           0 :         LINK( this, SwTextFlowPage, PageBreakPosHdl_Impl ) );
    1319           0 :     m_pPageCollCB->SetClickHdl(
    1320           0 :         LINK( this, SwTextFlowPage, ApplyCollClickHdl_Impl ) );
    1321           0 :     m_pColBrkRB->SetClickHdl(
    1322           0 :         LINK( this, SwTextFlowPage, PageBreakTypeHdl_Impl ) );
    1323           0 :     m_pPgBrkRB->SetClickHdl(
    1324           0 :         LINK( this, SwTextFlowPage, PageBreakTypeHdl_Impl ) );
    1325           0 :     m_pSplitCB->SetClickHdl(
    1326           0 :         LINK( this, SwTextFlowPage, SplitHdl_Impl));
    1327           0 :     m_pSplitRowCB->SetClickHdl(
    1328           0 :         LINK( this, SwTextFlowPage, SplitRowHdl_Impl));
    1329           0 :     m_pHeadLineCB->SetClickHdl( LINK( this, SwTextFlowPage, HeadLineCBClickHdl ) );
    1330             : 
    1331             : #ifndef SW_FILEFORMAT_40
    1332             :     const SfxPoolItem *pItem;
    1333           0 :     if(SfxItemState::SET == rSet.GetItemState( SID_HTML_MODE, false,&pItem )
    1334           0 :         && static_cast<const SfxUInt16Item*>(pItem)->GetValue() & HTMLMODE_ON)
    1335             : #endif
    1336             :     {
    1337           0 :         m_pKeepCB->Hide();
    1338           0 :         m_pSplitCB->Hide();
    1339           0 :         m_pSplitRowCB->Hide();
    1340             :     }
    1341             : 
    1342           0 :     HeadLineCBClickHdl();
    1343           0 : }
    1344             : 
    1345           0 : SwTextFlowPage::~SwTextFlowPage()
    1346             : {
    1347           0 :     disposeOnce();
    1348           0 : }
    1349             : 
    1350           0 : void SwTextFlowPage::dispose()
    1351             : {
    1352           0 :     m_pPgBrkCB.clear();
    1353           0 :     m_pPgBrkRB.clear();
    1354           0 :     m_pColBrkRB.clear();
    1355           0 :     m_pPgBrkBeforeRB.clear();
    1356           0 :     m_pPgBrkAfterRB.clear();
    1357           0 :     m_pPageCollCB.clear();
    1358           0 :     m_pPageCollLB.clear();
    1359           0 :     m_pPageNoFT.clear();
    1360           0 :     m_pPageNoNF.clear();
    1361           0 :     m_pSplitCB.clear();
    1362           0 :     m_pSplitRowCB.clear();
    1363           0 :     m_pKeepCB.clear();
    1364           0 :     m_pHeadLineCB.clear();
    1365           0 :     m_pRepeatHeaderNF.clear();
    1366           0 :     m_pRepeatHeaderCombo.clear();
    1367           0 :     m_pTextDirectionLB.clear();
    1368           0 :     m_pVertOrientLB.clear();
    1369           0 :     SfxTabPage::dispose();
    1370           0 : }
    1371             : 
    1372           0 : VclPtr<SfxTabPage> SwTextFlowPage::Create( vcl::Window* pParent,
    1373             :                                            const SfxItemSet* rAttrSet)
    1374             : {
    1375           0 :     return VclPtr<SwTextFlowPage>::Create(pParent, *rAttrSet);
    1376             : }
    1377             : 
    1378           0 : bool  SwTextFlowPage::FillItemSet( SfxItemSet* rSet )
    1379             : {
    1380           0 :     bool bModified = false;
    1381             : 
    1382             :     //Repeat Heading
    1383           0 :     if(m_pHeadLineCB->IsValueChangedFromSaved() ||
    1384           0 :        m_pRepeatHeaderNF->IsValueChangedFromSaved() )
    1385             :     {
    1386             :         bModified |= 0 != rSet->Put(
    1387           0 :             SfxUInt16Item(FN_PARAM_TABLE_HEADLINE, m_pHeadLineCB->IsChecked()? sal_uInt16(m_pRepeatHeaderNF->GetValue()) : 0 ));
    1388             :     }
    1389           0 :     if(m_pKeepCB->IsValueChangedFromSaved())
    1390           0 :         bModified |= 0 != rSet->Put( SvxFormatKeepItem( m_pKeepCB->IsChecked(), RES_KEEP));
    1391             : 
    1392           0 :     if(m_pSplitCB->IsValueChangedFromSaved())
    1393           0 :         bModified |= 0 != rSet->Put( SwFormatLayoutSplit( m_pSplitCB->IsChecked()));
    1394             : 
    1395           0 :     if(m_pSplitRowCB->IsValueChangedFromSaved())
    1396           0 :         bModified |= 0 != rSet->Put( SwFormatRowSplit( m_pSplitRowCB->IsChecked()));
    1397             : 
    1398           0 :     const SvxFormatBreakItem* pBreak = static_cast<const SvxFormatBreakItem*>(GetOldItem( *rSet, RES_BREAK ));
    1399           0 :     const SwFormatPageDesc* pDesc = static_cast<const SwFormatPageDesc*>(GetOldItem( *rSet, RES_PAGEDESC ));
    1400             : 
    1401           0 :     bool bState = m_pPageCollCB->IsChecked();
    1402             : 
    1403             :     //If we have a page style, then there's no break
    1404           0 :     bool bPageItemPut = false;
    1405           0 :     if ( bState != (m_pPageCollCB->GetSavedValue() == 1) ||
    1406           0 :          ( bState &&
    1407           0 :            m_pPageCollLB->IsValueChangedFromSaved() )
    1408           0 :            || (m_pPageNoNF->IsEnabled() && m_pPageNoNF->IsValueModified()) )
    1409             :     {
    1410           0 :         OUString sPage;
    1411             : 
    1412           0 :         if ( bState )
    1413             :         {
    1414           0 :             sPage = m_pPageCollLB->GetSelectEntry();
    1415             :         }
    1416           0 :         sal_uInt16 nPgNum = static_cast< sal_uInt16 >(m_pPageNoNF->GetValue());
    1417           0 :         if ( !pDesc || !pDesc->GetPageDesc() ||
    1418           0 :             ( pDesc->GetPageDesc() && ((pDesc->GetPageDesc()->GetName() != sPage) ||
    1419           0 :                     !comphelper::string::equals(m_pPageNoNF->GetSavedValue(), nPgNum))))
    1420             :         {
    1421           0 :             SwFormatPageDesc aFormat( pShell->FindPageDescByName( sPage, true ) );
    1422           0 :             aFormat.SetNumOffset(bState ? nPgNum : 0);
    1423           0 :             bModified |= 0 != rSet->Put( aFormat );
    1424           0 :             bPageItemPut = bState;
    1425           0 :         }
    1426             :     }
    1427           0 :     bool bIsChecked = m_pPgBrkCB->IsChecked();
    1428           0 :     if ( !bPageItemPut &&
    1429           0 :         (   bState != (m_pPageCollCB->GetSavedValue() == 1) ||
    1430           0 :             bIsChecked != (m_pPgBrkCB->GetSavedValue() ==1) ||
    1431           0 :             m_pPgBrkBeforeRB->IsValueChangedFromSaved()    ||
    1432           0 :             m_pPgBrkRB->IsValueChangedFromSaved() ))
    1433             :     {
    1434             :         SvxFormatBreakItem aBreak(
    1435           0 :             static_cast<const SvxFormatBreakItem&>(GetItemSet().Get( RES_BREAK )) );
    1436             : 
    1437           0 :         if(bIsChecked)
    1438             :         {
    1439           0 :             bool bBefore = m_pPgBrkBeforeRB->IsChecked();
    1440             : 
    1441           0 :             if ( m_pPgBrkRB->IsChecked() )
    1442             :             {
    1443           0 :                 if ( bBefore )
    1444           0 :                     aBreak.SetValue( SVX_BREAK_PAGE_BEFORE );
    1445             :                 else
    1446           0 :                     aBreak.SetValue( SVX_BREAK_PAGE_AFTER );
    1447             :             }
    1448             :             else
    1449             :             {
    1450           0 :                 if ( bBefore )
    1451           0 :                     aBreak.SetValue( SVX_BREAK_COLUMN_BEFORE );
    1452             :                 else
    1453           0 :                     aBreak.SetValue( SVX_BREAK_COLUMN_AFTER );
    1454             :             }
    1455             :         }
    1456             :         else
    1457             :         {
    1458           0 :                 aBreak.SetValue( SVX_BREAK_NONE );
    1459             :         }
    1460             : 
    1461           0 :         if ( !pBreak || !( *pBreak == aBreak ) )
    1462             :         {
    1463           0 :             bModified |= 0 != rSet->Put( aBreak );
    1464           0 :         }
    1465             :     }
    1466             : 
    1467           0 :     if(m_pTextDirectionLB->IsValueChangedFromSaved())
    1468             :     {
    1469             :           bModified |= 0 != rSet->Put(
    1470             :                     SvxFrameDirectionItem(
    1471           0 :                         (SvxFrameDirection)reinterpret_cast<sal_uLong>(m_pTextDirectionLB->GetSelectEntryData())
    1472           0 :                         , FN_TABLE_BOX_TEXTORIENTATION));
    1473             :     }
    1474             : 
    1475           0 :     if(m_pVertOrientLB->IsValueChangedFromSaved())
    1476             :     {
    1477           0 :         sal_uInt16 nOrient = USHRT_MAX;
    1478           0 :         switch(m_pVertOrientLB->GetSelectEntryPos())
    1479             :         {
    1480           0 :             case 0 : nOrient = text::VertOrientation::NONE; break;
    1481           0 :             case 1 : nOrient = text::VertOrientation::CENTER; break;
    1482           0 :             case 2 : nOrient = text::VertOrientation::BOTTOM; break;
    1483             :         }
    1484           0 :         if(nOrient != USHRT_MAX)
    1485           0 :             bModified |= 0 != rSet->Put(SfxUInt16Item(FN_TABLE_SET_VERT_ALIGN, nOrient));
    1486             :     }
    1487             : 
    1488           0 :     return bModified;
    1489             : 
    1490             : }
    1491             : 
    1492           0 : void   SwTextFlowPage::Reset( const SfxItemSet* rSet )
    1493             : {
    1494             :     const SfxPoolItem* pItem;
    1495           0 :     SvxHtmlOptions& rHtmlOpt = SvxHtmlOptions::Get();
    1496           0 :     bool bFlowAllowed = !bHtmlMode || rHtmlOpt.IsPrintLayoutExtension();
    1497           0 :     if(bFlowAllowed)
    1498             :     {
    1499             :         //Inserting of the existing page templates in the list box
    1500           0 :         const size_t nCount = pShell->GetPageDescCnt();
    1501             : 
    1502           0 :         for( size_t i = 0; i < nCount; ++i)
    1503             :         {
    1504           0 :             const SwPageDesc &rPageDesc = pShell->GetPageDesc(i);
    1505           0 :             m_pPageCollLB->InsertEntry(rPageDesc.GetName());
    1506             :         }
    1507             : 
    1508           0 :         OUString aFormatName;
    1509           0 :         for(sal_uInt16 i = RES_POOLPAGE_BEGIN; i < RES_POOLPAGE_END; ++i)
    1510           0 :             if( LISTBOX_ENTRY_NOTFOUND == m_pPageCollLB->GetEntryPos(
    1511           0 :                     aFormatName = SwStyleNameMapper::GetUIName( i, aFormatName ) ))
    1512           0 :                 m_pPageCollLB->InsertEntry( aFormatName );
    1513             : 
    1514           0 :         if(SfxItemState::SET == rSet->GetItemState( RES_KEEP, false, &pItem ))
    1515             :         {
    1516           0 :             m_pKeepCB->Check( static_cast<const SvxFormatKeepItem*>(pItem)->GetValue() );
    1517           0 :             m_pKeepCB->SaveValue();
    1518             :         }
    1519           0 :         if(SfxItemState::SET == rSet->GetItemState( RES_LAYOUT_SPLIT, false, &pItem ))
    1520             :         {
    1521           0 :             m_pSplitCB->Check( static_cast<const SwFormatLayoutSplit*>(pItem)->GetValue() );
    1522             :         }
    1523             :         else
    1524           0 :             m_pSplitCB->Check();
    1525             : 
    1526           0 :         m_pSplitCB->SaveValue();
    1527           0 :         SplitHdl_Impl(m_pSplitCB);
    1528             : 
    1529           0 :         if(SfxItemState::SET == rSet->GetItemState( RES_ROW_SPLIT, false, &pItem ))
    1530             :         {
    1531           0 :             m_pSplitRowCB->Check( static_cast<const SwFormatRowSplit*>(pItem)->GetValue() );
    1532             :         }
    1533             :         else
    1534           0 :             m_pSplitRowCB->SetState(TRISTATE_INDET);
    1535           0 :         m_pSplitRowCB->SaveValue();
    1536             : 
    1537           0 :         if(bPageBreak)
    1538             :         {
    1539           0 :             if(SfxItemState::SET == rSet->GetItemState( RES_PAGEDESC, false, &pItem ))
    1540             :             {
    1541           0 :                 OUString sPageDesc;
    1542           0 :                 const SwPageDesc* pDesc = static_cast<const SwFormatPageDesc*>(pItem)->GetPageDesc();
    1543             : 
    1544             :                 //m_pPageNoNF->SetValue(static_cast<const SwFormatPageDesc*>(pItem)->GetNumOffset());
    1545           0 :                 ::boost::optional<sal_uInt16> oNumOffset = static_cast<const SwFormatPageDesc*>(pItem)->GetNumOffset();
    1546           0 :                 if (oNumOffset)
    1547           0 :                     m_pPageNoNF->SetValue(oNumOffset.get());
    1548             :                 else
    1549           0 :                     m_pPageNoNF->Enable(false);
    1550             : 
    1551           0 :                 if(pDesc)
    1552           0 :                     sPageDesc = pDesc->GetName();
    1553           0 :                 if ( !sPageDesc.isEmpty() &&
    1554           0 :                         m_pPageCollLB->GetEntryPos( sPageDesc ) != LISTBOX_ENTRY_NOTFOUND )
    1555             :                 {
    1556           0 :                     m_pPageCollLB->SelectEntry( sPageDesc );
    1557           0 :                     m_pPageCollCB->Check();
    1558             : 
    1559           0 :                     m_pPgBrkCB->Enable();
    1560           0 :                     m_pPgBrkRB->Enable();
    1561           0 :                     m_pColBrkRB->Enable();
    1562           0 :                     m_pPgBrkBeforeRB->Enable();
    1563           0 :                     m_pPgBrkAfterRB->Enable();
    1564           0 :                     m_pPageCollCB->Enable();
    1565           0 :                     m_pPgBrkCB->Check();
    1566             : 
    1567           0 :                     m_pPgBrkCB->Check( true );
    1568           0 :                     m_pColBrkRB->Check( false );
    1569           0 :                     m_pPgBrkBeforeRB->Check( true );
    1570           0 :                     m_pPgBrkAfterRB->Check( false );
    1571             :                 }
    1572             :                 else
    1573             :                 {
    1574           0 :                     m_pPageCollLB->SetNoSelection();
    1575           0 :                     m_pPageCollCB->Check(false);
    1576           0 :                 }
    1577             :             }
    1578             : 
    1579           0 :             if(SfxItemState::SET == rSet->GetItemState( RES_BREAK, false, &pItem ))
    1580             :             {
    1581           0 :                 const SvxFormatBreakItem* pPageBreak = static_cast<const SvxFormatBreakItem*>(pItem);
    1582           0 :                 SvxBreak eBreak = (SvxBreak)pPageBreak->GetValue();
    1583             : 
    1584           0 :                 if ( eBreak != SVX_BREAK_NONE )
    1585             :                 {
    1586           0 :                     m_pPgBrkCB->Check();
    1587           0 :                     m_pPageCollCB->Enable(false);
    1588           0 :                     m_pPageCollLB->Enable(false);
    1589           0 :                     m_pPageNoFT->Enable(false);
    1590           0 :                     m_pPageNoNF->Enable(false);
    1591             :                 }
    1592           0 :                 switch ( eBreak )
    1593             :                 {
    1594             :                     case SVX_BREAK_PAGE_BEFORE:
    1595           0 :                         m_pPgBrkRB->Check( true );
    1596           0 :                         m_pColBrkRB->Check( false );
    1597           0 :                         m_pPgBrkBeforeRB->Check( true );
    1598           0 :                         m_pPgBrkAfterRB->Check( false );
    1599           0 :                         break;
    1600             :                     case SVX_BREAK_PAGE_AFTER:
    1601           0 :                         m_pPgBrkRB->Check( true );
    1602           0 :                         m_pColBrkRB->Check( false );
    1603           0 :                         m_pPgBrkBeforeRB->Check( false );
    1604           0 :                         m_pPgBrkAfterRB->Check( true );
    1605           0 :                         break;
    1606             :                     case SVX_BREAK_COLUMN_BEFORE:
    1607           0 :                         m_pPgBrkRB->Check( false );
    1608           0 :                         m_pColBrkRB->Check( true );
    1609           0 :                         m_pPgBrkBeforeRB->Check( true );
    1610           0 :                         m_pPgBrkAfterRB->Check( false );
    1611           0 :                         break;
    1612             :                     case SVX_BREAK_COLUMN_AFTER:
    1613           0 :                         m_pPgBrkRB->Check( false );
    1614           0 :                         m_pColBrkRB->Check( true );
    1615           0 :                         m_pPgBrkBeforeRB->Check( false );
    1616           0 :                         m_pPgBrkAfterRB->Check( true );
    1617           0 :                         break;
    1618             :                     default:; //prevent warning
    1619             :                 }
    1620             : 
    1621             :             }
    1622           0 :             if ( m_pPgBrkBeforeRB->IsChecked() )
    1623           0 :                 PageBreakPosHdl_Impl(m_pPgBrkBeforeRB);
    1624           0 :             else if ( m_pPgBrkAfterRB->IsChecked() )
    1625           0 :                 PageBreakPosHdl_Impl(m_pPgBrkAfterRB);
    1626           0 :             PageBreakHdl_Impl( m_pPgBrkCB );
    1627           0 :         }
    1628             :     }
    1629             :     else
    1630             :     {
    1631           0 :         m_pPgBrkRB->Enable(false);
    1632           0 :         m_pColBrkRB->Enable(false);
    1633           0 :         m_pPgBrkBeforeRB->Enable(false);
    1634           0 :         m_pPgBrkAfterRB->Enable(false);
    1635           0 :         m_pKeepCB->Enable(false);
    1636           0 :         m_pSplitCB->Enable(false);
    1637           0 :         m_pPgBrkCB->Enable(false);
    1638           0 :         m_pPageCollCB->Enable(false);
    1639           0 :         m_pPageCollLB->Enable(false);
    1640             :     }
    1641             : 
    1642           0 :     if(SfxItemState::SET == rSet->GetItemState( FN_PARAM_TABLE_HEADLINE, false, &pItem ))
    1643             :     {
    1644           0 :         sal_uInt16 nRep = static_cast<const SfxUInt16Item*>(pItem)->GetValue();
    1645           0 :         m_pHeadLineCB->Check( nRep > 0 );
    1646           0 :         m_pHeadLineCB->SaveValue();
    1647           0 :         m_pRepeatHeaderNF->SetValue( nRep );
    1648           0 :         m_pRepeatHeaderNF->SetMin( 1 );
    1649           0 :         m_pRepeatHeaderNF->SaveValue();
    1650             :     }
    1651           0 :     if ( rSet->GetItemState(FN_TABLE_BOX_TEXTORIENTATION) > SfxItemState::DEFAULT )
    1652             :     {
    1653           0 :         sal_uLong nDirection = static_cast<const SvxFrameDirectionItem&>(rSet->Get(FN_TABLE_BOX_TEXTORIENTATION)).GetValue();
    1654           0 :         m_pTextDirectionLB->SelectEntryPos(m_pTextDirectionLB->GetEntryPos( reinterpret_cast<void*>(nDirection) ));
    1655             :     }
    1656             : 
    1657           0 :     if ( rSet->GetItemState(FN_TABLE_SET_VERT_ALIGN) > SfxItemState::DEFAULT )
    1658             :     {
    1659           0 :         sal_uInt16 nVert = static_cast<const SfxUInt16Item&>(rSet->Get(FN_TABLE_SET_VERT_ALIGN)).GetValue();
    1660           0 :         sal_uInt16 nPos = 0;
    1661           0 :         switch(nVert)
    1662             :         {
    1663           0 :             case text::VertOrientation::NONE:     nPos = 0;   break;
    1664           0 :             case text::VertOrientation::CENTER:   nPos = 1;   break;
    1665           0 :             case text::VertOrientation::BOTTOM:   nPos = 2;   break;
    1666             :         }
    1667           0 :         m_pVertOrientLB->SelectEntryPos(nPos);
    1668             :     }
    1669             : 
    1670           0 :     m_pPageCollCB->SaveValue();
    1671           0 :     m_pPageCollLB->SaveValue();
    1672           0 :     m_pPgBrkCB->SaveValue();
    1673           0 :     m_pPgBrkRB->SaveValue();
    1674           0 :     m_pColBrkRB->SaveValue();
    1675           0 :     m_pPgBrkBeforeRB->SaveValue();
    1676           0 :     m_pPgBrkAfterRB->SaveValue();
    1677           0 :     m_pPageNoNF->SaveValue();
    1678           0 :     m_pTextDirectionLB->SaveValue();
    1679           0 :     m_pVertOrientLB->SaveValue();
    1680             : 
    1681           0 :     HeadLineCBClickHdl();
    1682           0 : }
    1683             : 
    1684           0 : void SwTextFlowPage::SetShell(SwWrtShell* pSh)
    1685             : {
    1686           0 :     pShell = pSh;
    1687           0 :     bHtmlMode = 0 != (::GetHtmlMode(pShell->GetView().GetDocShell()) & HTMLMODE_ON);
    1688           0 :     if(bHtmlMode)
    1689             :     {
    1690           0 :         m_pPageNoNF->Enable(false);
    1691           0 :         m_pPageNoFT->Enable(false);
    1692             :     }
    1693           0 : }
    1694             : 
    1695           0 : IMPL_LINK_NOARG(SwTextFlowPage, PageBreakHdl_Impl)
    1696             : {
    1697           0 :     if( m_pPgBrkCB->IsChecked() )
    1698             :     {
    1699           0 :             m_pPgBrkRB->       Enable();
    1700           0 :             m_pColBrkRB->      Enable();
    1701           0 :             m_pPgBrkBeforeRB-> Enable();
    1702           0 :             m_pPgBrkAfterRB->  Enable();
    1703             : 
    1704           0 :             if ( m_pPgBrkRB->IsChecked() && m_pPgBrkBeforeRB->IsChecked() )
    1705             :             {
    1706           0 :                 m_pPageCollCB->Enable();
    1707             : 
    1708           0 :                 bool bEnable = m_pPageCollCB->IsChecked() &&
    1709           0 :                                             m_pPageCollLB->GetEntryCount();
    1710           0 :                 m_pPageCollLB->Enable(bEnable);
    1711           0 :                 if(!bHtmlMode)
    1712             :                 {
    1713           0 :                     m_pPageNoFT->Enable(bEnable);
    1714           0 :                     m_pPageNoNF->Enable(bEnable);
    1715             :                 }
    1716             :             }
    1717             :     }
    1718             :     else
    1719             :     {
    1720           0 :             m_pPageCollCB->Check( false );
    1721           0 :             m_pPageCollCB->Enable(false);
    1722           0 :             m_pPageCollLB->Enable(false);
    1723           0 :             m_pPageNoFT->Enable(false);
    1724           0 :             m_pPageNoNF->Enable(false);
    1725           0 :             m_pPgBrkRB->       Enable(false);
    1726           0 :             m_pColBrkRB->      Enable(false);
    1727           0 :             m_pPgBrkBeforeRB-> Enable(false);
    1728           0 :             m_pPgBrkAfterRB->  Enable(false);
    1729             :     }
    1730           0 :     return 0;
    1731             : }
    1732             : 
    1733           0 : IMPL_LINK_NOARG(SwTextFlowPage, ApplyCollClickHdl_Impl)
    1734             : {
    1735           0 :     bool bEnable = false;
    1736           0 :     if ( m_pPageCollCB->IsChecked() &&
    1737           0 :          m_pPageCollLB->GetEntryCount() )
    1738             :     {
    1739           0 :         bEnable = true;
    1740           0 :         m_pPageCollLB->SelectEntryPos( 0 );
    1741             :     }
    1742             :     else
    1743             :     {
    1744           0 :         m_pPageCollLB->SetNoSelection();
    1745             :     }
    1746           0 :     m_pPageCollLB->Enable(bEnable);
    1747           0 :     if(!bHtmlMode)
    1748             :     {
    1749           0 :         m_pPageNoFT->Enable(bEnable);
    1750           0 :         m_pPageNoNF->Enable(bEnable);
    1751             :     }
    1752           0 :     return 0;
    1753             : }
    1754             : 
    1755           0 : IMPL_LINK( SwTextFlowPage, PageBreakPosHdl_Impl, RadioButton*, pBtn )
    1756             : {
    1757           0 :     if ( m_pPgBrkCB->IsChecked() )
    1758             :     {
    1759           0 :         if ( pBtn == m_pPgBrkBeforeRB && m_pPgBrkRB->IsChecked() )
    1760             :         {
    1761           0 :             m_pPageCollCB->Enable();
    1762             : 
    1763           0 :             bool bEnable = m_pPageCollCB->IsChecked()  &&
    1764           0 :                                         m_pPageCollLB->GetEntryCount();
    1765             : 
    1766           0 :             m_pPageCollLB->Enable(bEnable);
    1767           0 :             if(!bHtmlMode)
    1768             :             {
    1769           0 :                 m_pPageNoFT->Enable(bEnable);
    1770           0 :                 m_pPageNoNF->Enable(bEnable);
    1771             :             }
    1772             :         }
    1773           0 :         else if (pBtn == m_pPgBrkAfterRB)
    1774             :         {
    1775           0 :             m_pPageCollCB->Check( false );
    1776           0 :             m_pPageCollCB->Enable(false);
    1777           0 :             m_pPageCollLB->Enable(false);
    1778           0 :             m_pPageNoFT->Enable(false);
    1779           0 :             m_pPageNoNF->Enable(false);
    1780             :         }
    1781             :     }
    1782           0 :     return 0;
    1783             : }
    1784             : 
    1785           0 : IMPL_LINK( SwTextFlowPage, PageBreakTypeHdl_Impl, RadioButton*, pBtn )
    1786             : {
    1787           0 :     if ( pBtn == m_pColBrkRB || m_pPgBrkAfterRB->IsChecked() )
    1788             :     {
    1789           0 :         m_pPageCollCB->Check(false);
    1790           0 :         m_pPageCollCB->Enable(false);
    1791           0 :         m_pPageCollLB->Enable(false);
    1792           0 :         m_pPageNoFT->Enable(false);
    1793           0 :         m_pPageNoNF->Enable(false);
    1794             :     }
    1795           0 :     else if ( m_pPgBrkBeforeRB->IsChecked() )
    1796           0 :         PageBreakPosHdl_Impl(m_pPgBrkBeforeRB);
    1797           0 :     return 0;
    1798             : }
    1799             : 
    1800           0 : IMPL_LINK( SwTextFlowPage, SplitHdl_Impl, CheckBox*, pBox )
    1801             : {
    1802           0 :     m_pSplitRowCB->Enable(pBox->IsChecked());
    1803           0 :     return 0;
    1804             : }
    1805             : 
    1806           0 : IMPL_STATIC_LINK(
    1807             :     SwTextFlowPage, SplitRowHdl_Impl, TriStateBox*, pBox )
    1808             : {
    1809           0 :     pBox->EnableTriState(false);
    1810           0 :     return 0;
    1811             : }
    1812             : 
    1813           0 : IMPL_LINK_NOARG(SwTextFlowPage, HeadLineCBClickHdl)
    1814             : {
    1815           0 :     m_pRepeatHeaderCombo->Enable(m_pHeadLineCB->IsChecked());
    1816             : 
    1817           0 :     return 0;
    1818             : }
    1819             : 
    1820           0 : void SwTextFlowPage::DisablePageBreak()
    1821             : {
    1822           0 :     bPageBreak = false;
    1823           0 :     m_pPgBrkCB->Disable();
    1824           0 :     m_pPgBrkRB->Disable();
    1825           0 :     m_pColBrkRB->Disable();
    1826           0 :     m_pPgBrkBeforeRB->Disable();
    1827           0 :     m_pPgBrkAfterRB->Disable();
    1828           0 :     m_pPageCollCB->Disable();
    1829           0 :     m_pPageCollLB->Disable();
    1830           0 :     m_pPageNoFT->Disable();
    1831           0 :     m_pPageNoNF->Disable();
    1832           0 : }
    1833             : 
    1834             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.11