LCOV - code coverage report
Current view: top level - libreoffice/svx/source/dialog - hdft.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 1 483 0.2 %
Date: 2012-12-27 Functions: 2 33 6.1 %
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 <tools/shl.hxx>
      21             : #include <svl/itemiter.hxx>
      22             : #include <sfx2/app.hxx>
      23             : #include <sfx2/objsh.hxx>
      24             : #include <sfx2/module.hxx>
      25             : #include <vcl/msgbox.hxx>
      26             : #include <vcl/graph.hxx>
      27             : 
      28             : #include <sfx2/sfxsids.hrc>
      29             : #include <svx/svxids.hrc>
      30             : #include <svx/dialogs.hrc>
      31             : #include "hdft.hrc"
      32             : #include <svl/intitem.hxx>
      33             : 
      34             : #define _SVX_HDFT_CXX
      35             : 
      36             : #include <svx/hdft.hxx>
      37             : #include <svx/pageitem.hxx>
      38             : 
      39             : #include "svx/dlgutil.hxx"
      40             : #include <svx/dialmgr.hxx>
      41             : #include "svx/htmlmode.hxx"
      42             : 
      43             : #include <editeng/brshitem.hxx>
      44             : #include <editeng/lrspitem.hxx>
      45             : #include <editeng/ulspitem.hxx>
      46             : #include <editeng/shaditem.hxx>
      47             : #include <editeng/sizeitem.hxx>
      48             : #include <editeng/boxitem.hxx>
      49             : 
      50             : #include <svx/svxdlg.hxx>
      51             : // static ----------------------------------------------------------------
      52             : 
      53             : // Word 97 incompatibility (#i19922#)
      54             : static const long MINBODY = 56;  // 1mm in twips rounded
      55             : 
      56             : // default distance to Header or footer
      57             : static const long DEF_DIST_WRITER = 500;    // 5mm (Writer)
      58             : static const long DEF_DIST_CALC = 250;      // 2.5mm (Calc)
      59             : 
      60             : static sal_uInt16 pRanges[] =
      61             : {
      62             :     SID_ATTR_BRUSH,          SID_ATTR_BRUSH,
      63             :     SID_ATTR_BORDER_OUTER,   SID_ATTR_BORDER_OUTER,
      64             :     SID_ATTR_BORDER_INNER,   SID_ATTR_BORDER_INNER,
      65             :     SID_ATTR_BORDER_SHADOW,  SID_ATTR_BORDER_SHADOW,
      66             :     SID_ATTR_LRSPACE,        SID_ATTR_LRSPACE,
      67             :     SID_ATTR_ULSPACE,        SID_ATTR_ULSPACE,
      68             :     SID_ATTR_PAGE_SIZE,      SID_ATTR_PAGE_SIZE,
      69             :     SID_ATTR_PAGE_HEADERSET, SID_ATTR_PAGE_HEADERSET,
      70             :     SID_ATTR_PAGE_FOOTERSET, SID_ATTR_PAGE_FOOTERSET,
      71             :     SID_ATTR_PAGE_ON,        SID_ATTR_PAGE_ON,
      72             :     SID_ATTR_PAGE_DYNAMIC,   SID_ATTR_PAGE_DYNAMIC,
      73             :     SID_ATTR_PAGE_SHARED,    SID_ATTR_PAGE_SHARED,
      74             :     SID_ATTR_PAGE_SHARED_FIRST,    SID_ATTR_PAGE_SHARED_FIRST,
      75             :     SID_ATTR_HDFT_DYNAMIC_SPACING, SID_ATTR_HDFT_DYNAMIC_SPACING,
      76             :     0
      77             : };
      78             : 
      79             : namespace svx {
      80             : 
      81           0 :     bool ShowBorderBackgroundDlg( Window* pParent, SfxItemSet* pBBSet,
      82             :             bool bEnableBackgroundSelector )
      83             :     {
      84           0 :         bool bRes = false;
      85           0 :         SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
      86           0 :         if(pFact)
      87             :         {
      88           0 :             SfxAbstractTabDialog* pDlg = pFact->CreateSvxBorderBackgroundDlg( pParent, *pBBSet, bEnableBackgroundSelector );
      89             :             DBG_ASSERT(pDlg, "Dialogdiet fail!");
      90           0 :             if ( pDlg->Execute() == RET_OK && pDlg->GetOutputItemSet() )
      91             :             {
      92           0 :                 SfxItemIter aIter( *pDlg->GetOutputItemSet() );
      93           0 :                 const SfxPoolItem* pItem = aIter.FirstItem();
      94             : 
      95           0 :                 while ( pItem )
      96             :                 {
      97           0 :                     if ( !IsInvalidItem( pItem ) )
      98           0 :                         pBBSet->Put( *pItem );
      99           0 :                     pItem = aIter.NextItem();
     100             :                 }
     101           0 :                 bRes = true;
     102             :             }
     103           0 :             delete pDlg;
     104             :         }
     105           0 :         return bRes;
     106             :     }
     107             : }
     108             : 
     109             : // returns the Which values to the range
     110             : 
     111             : 
     112           0 : sal_uInt16* SvxHeaderPage::GetRanges()
     113             : {
     114           0 :     return pRanges;
     115             : }
     116             : 
     117             : //------------------------------------------------------------------------
     118             : 
     119           0 : SfxTabPage* SvxHeaderPage::Create( Window* pParent, const SfxItemSet& rSet )
     120             : {
     121           0 :     return new SvxHeaderPage( pParent, rSet );
     122             : }
     123             : 
     124             : //------------------------------------------------------------------------
     125             : 
     126           0 : sal_uInt16* SvxFooterPage::GetRanges()
     127             : {
     128           0 :     return pRanges;
     129             : }
     130             : 
     131             : // -----------------------------------------------------------------------
     132             : 
     133           0 : SfxTabPage* SvxFooterPage::Create( Window* pParent, const SfxItemSet& rSet )
     134             : {
     135           0 :     return new SvxFooterPage( pParent, rSet );
     136             : }
     137             : 
     138             : // -----------------------------------------------------------------------
     139             : 
     140           0 : SvxHeaderPage::SvxHeaderPage( Window* pParent, const SfxItemSet& rAttr ) :
     141             : 
     142           0 :     SvxHFPage( pParent, RID_SVXPAGE_HEADER, rAttr, SID_ATTR_PAGE_HEADERSET )
     143             : 
     144             : {
     145           0 : }
     146             : 
     147             : // -----------------------------------------------------------------------
     148             : 
     149           0 : SvxFooterPage::SvxFooterPage( Window* pParent, const SfxItemSet& rAttr ) :
     150             : 
     151           0 :     SvxHFPage( pParent, RID_SVXPAGE_FOOTER, rAttr, SID_ATTR_PAGE_FOOTERSET )
     152             : 
     153             : {
     154           0 : }
     155             : 
     156             : // -----------------------------------------------------------------------
     157             : 
     158           0 : SvxHFPage::SvxHFPage( Window* pParent, sal_uInt16 nResId, const SfxItemSet& rAttr, sal_uInt16 nSetId ) :
     159             : 
     160           0 :     SfxTabPage( pParent, SVX_RES( nResId ), rAttr ),
     161             : 
     162           0 :     aFrm            ( this, SVX_RES( FL_FRAME ) ),
     163           0 :     aTurnOnBox      ( this, SVX_RES( CB_TURNON ) ),
     164           0 :     aCntSharedBox   ( this, SVX_RES( CB_SHARED ) ),
     165           0 :     aCntSharedFirstBox   ( this, SVX_RES( CB_SHARED_FIRST ) ),
     166           0 :     aLMLbl          ( this, SVX_RES( FT_LMARGIN ) ),
     167           0 :     aLMEdit         ( this, SVX_RES( ED_LMARGIN ) ),
     168           0 :     aRMLbl          ( this, SVX_RES( FT_RMARGIN ) ),
     169           0 :     aRMEdit         ( this, SVX_RES( ED_RMARGIN ) ),
     170           0 :     aDistFT         ( this, SVX_RES( FT_DIST ) ),
     171           0 :     aDistEdit       ( this, SVX_RES( ED_DIST ) ),
     172           0 :     aDynSpacingCB   ( this, SVX_RES( CB_DYNSPACING ) ),
     173           0 :     aHeightFT       ( this, SVX_RES( FT_HEIGHT ) ),
     174           0 :     aHeightEdit     ( this, SVX_RES( ED_HEIGHT ) ),
     175           0 :     aHeightDynBtn   ( this, SVX_RES( CB_HEIGHT_DYN ) ),
     176           0 :     aBspWin         ( this, SVX_RES( WN_BSP ) ),
     177           0 :     aBackgroundBtn  ( this, SVX_RES( BTN_EXTRAS ) ),
     178             : 
     179             :     nId                         ( nSetId ),
     180             :     pBBSet                      ( NULL ),
     181             :     bDisableQueryBox            ( sal_False ),
     182           0 :     bEnableBackgroundSelector   ( sal_True )
     183             : 
     184             : {
     185           0 :     InitHandler();
     186           0 :     aBspWin.EnableRTL( sal_False );
     187             : 
     188             :     // This Page needs ExchangeSupport
     189           0 :     SetExchangeSupport();
     190             : 
     191           0 :     FreeResource();
     192             : 
     193             :     // Set metrics
     194           0 :     FieldUnit eFUnit = GetModuleFieldUnit( rAttr );
     195           0 :     SetFieldUnit( aDistEdit, eFUnit );
     196           0 :     SetFieldUnit( aHeightEdit, eFUnit );
     197           0 :     SetFieldUnit( aLMEdit, eFUnit );
     198           0 :     SetFieldUnit( aRMEdit, eFUnit );
     199             : 
     200           0 :     aTurnOnBox.SetAccessibleRelationMemberOf( &aFrm );
     201           0 :     aCntSharedBox.SetAccessibleRelationMemberOf( &aFrm );
     202           0 :     aCntSharedFirstBox.SetAccessibleRelationMemberOf( &aFrm );
     203           0 :     aLMLbl.SetAccessibleRelationMemberOf( &aFrm );
     204           0 :     aLMEdit.SetAccessibleRelationMemberOf( &aFrm );
     205           0 :     aRMLbl.SetAccessibleRelationMemberOf( &aFrm );
     206           0 :     aRMEdit.SetAccessibleRelationMemberOf( &aFrm );
     207           0 :     aDistFT.SetAccessibleRelationMemberOf( &aFrm );
     208           0 :     aDistEdit.SetAccessibleRelationMemberOf( &aFrm );
     209           0 :     aDynSpacingCB.SetAccessibleRelationMemberOf( &aFrm );
     210           0 :     aHeightFT.SetAccessibleRelationMemberOf( &aFrm );
     211           0 :     aHeightEdit.SetAccessibleRelationMemberOf( &aFrm );
     212           0 :     aHeightDynBtn.SetAccessibleRelationMemberOf( &aFrm );
     213           0 :     aBackgroundBtn.SetAccessibleRelationMemberOf(&aFrm);
     214           0 : }
     215             : 
     216             : // -----------------------------------------------------------------------
     217             : 
     218           0 : SvxHFPage::~SvxHFPage()
     219             : {
     220           0 :     delete pBBSet;
     221           0 : }
     222             : 
     223             : // -----------------------------------------------------------------------
     224             : 
     225           0 : sal_Bool SvxHFPage::FillItemSet( SfxItemSet& rSet )
     226             : {
     227           0 :     const sal_uInt16        nWSize      = GetWhich( SID_ATTR_PAGE_SIZE );
     228           0 :     const sal_uInt16        nWLRSpace   = GetWhich( SID_ATTR_LRSPACE );
     229           0 :     const sal_uInt16        nWULSpace   = GetWhich( SID_ATTR_ULSPACE );
     230           0 :     const sal_uInt16        nWOn        = GetWhich( SID_ATTR_PAGE_ON );
     231           0 :     const sal_uInt16        nWDynamic   = GetWhich( SID_ATTR_PAGE_DYNAMIC );
     232           0 :     const sal_uInt16        nWDynSpacing = GetWhich( SID_ATTR_HDFT_DYNAMIC_SPACING );
     233           0 :     const sal_uInt16        nWShared    = GetWhich( SID_ATTR_PAGE_SHARED );
     234           0 :     const sal_uInt16        nWSharedFirst = GetWhich( SID_ATTR_PAGE_SHARED_FIRST );
     235           0 :     const sal_uInt16        nWBrush     = GetWhich( SID_ATTR_BRUSH );
     236           0 :     const sal_uInt16        nWBox       = GetWhich( SID_ATTR_BORDER_OUTER );
     237           0 :     const sal_uInt16        nWBoxInfo   = GetWhich( SID_ATTR_BORDER_INNER );
     238           0 :     const sal_uInt16        nWShadow    = GetWhich( SID_ATTR_BORDER_SHADOW );
     239             :     const sal_uInt16        aWhichTab[] = { nWSize,     nWSize,
     240             :                                         nWLRSpace,  nWLRSpace,
     241             :                                         nWULSpace,  nWULSpace,
     242             :                                         nWOn,       nWOn,
     243             :                                         nWDynamic,  nWDynamic,
     244             :                                         nWShared,   nWShared,
     245             :                                         nWSharedFirst,   nWSharedFirst,
     246             :                                         nWBrush,    nWBrush,
     247             :                                         nWBoxInfo,  nWBoxInfo,
     248             :                                         nWBox,      nWBox,
     249             :                                         nWShadow,   nWShadow,
     250             :                                         nWDynSpacing, nWDynSpacing,
     251           0 :                                         0 };
     252           0 :     const SfxItemSet&   rOldSet     = GetItemSet();
     253           0 :     SfxItemPool*        pPool       = rOldSet.GetPool();
     254             :     DBG_ASSERT( pPool, "no pool :-(" );
     255           0 :     SfxMapUnit          eUnit       = pPool->GetMetric( nWSize );
     256           0 :     SfxItemSet          aSet        ( *pPool, aWhichTab );
     257             : 
     258             :     //--------------------------------------------------------------------
     259             : 
     260           0 :     aSet.Put( SfxBoolItem( nWOn,      aTurnOnBox.IsChecked() ) );
     261           0 :     aSet.Put( SfxBoolItem( nWDynamic, aHeightDynBtn.IsChecked() ) );
     262           0 :     aSet.Put( SfxBoolItem( nWShared,  aCntSharedBox.IsChecked() ) );
     263           0 :     aSet.Put( SfxBoolItem( nWSharedFirst,  aCntSharedFirstBox.IsChecked() ) );
     264           0 :     if(aDynSpacingCB.IsVisible() && SFX_WHICH_MAX > nWDynSpacing)
     265             :     {
     266           0 :         SfxBoolItem* pBoolItem = (SfxBoolItem*)pPool->GetDefaultItem(nWDynSpacing).Clone();
     267           0 :         pBoolItem->SetValue(aDynSpacingCB.IsChecked());
     268           0 :         aSet.Put(*pBoolItem);
     269           0 :         delete pBoolItem;
     270             :     }
     271             : 
     272             :     // Size
     273           0 :     SvxSizeItem aSizeItem( (const SvxSizeItem&)rOldSet.Get( nWSize ) );
     274           0 :     Size        aSize( aSizeItem.GetSize() );
     275           0 :     long        nDist = GetCoreValue( aDistEdit, eUnit );
     276           0 :     long        nH    = GetCoreValue( aHeightEdit, eUnit );
     277             : 
     278           0 :     nH += nDist; // add distance
     279           0 :     aSize.Height() = nH;
     280           0 :     aSizeItem.SetSize( aSize );
     281           0 :     aSet.Put( aSizeItem );
     282             : 
     283             :     // Margins
     284           0 :     SvxLRSpaceItem aLR( nWLRSpace );
     285           0 :     aLR.SetLeft( (sal_uInt16)GetCoreValue( aLMEdit, eUnit ) );
     286           0 :     aLR.SetRight( (sal_uInt16)GetCoreValue( aRMEdit, eUnit ) );
     287           0 :     aSet.Put( aLR );
     288             : 
     289           0 :     SvxULSpaceItem aUL( nWULSpace );
     290           0 :     if ( nId == SID_ATTR_PAGE_HEADERSET )
     291           0 :         aUL.SetLower( (sal_uInt16)nDist );
     292             :     else
     293           0 :         aUL.SetUpper( (sal_uInt16)nDist );
     294           0 :     aSet.Put( aUL );
     295             : 
     296             :     // Background and border?
     297           0 :     if ( pBBSet )
     298           0 :         aSet.Put( *pBBSet );
     299             :     else
     300             :     {
     301             :         const SfxPoolItem* pItem;
     302             : 
     303           0 :         if ( SFX_ITEM_SET ==
     304           0 :              GetItemSet().GetItemState( GetWhich( nId ), sal_False, &pItem ) )
     305             :         {
     306             :             const SfxItemSet* _pSet;
     307           0 :             _pSet = &( (SvxSetItem*)pItem )->GetItemSet();
     308             : 
     309           0 :             if ( _pSet->GetItemState( nWBrush ) == SFX_ITEM_SET )
     310           0 :                 aSet.Put( (const SvxBrushItem&)_pSet->Get( nWBrush ) );
     311           0 :             if ( _pSet->GetItemState( nWBoxInfo ) == SFX_ITEM_SET )
     312           0 :                 aSet.Put( (const SvxBoxInfoItem&)_pSet->Get( nWBoxInfo ) );
     313           0 :             if ( _pSet->GetItemState( nWBox ) == SFX_ITEM_SET )
     314           0 :                 aSet.Put( (const SvxBoxItem&)_pSet->Get( nWBox ) );
     315           0 :             if ( _pSet->GetItemState( nWShadow ) == SFX_ITEM_SET )
     316           0 :                 aSet.Put( (const SvxShadowItem&)_pSet->Get( nWShadow ) );
     317             :         }
     318             :     }
     319             : 
     320             :     // Flush the SetItem
     321           0 :     SvxSetItem aSetItem( GetWhich( nId ), aSet );
     322           0 :     rSet.Put( aSetItem );
     323             : 
     324           0 :     return sal_True;
     325             : }
     326             : 
     327             : // -----------------------------------------------------------------------
     328           0 : void SvxHFPage::Reset( const SfxItemSet& rSet )
     329             : {
     330           0 :     ActivatePage( rSet );
     331           0 :     ResetBackground_Impl( rSet );
     332             : 
     333           0 :     SfxItemPool* pPool = GetItemSet().GetPool();
     334             :     DBG_ASSERT( pPool, "Where is the pool" );
     335           0 :     SfxMapUnit eUnit = pPool->GetMetric( GetWhich( SID_ATTR_PAGE_SIZE ) );
     336             : 
     337             :     // Evaluate header-/footer- attributes
     338           0 :     const SvxSetItem* pSetItem = 0;
     339             : 
     340           0 :     if ( SFX_ITEM_SET == rSet.GetItemState( GetWhich(nId), sal_False,
     341           0 :                                             (const SfxPoolItem**)&pSetItem ) )
     342             :     {
     343           0 :         const SfxItemSet& rHeaderSet = pSetItem->GetItemSet();
     344             :         const SfxBoolItem& rHeaderOn =
     345           0 :             (const SfxBoolItem&)rHeaderSet.Get(GetWhich(SID_ATTR_PAGE_ON));
     346             : 
     347           0 :         aTurnOnBox.Check(rHeaderOn.GetValue());
     348             : 
     349           0 :         if ( rHeaderOn.GetValue() )
     350             :         {
     351             :             const SfxBoolItem& rDynamic =
     352           0 :                 (const SfxBoolItem&)rHeaderSet.Get( GetWhich( SID_ATTR_PAGE_DYNAMIC ) );
     353             :             const SfxBoolItem& rShared =
     354           0 :                 (const SfxBoolItem&)rHeaderSet.Get( GetWhich( SID_ATTR_PAGE_SHARED ) );
     355           0 :             const SfxBoolItem* pSharedFirst = 0;
     356           0 :             if (rHeaderSet.HasItem(GetWhich(SID_ATTR_PAGE_SHARED_FIRST)))
     357           0 :                 pSharedFirst = (const SfxBoolItem*)&rHeaderSet.Get( GetWhich( SID_ATTR_PAGE_SHARED_FIRST ) );
     358             :             const SvxSizeItem& rSize =
     359           0 :                 (const SvxSizeItem&)rHeaderSet.Get( GetWhich( SID_ATTR_PAGE_SIZE ) );
     360             :             const SvxULSpaceItem& rUL =
     361           0 :                 (const SvxULSpaceItem&)rHeaderSet.Get( GetWhich( SID_ATTR_ULSPACE ) );
     362             :             const SvxLRSpaceItem& rLR =
     363           0 :                 (const SvxLRSpaceItem&)rHeaderSet.Get( GetWhich( SID_ATTR_LRSPACE ) );
     364           0 :             if(aDynSpacingCB.IsVisible())
     365             :             {
     366             :                 const SfxBoolItem& rDynSpacing =
     367           0 :                     (const SfxBoolItem&)rHeaderSet.Get(GetWhich(SID_ATTR_HDFT_DYNAMIC_SPACING));
     368           0 :                 aDynSpacingCB.Check(rDynSpacing.GetValue());
     369             :             }
     370             : 
     371             : 
     372           0 :             if ( nId == SID_ATTR_PAGE_HEADERSET )
     373             :             {   // Header
     374           0 :                 SetMetricValue( aDistEdit, rUL.GetLower(), eUnit );
     375           0 :                 SetMetricValue( aHeightEdit, rSize.GetSize().Height() - rUL.GetLower(), eUnit );
     376             :             }
     377             :             else
     378             :             {   // Footer
     379           0 :                 SetMetricValue( aDistEdit, rUL.GetUpper(), eUnit );
     380           0 :                 SetMetricValue( aHeightEdit, rSize.GetSize().Height() - rUL.GetUpper(), eUnit );
     381             :             }
     382             : 
     383           0 :             aHeightDynBtn.Check(rDynamic.GetValue());
     384           0 :             SetMetricValue( aLMEdit, rLR.GetLeft(), eUnit );
     385           0 :             SetMetricValue( aRMEdit, rLR.GetRight(), eUnit );
     386           0 :             aCntSharedBox.Check(rShared.GetValue());
     387           0 :             if (pSharedFirst)
     388           0 :                 aCntSharedFirstBox.Check(pSharedFirst->GetValue());
     389             :             else
     390           0 :                 aCntSharedFirstBox.Hide();
     391             :         }
     392             :         else
     393           0 :             pSetItem = 0;
     394             :     }
     395             :     else
     396             :     {
     397             :         // defaults for distance and height
     398           0 :         long nDefaultDist = DEF_DIST_WRITER;
     399           0 :         const SfxPoolItem* pExt1 = GetItem( rSet, SID_ATTR_PAGE_EXT1 );
     400           0 :         const SfxPoolItem* pExt2 = GetItem( rSet, SID_ATTR_PAGE_EXT2 );
     401             : 
     402           0 :         if ( pExt1 && pExt1->ISA(SfxBoolItem) && pExt2 && pExt2->ISA(SfxBoolItem) )
     403           0 :             nDefaultDist = DEF_DIST_CALC;
     404             : 
     405           0 :         SetMetricValue( aDistEdit, nDefaultDist, SFX_MAPUNIT_100TH_MM );
     406           0 :         SetMetricValue( aHeightEdit, 500, SFX_MAPUNIT_100TH_MM );
     407             :     }
     408             : 
     409           0 :     if ( !pSetItem )
     410             :     {
     411           0 :         aTurnOnBox.Check( sal_False );
     412           0 :         aHeightDynBtn.Check( sal_True );
     413           0 :         aCntSharedBox.Check( sal_True );
     414           0 :         aCntSharedFirstBox.Check( sal_True );
     415             :     }
     416             : 
     417           0 :     TurnOnHdl(0);
     418             : 
     419           0 :     aTurnOnBox.SaveValue();
     420           0 :     aDistEdit.SaveValue();
     421           0 :     aHeightEdit.SaveValue();
     422           0 :     aHeightDynBtn.SaveValue();
     423           0 :     aLMEdit.SaveValue();
     424           0 :     aRMEdit.SaveValue();
     425           0 :     aCntSharedBox.SaveValue();
     426           0 :     RangeHdl( 0 );
     427             : 
     428           0 :     const SfxPoolItem* pItem = 0;
     429             :     SfxObjectShell* pShell;
     430           0 :     if(SFX_ITEM_SET == rSet.GetItemState(SID_HTML_MODE, sal_False, &pItem) ||
     431             :         ( 0 != (pShell = SfxObjectShell::Current()) &&
     432           0 :                     0 != (pItem = pShell->GetItem(SID_HTML_MODE))))
     433             :     {
     434           0 :         sal_uInt16 nHtmlMode = 0;
     435           0 :         nHtmlMode = ((SfxUInt16Item*)pItem)->GetValue();
     436           0 :         if(nHtmlMode & HTMLMODE_ON)
     437             :         {
     438           0 :             aCntSharedBox.Hide();
     439           0 :             aBackgroundBtn.Hide();
     440             :         }
     441             :     }
     442             : 
     443           0 : }
     444             : 
     445           0 : void SvxHFPage::InitHandler()
     446             : {
     447           0 :     aTurnOnBox.SetClickHdl(LINK(this,   SvxHFPage, TurnOnHdl));
     448           0 :     aDistEdit.SetModifyHdl(LINK(this,   SvxHFPage, DistModify));
     449           0 :     aDistEdit.SetLoseFocusHdl(LINK(this, SvxHFPage, RangeHdl));
     450             : 
     451           0 :     aHeightEdit.SetModifyHdl(LINK(this,     SvxHFPage, HeightModify));
     452           0 :     aHeightEdit.SetLoseFocusHdl(LINK(this,SvxHFPage,RangeHdl));
     453             : 
     454           0 :     aLMEdit.SetModifyHdl(LINK(this,         SvxHFPage, BorderModify));
     455           0 :     aLMEdit.SetLoseFocusHdl(LINK(this,  SvxHFPage, RangeHdl));
     456           0 :     aRMEdit.SetModifyHdl(LINK(this,         SvxHFPage, BorderModify));
     457           0 :     aRMEdit.SetLoseFocusHdl(LINK(this,  SvxHFPage, RangeHdl));
     458           0 :     aBackgroundBtn.SetClickHdl(LINK(this,SvxHFPage, BackgroundHdl));
     459           0 : }
     460             : 
     461           0 : IMPL_LINK( SvxHFPage, TurnOnHdl, CheckBox *, pBox )
     462             : {
     463           0 :     if ( aTurnOnBox.IsChecked() )
     464             :     {
     465           0 :         aDistFT.Enable();
     466           0 :         aDistEdit.Enable();
     467           0 :         aDynSpacingCB.Enable();
     468           0 :         aHeightFT.Enable();
     469           0 :         aHeightEdit.Enable();
     470           0 :         aHeightDynBtn.Enable();
     471           0 :         aLMLbl.Enable();
     472           0 :         aLMEdit.Enable();
     473           0 :         aRMLbl.Enable();
     474           0 :         aRMEdit.Enable();
     475             : 
     476           0 :         sal_uInt16 nUsage = aBspWin.GetUsage();
     477             : 
     478           0 :         if( nUsage == SVX_PAGE_RIGHT || nUsage == SVX_PAGE_LEFT )
     479           0 :             aCntSharedBox.Disable();
     480             :         else
     481             :         {
     482           0 :             aCntSharedBox.Enable();
     483           0 :             aCntSharedFirstBox.Enable();
     484             :         }
     485           0 :         aBackgroundBtn.Enable();
     486             :     }
     487             :     else
     488             :     {
     489           0 :         sal_Bool bDelete = sal_True;
     490             : 
     491           0 :         if ( !bDisableQueryBox && pBox && aTurnOnBox.GetSavedValue() == sal_True )
     492           0 :             bDelete = ( QueryBox( this, SVX_RES( RID_SVXQBX_DELETE_HEADFOOT ) ).Execute() == RET_YES );
     493             : 
     494           0 :         if ( bDelete )
     495             :         {
     496           0 :             aDistFT.Disable();
     497           0 :             aDistEdit.Disable();
     498           0 :             aDynSpacingCB.Enable(sal_False);
     499           0 :             aHeightFT.Disable();
     500           0 :             aHeightEdit.Disable();
     501           0 :             aHeightDynBtn.Disable();
     502             : 
     503           0 :             aLMLbl.Disable();
     504           0 :             aLMEdit.Disable();
     505           0 :             aRMLbl.Disable();
     506           0 :             aRMEdit.Disable();
     507             : 
     508           0 :             aCntSharedBox.Disable();
     509           0 :             aBackgroundBtn.Disable();
     510             :         }
     511             :         else
     512           0 :             aTurnOnBox.Check();
     513             :     }
     514           0 :     UpdateExample();
     515           0 :     return 0;
     516             : }
     517             : 
     518           0 : IMPL_LINK_NOARG_INLINE_START(SvxHFPage, DistModify)
     519             : {
     520           0 :     UpdateExample();
     521           0 :     return 0;
     522             : }
     523           0 : IMPL_LINK_NOARG_INLINE_END(SvxHFPage, DistModify)
     524             : 
     525           0 : IMPL_LINK_NOARG_INLINE_START(SvxHFPage, HeightModify)
     526             : {
     527           0 :     UpdateExample();
     528             : 
     529           0 :     return 0;
     530             : }
     531           0 : IMPL_LINK_NOARG_INLINE_END(SvxHFPage, HeightModify)
     532             : 
     533           0 : IMPL_LINK_NOARG_INLINE_START(SvxHFPage, BorderModify)
     534             : {
     535           0 :     UpdateExample();
     536           0 :     return 0;
     537             : }
     538           0 : IMPL_LINK_NOARG_INLINE_END(SvxHFPage, BorderModify)
     539             : 
     540           0 : IMPL_LINK_NOARG(SvxHFPage, BackgroundHdl)
     541             : {
     542           0 :     if ( !pBBSet )
     543             :     {
     544             :         // Use only the necessary items for border and background
     545           0 :         sal_uInt16 nBrush = GetWhich( SID_ATTR_BRUSH );
     546           0 :         sal_uInt16 nOuter = GetWhich( SID_ATTR_BORDER_OUTER );
     547           0 :         sal_uInt16 nInner = GetWhich( SID_ATTR_BORDER_INNER, sal_False );
     548           0 :         sal_uInt16 nShadow = GetWhich( SID_ATTR_BORDER_SHADOW );
     549             : 
     550             :         // Create an empty set
     551           0 :         pBBSet = new SfxItemSet( *GetItemSet().GetPool(), nBrush, nBrush,
     552             :                                  nOuter, nOuter, nInner, nInner,
     553           0 :                                  nShadow, nShadow, 0 );
     554             :         const SfxPoolItem* pItem;
     555             : 
     556           0 :         if ( SFX_ITEM_SET ==
     557           0 :              GetItemSet().GetItemState( GetWhich( nId ), sal_False, &pItem ) )
     558             :             // if there is one that is already set, then use this
     559           0 :             pBBSet->Put( ( (SvxSetItem*)pItem)->GetItemSet() );
     560             : 
     561           0 :         if ( SFX_ITEM_SET ==
     562           0 :              GetItemSet().GetItemState( nInner, sal_False, &pItem ) )
     563             :             // The set InfoItem is always required
     564           0 :             pBBSet->Put( *pItem );
     565             :     }
     566             : 
     567           0 :     if ( svx::ShowBorderBackgroundDlg( this, pBBSet, bEnableBackgroundSelector ) )
     568             :     {
     569             :         //----------------------------------------------------------------
     570             : 
     571           0 :         sal_uInt16 nWhich = GetWhich( SID_ATTR_BRUSH );
     572             : 
     573           0 :         if ( pBBSet->GetItemState( nWhich ) == SFX_ITEM_SET )
     574             :         {
     575           0 :             const SvxBrushItem& rItem = (const SvxBrushItem&)pBBSet->Get( nWhich );
     576           0 :             if ( nId == SID_ATTR_PAGE_HEADERSET )
     577           0 :                 aBspWin.SetHdColor( rItem.GetColor() );
     578             :             else
     579           0 :                 aBspWin.SetFtColor( rItem.GetColor() );
     580             :         }
     581             : 
     582             :         //----------------------------------------------------------------
     583             : 
     584           0 :         nWhich = GetWhich( SID_ATTR_BORDER_OUTER );
     585             : 
     586           0 :         if ( pBBSet->GetItemState( nWhich ) == SFX_ITEM_SET )
     587             :         {
     588           0 :             const SvxBoxItem& rItem = (const SvxBoxItem&)pBBSet->Get( nWhich );
     589             : 
     590           0 :             if ( nId == SID_ATTR_PAGE_HEADERSET )
     591           0 :                 aBspWin.SetHdBorder( rItem );
     592             :             else
     593           0 :                 aBspWin.SetFtBorder( rItem );
     594             :         }
     595             : 
     596           0 :         UpdateExample();
     597             :     }
     598             : 
     599           0 :     return 0;
     600             : }
     601             : 
     602           0 : void SvxHFPage::UpdateExample()
     603             : {
     604           0 :     if ( nId == SID_ATTR_PAGE_HEADERSET )
     605             :     {
     606           0 :         aBspWin.SetHeader( aTurnOnBox.IsChecked() );
     607           0 :         aBspWin.SetHdHeight( GetCoreValue( aHeightEdit, SFX_MAPUNIT_TWIP ) );
     608           0 :         aBspWin.SetHdDist( GetCoreValue( aDistEdit, SFX_MAPUNIT_TWIP ) );
     609           0 :         aBspWin.SetHdLeft( GetCoreValue( aLMEdit, SFX_MAPUNIT_TWIP ) );
     610           0 :         aBspWin.SetHdRight( GetCoreValue( aRMEdit, SFX_MAPUNIT_TWIP ) );
     611             :     }
     612             :     else
     613             :     {
     614           0 :         aBspWin.SetFooter( aTurnOnBox.IsChecked() );
     615           0 :         aBspWin.SetFtHeight( GetCoreValue( aHeightEdit, SFX_MAPUNIT_TWIP ) );
     616           0 :         aBspWin.SetFtDist( GetCoreValue( aDistEdit, SFX_MAPUNIT_TWIP ) );
     617           0 :         aBspWin.SetFtLeft( GetCoreValue( aLMEdit, SFX_MAPUNIT_TWIP ) );
     618           0 :         aBspWin.SetFtRight( GetCoreValue( aRMEdit, SFX_MAPUNIT_TWIP ) );
     619             :     }
     620           0 :     aBspWin.Invalidate();
     621           0 : }
     622             : 
     623           0 : void SvxHFPage::ResetBackground_Impl( const SfxItemSet& rSet )
     624             : {
     625           0 :     sal_uInt16 nWhich = GetWhich( SID_ATTR_PAGE_HEADERSET );
     626             : 
     627           0 :     if ( rSet.GetItemState( nWhich, sal_False ) == SFX_ITEM_SET )
     628             :     {
     629             :         const SvxSetItem& rSetItem =
     630           0 :             (const SvxSetItem&)rSet.Get( nWhich, sal_False );
     631           0 :         const SfxItemSet& rTmpSet = rSetItem.GetItemSet();
     632             :         const SfxBoolItem& rOn =
     633           0 :             (const SfxBoolItem&)rTmpSet.Get( GetWhich( SID_ATTR_PAGE_ON ) );
     634             : 
     635           0 :         if ( rOn.GetValue() )
     636             :         {
     637           0 :             nWhich = GetWhich( SID_ATTR_BRUSH );
     638             : 
     639           0 :             if ( rTmpSet.GetItemState( nWhich ) == SFX_ITEM_SET )
     640             :             {
     641           0 :                 const SvxBrushItem& rItem = (const SvxBrushItem&)rTmpSet.Get( nWhich );
     642           0 :                 aBspWin.SetHdColor( rItem.GetColor() );
     643             :             }
     644           0 :             nWhich = GetWhich( SID_ATTR_BORDER_OUTER );
     645             : 
     646           0 :             if ( rTmpSet.GetItemState( nWhich ) == SFX_ITEM_SET )
     647             :             {
     648             :                 const SvxBoxItem& rItem =
     649           0 :                     (const SvxBoxItem&)rTmpSet.Get( nWhich );
     650           0 :                 aBspWin.SetHdBorder( rItem );
     651             :             }
     652             :         }
     653             :     }
     654             : 
     655           0 :     nWhich = GetWhich( SID_ATTR_PAGE_FOOTERSET );
     656             : 
     657           0 :     if ( rSet.GetItemState( nWhich, sal_False ) == SFX_ITEM_SET )
     658             :     {
     659             :         const SvxSetItem& rSetItem =
     660           0 :             (const SvxSetItem&)rSet.Get( nWhich, sal_False );
     661           0 :         const SfxItemSet& rTmpSet = rSetItem.GetItemSet();
     662             :         const SfxBoolItem& rOn =
     663           0 :             (const SfxBoolItem&)rTmpSet.Get( GetWhich( SID_ATTR_PAGE_ON ) );
     664             : 
     665           0 :         if ( rOn.GetValue() )
     666             :         {
     667           0 :             nWhich = GetWhich( SID_ATTR_BRUSH );
     668             : 
     669           0 :             if ( rTmpSet.GetItemState( nWhich ) == SFX_ITEM_SET )
     670             :             {
     671           0 :                 const SvxBrushItem& rItem = (const SvxBrushItem&)rTmpSet.Get( nWhich );
     672           0 :                 aBspWin.SetFtColor( rItem.GetColor() );
     673             :             }
     674           0 :             nWhich = GetWhich( SID_ATTR_BORDER_OUTER );
     675             : 
     676           0 :             if ( rTmpSet.GetItemState( nWhich ) == SFX_ITEM_SET )
     677             :             {
     678             :                 const SvxBoxItem& rItem =
     679           0 :                     (const SvxBoxItem&)rTmpSet.Get( nWhich );
     680           0 :                 aBspWin.SetFtBorder( rItem );
     681             :             }
     682             :         }
     683             :     }
     684           0 :     nWhich = GetWhich( SID_ATTR_BRUSH );
     685             : 
     686           0 :     if ( rSet.GetItemState( nWhich ) >= SFX_ITEM_AVAILABLE )
     687             :     {
     688           0 :         const SvxBrushItem& rItem = (const SvxBrushItem&)rSet.Get( nWhich );
     689           0 :         aBspWin.SetColor( rItem.GetColor() );
     690           0 :         const Graphic* pGrf = rItem.GetGraphic();
     691             : 
     692           0 :         if ( pGrf )
     693             :         {
     694           0 :             Bitmap aBitmap = pGrf->GetBitmap();
     695           0 :             aBspWin.SetBitmap( &aBitmap );
     696             :         }
     697             :         else
     698           0 :             aBspWin.SetBitmap( NULL );
     699             :     }
     700           0 :     nWhich = GetWhich( SID_ATTR_BORDER_OUTER );
     701             : 
     702           0 :     if ( rSet.GetItemState( nWhich ) >= SFX_ITEM_AVAILABLE )
     703             :     {
     704           0 :         const SvxBoxItem& rItem = (const SvxBoxItem&)rSet.Get( nWhich );
     705           0 :         aBspWin.SetBorder( rItem );
     706             :     }
     707           0 : }
     708             : 
     709           0 : void SvxHFPage::ActivatePage( const SfxItemSet& rSet )
     710             : {
     711           0 :     const SfxPoolItem* pItem = GetItem( rSet, SID_ATTR_LRSPACE );
     712             : 
     713           0 :     if ( pItem )
     714             :     {
     715             :         // Set left and right margins
     716           0 :         const SvxLRSpaceItem& rLRSpace = (const SvxLRSpaceItem&)*pItem;
     717             : 
     718           0 :         aBspWin.SetLeft( rLRSpace.GetLeft() );
     719           0 :         aBspWin.SetRight( rLRSpace.GetRight() );
     720             :     }
     721             :     else
     722             :     {
     723           0 :         aBspWin.SetLeft( 0 );
     724           0 :         aBspWin.SetRight( 0 );
     725             :     }
     726             : 
     727           0 :     pItem = GetItem( rSet, SID_ATTR_ULSPACE );
     728             : 
     729           0 :     if ( pItem )
     730             :     {
     731             :         // Set top and bottom margins
     732           0 :         const SvxULSpaceItem& rULSpace = (const SvxULSpaceItem&)*pItem;
     733             : 
     734           0 :         aBspWin.SetTop( rULSpace.GetUpper() );
     735           0 :         aBspWin.SetBottom( rULSpace.GetLower() );
     736             :     }
     737             :     else
     738             :     {
     739           0 :         aBspWin.SetTop( 0 );
     740           0 :         aBspWin.SetBottom( 0 );
     741             :     }
     742             : 
     743           0 :     sal_uInt16 nUsage = SVX_PAGE_ALL;
     744           0 :     pItem = GetItem( rSet, SID_ATTR_PAGE );
     745             : 
     746           0 :     if ( pItem )
     747           0 :         nUsage = ( (const SvxPageItem*)pItem )->GetPageUsage();
     748             : 
     749           0 :     aBspWin.SetUsage( nUsage );
     750             : 
     751           0 :     if ( SVX_PAGE_RIGHT == nUsage || SVX_PAGE_LEFT == nUsage )
     752           0 :         aCntSharedBox.Disable();
     753             :     else
     754             :     {
     755           0 :         aCntSharedBox.Enable();
     756           0 :         aCntSharedFirstBox.Enable();
     757             :     }
     758           0 :     pItem = GetItem( rSet, SID_ATTR_PAGE_SIZE );
     759             : 
     760           0 :     if ( pItem )
     761             :     {
     762             :         // Orientation and Size from the PageItem
     763           0 :         const SvxSizeItem& rSize = (const SvxSizeItem&)*pItem;
     764             :         // if the size is already swapped (Landscape)
     765           0 :         aBspWin.SetSize( rSize.GetSize() );
     766             :     }
     767             : 
     768             :     // Evaluate Header attribute
     769           0 :     const SvxSetItem* pSetItem = 0;
     770             : 
     771           0 :     if ( SFX_ITEM_SET == rSet.GetItemState( GetWhich( SID_ATTR_PAGE_HEADERSET ),
     772             :                                             sal_False,
     773           0 :                                             (const SfxPoolItem**)&pSetItem ) )
     774             :     {
     775           0 :         const SfxItemSet& rHeaderSet = pSetItem->GetItemSet();
     776             :         const SfxBoolItem& rHeaderOn =
     777           0 :             (const SfxBoolItem&)rHeaderSet.Get( GetWhich( SID_ATTR_PAGE_ON ) );
     778             : 
     779           0 :         if ( rHeaderOn.GetValue() )
     780             :         {
     781             :             const SvxSizeItem& rSize = (const SvxSizeItem&)
     782           0 :                 rHeaderSet.Get( GetWhich( SID_ATTR_PAGE_SIZE ) );
     783             :             const SvxULSpaceItem& rUL = (const SvxULSpaceItem&)
     784           0 :                 rHeaderSet.Get( GetWhich(SID_ATTR_ULSPACE ) );
     785             :             const SvxLRSpaceItem& rLR = (const SvxLRSpaceItem&)
     786           0 :                 rHeaderSet.Get( GetWhich( SID_ATTR_LRSPACE ) );
     787           0 :             long nDist = rUL.GetLower();
     788             : 
     789           0 :             aBspWin.SetHdHeight( rSize.GetSize().Height() - nDist );
     790           0 :             aBspWin.SetHdDist( nDist );
     791           0 :             aBspWin.SetHdLeft( rLR.GetLeft() );
     792           0 :             aBspWin.SetHdRight( rLR.GetRight() );
     793           0 :             aBspWin.SetHeader( sal_True );
     794             :         }
     795             :         else
     796           0 :             pSetItem = 0;
     797             :     }
     798             : 
     799           0 :     if ( !pSetItem )
     800             :     {
     801           0 :         aBspWin.SetHeader( sal_False );
     802             : 
     803           0 :         if ( SID_ATTR_PAGE_HEADERSET == nId )
     804             :         {
     805           0 :             aCntSharedBox.Disable();
     806           0 :             aCntSharedFirstBox.Disable();
     807             :         }
     808             :     }
     809           0 :     pSetItem = 0;
     810             : 
     811           0 :     if ( SFX_ITEM_SET == rSet.GetItemState( GetWhich( SID_ATTR_PAGE_FOOTERSET ),
     812             :                                             sal_False,
     813           0 :                                             (const SfxPoolItem**)&pSetItem ) )
     814             :     {
     815           0 :         const SfxItemSet& rFooterSet = pSetItem->GetItemSet();
     816             :         const SfxBoolItem& rFooterOn =
     817           0 :             (const SfxBoolItem&)rFooterSet.Get( GetWhich( SID_ATTR_PAGE_ON ) );
     818             : 
     819           0 :         if ( rFooterOn.GetValue() )
     820             :         {
     821             :             const SvxSizeItem& rSize = (const SvxSizeItem&)
     822           0 :                 rFooterSet.Get( GetWhich( SID_ATTR_PAGE_SIZE ) );
     823             :             const SvxULSpaceItem& rUL = (const SvxULSpaceItem&)
     824           0 :                 rFooterSet.Get( GetWhich( SID_ATTR_ULSPACE ) );
     825             :             const SvxLRSpaceItem& rLR = (const SvxLRSpaceItem&)
     826           0 :                 rFooterSet.Get( GetWhich( SID_ATTR_LRSPACE ) );
     827           0 :             long nDist = rUL.GetUpper();
     828             : 
     829           0 :             aBspWin.SetFtHeight( rSize.GetSize().Height() - nDist );
     830           0 :             aBspWin.SetFtDist( nDist );
     831           0 :             aBspWin.SetFtLeft( rLR.GetLeft() );
     832           0 :             aBspWin.SetFtRight( rLR.GetRight() );
     833           0 :             aBspWin.SetFooter( sal_True );
     834             :         }
     835             :         else
     836           0 :             pSetItem = 0;
     837             :     }
     838             : 
     839           0 :     if ( !pSetItem )
     840             :     {
     841           0 :         aBspWin.SetFooter( sal_False );
     842             : 
     843           0 :         if ( SID_ATTR_PAGE_FOOTERSET == nId )
     844             :         {
     845           0 :             aCntSharedBox.Disable();
     846           0 :             aCntSharedFirstBox.Disable();
     847             :         }
     848             :     }
     849             : 
     850           0 :     pItem = GetItem( rSet, SID_ATTR_PAGE_EXT1 );
     851             : 
     852           0 :     if ( pItem && pItem->ISA(SfxBoolItem) )
     853             :     {
     854           0 :         aBspWin.SetTable( sal_True );
     855           0 :         aBspWin.SetHorz( ( (SfxBoolItem*)pItem )->GetValue() );
     856             :     }
     857             : 
     858           0 :     pItem = GetItem( rSet, SID_ATTR_PAGE_EXT2 );
     859             : 
     860           0 :     if ( pItem && pItem->ISA(SfxBoolItem) )
     861             :     {
     862           0 :         aBspWin.SetTable( sal_True );
     863           0 :         aBspWin.SetVert( ( (SfxBoolItem*)pItem )->GetValue() );
     864             :     }
     865           0 :     ResetBackground_Impl( rSet );
     866           0 :     RangeHdl( 0 );
     867           0 : }
     868             : 
     869           0 : int SvxHFPage::DeactivatePage( SfxItemSet* _pSet )
     870             : {
     871           0 :     if ( _pSet )
     872           0 :         FillItemSet( *_pSet );
     873           0 :     return LEAVE_PAGE;
     874             : }
     875             : 
     876           0 : IMPL_LINK_NOARG(SvxHFPage, RangeHdl)
     877             : {
     878           0 :     long nHHeight = aBspWin.GetHdHeight();
     879           0 :     long nHDist   = aBspWin.GetHdDist();
     880             : 
     881           0 :     long nFHeight = aBspWin.GetFtHeight();
     882           0 :     long nFDist   = aBspWin.GetFtDist();
     883             : 
     884             :     long nHeight = Max( (long)MINBODY,
     885           0 :         static_cast<long>(aHeightEdit.Denormalize( aHeightEdit.GetValue( FUNIT_TWIP ) ) ) );
     886           0 :     long nDist   = aTurnOnBox.IsChecked() ?
     887           0 :         static_cast<long>(aDistEdit.Denormalize( aDistEdit.GetValue( FUNIT_TWIP ) )) : 0;
     888             : 
     889             :     long nMin;
     890             :     long nMax;
     891             : 
     892           0 :     if ( nId == SID_ATTR_PAGE_HEADERSET )
     893             :     {
     894           0 :         nHHeight = nHeight;
     895           0 :         nHDist   = nDist;
     896             :     }
     897             :     else
     898             :     {
     899           0 :         nFHeight = nHeight;
     900           0 :         nFDist   = nDist;
     901             :     }
     902             : 
     903             :     // Current values of the side edges
     904           0 :     long nBT = aBspWin.GetTop();
     905           0 :     long nBB = aBspWin.GetBottom();
     906           0 :     long nBL = aBspWin.GetLeft();
     907           0 :     long nBR = aBspWin.GetRight();
     908             : 
     909           0 :     long nH  = aBspWin.GetSize().Height();
     910           0 :     long nW  = aBspWin.GetSize().Width();
     911             : 
     912             :     // Borders
     913           0 :     if ( nId == SID_ATTR_PAGE_HEADERSET )
     914             :     {
     915             :         // Header
     916           0 :         nMin = ( nH - nBB - nBT ) / 5; // 20%
     917             :         nMax = Max( nH - nMin - nHDist - nFDist - nFHeight - nBB - nBT,
     918           0 :                     nMin );
     919           0 :         aHeightEdit.SetMax( aHeightEdit.Normalize( nMax ), FUNIT_TWIP );
     920           0 :         nMin = ( nH - nBB - nBT ) / 5; // 20%
     921             :         nDist = Max( nH - nMin - nHHeight - nFDist - nFHeight - nBB - nBT,
     922           0 :                      long(0) );
     923           0 :         aDistEdit.SetMax( aDistEdit.Normalize( nDist ), FUNIT_TWIP );
     924             :     }
     925             :     else
     926             :     {
     927             :         // Footer
     928           0 :         nMin = ( nH - nBT - nBB ) / 5; // 20%
     929             :         nMax = Max( nH - nMin - nFDist - nHDist - nHHeight - nBT - nBB,
     930           0 :                     nMin );
     931           0 :         aHeightEdit.SetMax( aHeightEdit.Normalize( nMax ), FUNIT_TWIP );
     932           0 :         nMin = ( nH - nBT - nBB ) / 5; // 20%
     933             :         nDist = Max( nH - nMin - nFHeight - nHDist - nHHeight - nBT - nBB,
     934           0 :                      long(0) );
     935           0 :         aDistEdit.SetMax( aDistEdit.Normalize( nDist ), FUNIT_TWIP );
     936             :     }
     937             : 
     938             :     // Limit Indentation
     939             :     nMax = nW - nBL - nBR -
     940           0 :            static_cast<long>(aRMEdit.Denormalize( aRMEdit.GetValue( FUNIT_TWIP ) )) - MINBODY;
     941           0 :     aLMEdit.SetMax( aLMEdit.Normalize( nMax ), FUNIT_TWIP );
     942             : 
     943             :     nMax = nW - nBL - nBR -
     944           0 :            static_cast<long>(aLMEdit.Denormalize( aLMEdit.GetValue( FUNIT_TWIP ) )) - MINBODY;
     945           0 :     aRMEdit.SetMax( aLMEdit.Normalize( nMax ), FUNIT_TWIP );
     946           0 :     return 0;
     947             : }
     948             : 
     949           0 : static void lcl_Move(Window& rWin, sal_Int32 nDiff)
     950             : {
     951           0 :     Point aPos(rWin.GetPosPixel());
     952           0 :     aPos.Y() -= nDiff;
     953           0 :     rWin.SetPosPixel(aPos);
     954           0 : }
     955           0 : void SvxHFPage::EnableDynamicSpacing()
     956             : {
     957           0 :     aDynSpacingCB.Show();
     958             :     //move all following controls
     959             :     Window* aMoveWindows[] =
     960             :     {
     961             :         &aHeightFT,
     962             :         &aHeightEdit,
     963             :         &aHeightDynBtn,
     964             :         &aBackgroundBtn,
     965             :         0
     966           0 :     };
     967           0 :     sal_Int32 nOffset = aTurnOnBox.GetPosPixel().Y() - aCntSharedBox.GetPosPixel().Y();
     968           0 :     sal_Int32 nIdx = 0;
     969           0 :     while(aMoveWindows[nIdx])
     970           0 :         lcl_Move(*aMoveWindows[nIdx++], nOffset);
     971          57 : }
     972             : 
     973             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10