LCOV - code coverage report
Current view: top level - svx/source/dialog - hdft.cxx (source / functions) Hit Total Coverage
Test: commit 10e77ab3ff6f4314137acd6e2702a6e5c1ce1fae Lines: 1 535 0.2 %
Date: 2014-11-03 Functions: 2 34 5.9 %
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 <svl/itemiter.hxx>
      21             : #include <sfx2/app.hxx>
      22             : #include <sfx2/objsh.hxx>
      23             : #include <sfx2/module.hxx>
      24             : #include <vcl/msgbox.hxx>
      25             : #include <vcl/graph.hxx>
      26             : #include <sfx2/sfxsids.hrc>
      27             : #include <svx/svxids.hrc>
      28             : #include <svx/dialogs.hrc>
      29             : 
      30             : #include <svl/intitem.hxx>
      31             : 
      32             : #include <svx/hdft.hxx>
      33             : #include <svx/pageitem.hxx>
      34             : 
      35             : #include "svx/dlgutil.hxx"
      36             : #include <svx/dialmgr.hxx>
      37             : #include <sfx2/htmlmode.hxx>
      38             : 
      39             : #include <editeng/brushitem.hxx>
      40             : #include <editeng/lrspitem.hxx>
      41             : #include <editeng/ulspitem.hxx>
      42             : #include <editeng/shaditem.hxx>
      43             : #include <editeng/sizeitem.hxx>
      44             : #include <editeng/boxitem.hxx>
      45             : 
      46             : #include <svx/svxdlg.hxx>
      47             : #include <boost/scoped_ptr.hpp>
      48             : 
      49             : //UUUU
      50             : #include <svx/xdef.hxx>
      51             : #include <svx/xenum.hxx>
      52             : #include <svx/xfillit0.hxx>
      53             : #include <svx/unobrushitemhelper.hxx>
      54             : #include <sfx2/request.hxx>
      55             : 
      56             : using namespace com::sun::star;
      57             : 
      58             : // Word 97 incompatibility (#i19922#)
      59             : static const long MINBODY = 56;  // 1mm in twips rounded
      60             : 
      61             : // default distance to Header or footer
      62             : static const long DEF_DIST_WRITER = 500;    // 5mm (Writer)
      63             : static const long DEF_DIST_CALC = 250;      // 2.5mm (Calc)
      64             : 
      65             : static const sal_uInt16 pRanges[] =
      66             : {
      67             :     SID_ATTR_BRUSH,          SID_ATTR_BRUSH,
      68             : 
      69             :     //UUUU Support DrawingLayer FillStyles (no real call to below GetRanges()
      70             :     // detected, still do the complete transition)
      71             :     XATTR_FILL_FIRST,        XATTR_FILL_LAST,
      72             : 
      73             :     SID_ATTR_BORDER_OUTER,   SID_ATTR_BORDER_OUTER,
      74             :     SID_ATTR_BORDER_INNER,   SID_ATTR_BORDER_INNER,
      75             :     SID_ATTR_BORDER_SHADOW,  SID_ATTR_BORDER_SHADOW,
      76             :     SID_ATTR_LRSPACE,        SID_ATTR_LRSPACE,
      77             :     SID_ATTR_ULSPACE,        SID_ATTR_ULSPACE,
      78             :     SID_ATTR_PAGE_SIZE,      SID_ATTR_PAGE_SIZE,
      79             :     SID_ATTR_PAGE_HEADERSET, SID_ATTR_PAGE_HEADERSET,
      80             :     SID_ATTR_PAGE_FOOTERSET, SID_ATTR_PAGE_FOOTERSET,
      81             :     SID_ATTR_PAGE_ON,        SID_ATTR_PAGE_ON,
      82             :     SID_ATTR_PAGE_DYNAMIC,   SID_ATTR_PAGE_DYNAMIC,
      83             :     SID_ATTR_PAGE_SHARED,    SID_ATTR_PAGE_SHARED,
      84             :     SID_ATTR_PAGE_SHARED_FIRST,    SID_ATTR_PAGE_SHARED_FIRST,
      85             :     SID_ATTR_HDFT_DYNAMIC_SPACING, SID_ATTR_HDFT_DYNAMIC_SPACING,
      86             :     0
      87             : };
      88             : 
      89             : namespace svx {
      90             : 
      91           0 :     bool ShowBorderBackgroundDlg( vcl::Window* pParent, SfxItemSet* pBBSet,
      92             :             bool bEnableBackgroundSelector )
      93             :     {
      94           0 :         bool bRes = false;
      95           0 :         SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
      96           0 :         if(pFact)
      97             :         {
      98           0 :             boost::scoped_ptr<SfxAbstractTabDialog> pDlg(pFact->CreateSvxBorderBackgroundDlg( pParent, *pBBSet, bEnableBackgroundSelector ));
      99             :             DBG_ASSERT(pDlg, "Dialog creation failed!");
     100           0 :             if ( pDlg->Execute() == RET_OK && pDlg->GetOutputItemSet() )
     101             :             {
     102           0 :                 SfxItemIter aIter( *pDlg->GetOutputItemSet() );
     103           0 :                 const SfxPoolItem* pItem = aIter.FirstItem();
     104             : 
     105           0 :                 while ( pItem )
     106             :                 {
     107           0 :                     if ( !IsInvalidItem( pItem ) )
     108           0 :                         pBBSet->Put( *pItem );
     109           0 :                     pItem = aIter.NextItem();
     110             :                 }
     111           0 :                 bRes = true;
     112           0 :             }
     113             :         }
     114           0 :         return bRes;
     115             :     }
     116             : }
     117             : 
     118             : // returns the Which values to the range
     119             : 
     120             : 
     121           0 : const sal_uInt16* SvxHeaderPage::GetRanges()
     122             : {
     123           0 :     return pRanges;
     124             : }
     125             : 
     126             : 
     127             : 
     128           0 : SfxTabPage* SvxHeaderPage::Create( vcl::Window* pParent, const SfxItemSet* rSet )
     129             : {
     130           0 :     return new SvxHeaderPage( pParent, *rSet );
     131             : }
     132             : 
     133             : 
     134             : 
     135           0 : const sal_uInt16* SvxFooterPage::GetRanges()
     136             : {
     137           0 :     return pRanges;
     138             : }
     139             : 
     140             : 
     141             : 
     142           0 : SfxTabPage* SvxFooterPage::Create( vcl::Window* pParent, const SfxItemSet* rSet )
     143             : {
     144           0 :     return new SvxFooterPage( pParent, *rSet );
     145             : }
     146             : 
     147             : 
     148             : 
     149           0 : SvxHeaderPage::SvxHeaderPage( vcl::Window* pParent, const SfxItemSet& rAttr ) :
     150             : 
     151           0 :     SvxHFPage( pParent, rAttr, SID_ATTR_PAGE_HEADERSET )
     152             : 
     153             : {
     154           0 : }
     155             : 
     156             : 
     157             : 
     158           0 : SvxFooterPage::SvxFooterPage( vcl::Window* pParent, const SfxItemSet& rAttr ) :
     159             : 
     160           0 :     SvxHFPage( pParent, rAttr, SID_ATTR_PAGE_FOOTERSET )
     161             : 
     162             : {
     163           0 : }
     164             : 
     165             : 
     166           0 : SvxHFPage::SvxHFPage( vcl::Window* pParent, const SfxItemSet& rSet, sal_uInt16 nSetId ) :
     167             :     SfxTabPage(pParent, "HFFormatPage", "svx/ui/headfootformatpage.ui", &rSet),
     168             :     nId(nSetId),
     169             :     pBBSet(NULL),
     170             :     // bitfield
     171             :     mbDisableQueryBox(false),
     172             :     mbEnableBackgroundSelector(true),
     173           0 :     mbEnableDrawingLayerFillStyles(false)
     174             : {
     175           0 :     get(m_pCntSharedBox,"checkSameLR");
     176           0 :     get(m_pCntSharedFirstBox,"checkSameFP");
     177           0 :     get(m_pLMEdit,"spinMargLeft");
     178           0 :     get(m_pLMLbl,"labelLeftMarg");
     179           0 :     get(m_pRMEdit,"spinMargRight");
     180           0 :     get(m_pRMLbl,"labelRightMarg");
     181           0 :     get(m_pDistEdit,"spinSpacing");
     182           0 :     get(m_pDistFT,"labelSpacing");
     183           0 :     get(m_pDynSpacingCB,"checkDynSpacing");
     184           0 :     get(m_pHeightFT,"labelHeight");
     185           0 :     get(m_pHeightEdit,"spinHeight");
     186           0 :     get(m_pHeightDynBtn,"checkAutofit");
     187           0 :     get(m_pBspWin,"drawingareaPageHF");
     188           0 :     get(m_pBackgroundBtn,"buttonMore");
     189             : 
     190             :     //swap header <-> footer in UI
     191           0 :     if(nId == SID_ATTR_PAGE_FOOTERSET)
     192             :     {
     193           0 :         get(m_pPageLbl,"labelFooterFormat");
     194           0 :         get(m_pTurnOnBox, "checkFooterOn");
     195             :     }
     196             :     else //Header
     197             :     {
     198           0 :         get(m_pPageLbl,"labelHeaderFormat");
     199           0 :         get(m_pTurnOnBox, "checkHeaderOn");
     200             :     }
     201           0 :     m_pTurnOnBox->Show();
     202           0 :     m_pPageLbl->Show();
     203             : 
     204           0 :     InitHandler();
     205           0 :     m_pBspWin->EnableRTL( false );
     206             : 
     207             :     // This Page needs ExchangeSupport
     208           0 :     SetExchangeSupport();
     209             : 
     210             : 
     211             :     // Set metrics
     212           0 :     FieldUnit eFUnit = GetModuleFieldUnit( rSet );
     213           0 :     SetFieldUnit( *m_pDistEdit, eFUnit );
     214           0 :     SetFieldUnit( *m_pHeightEdit, eFUnit );
     215           0 :     SetFieldUnit( *m_pLMEdit, eFUnit );
     216           0 :     SetFieldUnit( *m_pRMEdit, eFUnit );
     217           0 : }
     218             : 
     219             : 
     220             : 
     221           0 : SvxHFPage::~SvxHFPage()
     222             : {
     223           0 :     delete pBBSet;
     224           0 : }
     225             : 
     226             : 
     227             : 
     228           0 : bool SvxHFPage::FillItemSet( SfxItemSet* rSet )
     229             : {
     230           0 :     const sal_uInt16 nWSize = GetWhich(SID_ATTR_PAGE_SIZE);
     231           0 :     const sal_uInt16 nWLRSpace = GetWhich(SID_ATTR_LRSPACE);
     232           0 :     const sal_uInt16 nWULSpace = GetWhich(SID_ATTR_ULSPACE);
     233           0 :     const sal_uInt16 nWOn = GetWhich(SID_ATTR_PAGE_ON);
     234           0 :     const sal_uInt16 nWDynamic = GetWhich(SID_ATTR_PAGE_DYNAMIC);
     235           0 :     const sal_uInt16 nWDynSpacing = GetWhich(SID_ATTR_HDFT_DYNAMIC_SPACING);
     236           0 :     const sal_uInt16 nWShared = GetWhich(SID_ATTR_PAGE_SHARED);
     237           0 :     const sal_uInt16 nWSharedFirst = GetWhich( SID_ATTR_PAGE_SHARED_FIRST );
     238           0 :     const sal_uInt16 nWBrush = GetWhich(SID_ATTR_BRUSH);
     239           0 :     const sal_uInt16 nWBox = GetWhich(SID_ATTR_BORDER_OUTER);
     240           0 :     const sal_uInt16 nWBoxInfo = GetWhich(SID_ATTR_BORDER_INNER);
     241           0 :     const sal_uInt16 nWShadow = GetWhich(SID_ATTR_BORDER_SHADOW);
     242             : 
     243             :     const sal_uInt16 aWhichTab[] = {
     244             :         nWSize, nWSize,
     245             :         nWLRSpace, nWLRSpace,
     246             :         nWULSpace, nWULSpace,
     247             :         nWOn, nWOn,
     248             :         nWDynamic, nWDynamic,
     249             :         nWShared, nWShared,
     250             :         nWSharedFirst, nWSharedFirst,
     251             :         nWBrush, nWBrush,
     252             :         nWBoxInfo, nWBoxInfo,
     253             :         nWBox, nWBox,
     254             :         nWShadow, nWShadow,
     255             :         nWDynSpacing, nWDynSpacing,
     256             : 
     257             :         //UUUU take over DrawingLayer FillStyles
     258             :         XATTR_FILL_FIRST, XATTR_FILL_LAST,                // [1014
     259             : 
     260           0 :         0, 0};
     261             : 
     262           0 :     const SfxItemSet& rOldSet = GetItemSet();
     263           0 :     SfxItemPool* pPool = rOldSet.GetPool();
     264             :     DBG_ASSERT(pPool,"no pool :-(");
     265           0 :     SfxMapUnit eUnit = pPool->GetMetric(nWSize);
     266           0 :     SfxItemSet aSet(*pPool,aWhichTab);
     267             : 
     268           0 :     if(mbEnableDrawingLayerFillStyles)
     269             :     {
     270             :         //UUUU When using the XATTR_FILLSTYLE DrawingLayer FillStyle definition
     271             :         // extra action has to be done here since the pool default is drawing::FillStyle_SOLID
     272             :         // instead of drawing::FillStyle_NONE (to have the default blue fill color at start).
     273           0 :         aSet.Put(XFillStyleItem(drawing::FillStyle_NONE));
     274             :     }
     275             : 
     276           0 :     aSet.Put( SfxBoolItem( nWOn,      m_pTurnOnBox->IsChecked() ) );
     277           0 :     aSet.Put( SfxBoolItem( nWDynamic, m_pHeightDynBtn->IsChecked() ) );
     278           0 :     aSet.Put( SfxBoolItem( nWShared,  m_pCntSharedBox->IsChecked() ) );
     279           0 :     if(m_pCntSharedFirstBox->IsVisible())
     280           0 :         aSet.Put( SfxBoolItem( nWSharedFirst,  m_pCntSharedFirstBox->IsChecked() ) );
     281           0 :     if(m_pDynSpacingCB->IsVisible() && SFX_WHICH_MAX > nWDynSpacing)
     282             :     {
     283           0 :         boost::scoped_ptr<SfxBoolItem> pBoolItem(static_cast<SfxBoolItem*>(pPool->GetDefaultItem(nWDynSpacing).Clone()));
     284           0 :         pBoolItem->SetValue(m_pDynSpacingCB->IsChecked());
     285           0 :         aSet.Put(*pBoolItem);
     286             :     }
     287             : 
     288             :     // Size
     289           0 :     SvxSizeItem aSizeItem( const_cast<SvxSizeItem&>( static_cast<const SvxSizeItem&>(rOldSet.Get( nWSize )) ));
     290           0 :     Size        aSize( aSizeItem.GetSize() );
     291           0 :     long        nDist = GetCoreValue( *m_pDistEdit, eUnit );
     292           0 :     long        nH    = GetCoreValue( *m_pHeightEdit, eUnit );
     293             : 
     294           0 :     nH += nDist; // add distance
     295           0 :     aSize.Height() = nH;
     296           0 :     aSizeItem.SetSize( aSize );
     297           0 :     aSet.Put( aSizeItem );
     298             : 
     299             :     // Margins
     300           0 :     SvxLRSpaceItem aLR( nWLRSpace );
     301           0 :     aLR.SetLeft( (sal_uInt16)GetCoreValue( *m_pLMEdit, eUnit ) );
     302           0 :     aLR.SetRight( (sal_uInt16)GetCoreValue( *m_pRMEdit, eUnit ) );
     303           0 :     aSet.Put( aLR );
     304             : 
     305           0 :     SvxULSpaceItem aUL( nWULSpace );
     306           0 :     if ( nId == SID_ATTR_PAGE_HEADERSET )
     307           0 :         aUL.SetLower( (sal_uInt16)nDist );
     308             :     else
     309           0 :         aUL.SetUpper( (sal_uInt16)nDist );
     310           0 :     aSet.Put( aUL );
     311             : 
     312             :     // Background and border?
     313           0 :     if (pBBSet)
     314             :     {
     315           0 :         aSet.Put(*pBBSet);
     316             :     }
     317             :     else
     318             :     {
     319             :         const SfxPoolItem* pItem;
     320             : 
     321           0 :         if(SfxItemState::SET == GetItemSet().GetItemState(GetWhich(nId), false, &pItem))
     322             :         {
     323           0 :             const SfxItemSet* _pSet = &(static_cast< const SvxSetItem* >(pItem)->GetItemSet());
     324             : 
     325           0 :             if(_pSet->GetItemState(nWBrush) == SfxItemState::SET)
     326             :             {
     327           0 :                 aSet.Put(_pSet->Get(nWBrush));
     328             :             }
     329             : 
     330           0 :             if(_pSet->GetItemState(nWBoxInfo) == SfxItemState::SET)
     331             :             {
     332           0 :                 aSet.Put(_pSet->Get(nWBoxInfo));
     333             :             }
     334             : 
     335           0 :             if(_pSet->GetItemState(nWBox) == SfxItemState::SET)
     336             :             {
     337           0 :                 aSet.Put(_pSet->Get(nWBox));
     338             :             }
     339             : 
     340           0 :             if(_pSet->GetItemState(nWShadow) == SfxItemState::SET)
     341             :             {
     342           0 :                 aSet.Put(_pSet->Get(nWShadow));
     343             :             }
     344             : 
     345             :             //UUUU take care of [XATTR_XATTR_FILL_FIRST .. XATTR_FILL_LAST]
     346           0 :             for(sal_uInt16 nFillStyleId(XATTR_FILL_FIRST); nFillStyleId <= XATTR_FILL_LAST; nFillStyleId++)
     347             :             {
     348           0 :                 if(_pSet->GetItemState(nFillStyleId) == SfxItemState::SET)
     349             :                 {
     350           0 :                     aSet.Put(_pSet->Get(nFillStyleId));
     351             :                 }
     352             :             }
     353             :         }
     354             :     }
     355             : 
     356             :     // Flush the SetItem
     357           0 :     SvxSetItem aSetItem( GetWhich( nId ), aSet );
     358           0 :     rSet->Put( aSetItem );
     359             : 
     360           0 :     return true;
     361             : }
     362             : 
     363             : 
     364           0 : void SvxHFPage::Reset( const SfxItemSet* rSet )
     365             : {
     366           0 :     ActivatePage( *rSet );
     367           0 :     ResetBackground_Impl( *rSet );
     368             : 
     369           0 :     SfxItemPool* pPool = GetItemSet().GetPool();
     370             :     DBG_ASSERT( pPool, "Where is the pool" );
     371           0 :     SfxMapUnit eUnit = pPool->GetMetric( GetWhich( SID_ATTR_PAGE_SIZE ) );
     372             : 
     373             :     //hide "same content on first page when this is calc
     374           0 :     bool bIsCalc = false;
     375           0 :     const SfxPoolItem* pExt1 = GetItem(*rSet, SID_ATTR_PAGE_EXT1);
     376           0 :     const SfxPoolItem* pExt2 = GetItem(*rSet, SID_ATTR_PAGE_EXT2);
     377           0 :     if (pExt1 && pExt1->ISA(SfxBoolItem) && pExt2 && pExt2->ISA(SfxBoolItem))
     378           0 :         bIsCalc = true;
     379           0 :     m_pCntSharedFirstBox->Show(!bIsCalc);
     380             : 
     381             :     // Evaluate header-/footer- attributes
     382           0 :     const SvxSetItem* pSetItem = 0;
     383             : 
     384           0 :     if ( SfxItemState::SET == rSet->GetItemState( GetWhich(nId), false,
     385           0 :                                             (const SfxPoolItem**)&pSetItem ) )
     386             :     {
     387           0 :         const SfxItemSet& rHeaderSet = pSetItem->GetItemSet();
     388             :         const SfxBoolItem& rHeaderOn =
     389           0 :             static_cast<const SfxBoolItem&>(rHeaderSet.Get(GetWhich(SID_ATTR_PAGE_ON)));
     390             : 
     391           0 :         m_pTurnOnBox->Check(rHeaderOn.GetValue());
     392             : 
     393           0 :         if ( rHeaderOn.GetValue() )
     394             :         {
     395             :             const SfxBoolItem& rDynamic =
     396           0 :                 static_cast<const SfxBoolItem&>(rHeaderSet.Get( GetWhich( SID_ATTR_PAGE_DYNAMIC ) ));
     397             :             const SfxBoolItem& rShared =
     398           0 :                 static_cast<const SfxBoolItem&>(rHeaderSet.Get( GetWhich( SID_ATTR_PAGE_SHARED ) ));
     399           0 :             const SfxBoolItem* pSharedFirst = 0;
     400           0 :             if (rHeaderSet.HasItem(GetWhich(SID_ATTR_PAGE_SHARED_FIRST)))
     401           0 :                 pSharedFirst = static_cast<const SfxBoolItem*>(&rHeaderSet.Get( GetWhich( SID_ATTR_PAGE_SHARED_FIRST ) ));
     402             :             const SvxSizeItem& rSize =
     403           0 :                 static_cast<const SvxSizeItem&>(rHeaderSet.Get( GetWhich( SID_ATTR_PAGE_SIZE ) ));
     404             :             const SvxULSpaceItem& rUL =
     405           0 :                 static_cast<const SvxULSpaceItem&>(rHeaderSet.Get( GetWhich( SID_ATTR_ULSPACE ) ));
     406             :             const SvxLRSpaceItem& rLR =
     407           0 :                 static_cast<const SvxLRSpaceItem&>(rHeaderSet.Get( GetWhich( SID_ATTR_LRSPACE ) ));
     408           0 :             if(m_pDynSpacingCB->IsVisible())
     409             :             {
     410             :                 const SfxBoolItem& rDynSpacing =
     411           0 :                     static_cast<const SfxBoolItem&>(rHeaderSet.Get(GetWhich(SID_ATTR_HDFT_DYNAMIC_SPACING)));
     412           0 :                 m_pDynSpacingCB->Check(rDynSpacing.GetValue());
     413             :             }
     414             : 
     415             : 
     416           0 :             if ( nId == SID_ATTR_PAGE_HEADERSET )
     417             :             {   // Header
     418           0 :                 SetMetricValue( *m_pDistEdit, rUL.GetLower(), eUnit );
     419           0 :                 SetMetricValue( *m_pHeightEdit, rSize.GetSize().Height() - rUL.GetLower(), eUnit );
     420             :             }
     421             :             else
     422             :             {   // Footer
     423           0 :                 SetMetricValue( *m_pDistEdit, rUL.GetUpper(), eUnit );
     424           0 :                 SetMetricValue( *m_pHeightEdit, rSize.GetSize().Height() - rUL.GetUpper(), eUnit );
     425             :             }
     426             : 
     427           0 :             m_pHeightDynBtn->Check(rDynamic.GetValue());
     428           0 :             SetMetricValue( *m_pLMEdit, rLR.GetLeft(), eUnit );
     429           0 :             SetMetricValue( *m_pRMEdit, rLR.GetRight(), eUnit );
     430           0 :             m_pCntSharedBox->Check(rShared.GetValue());
     431           0 :             if (pSharedFirst)
     432           0 :                 m_pCntSharedFirstBox->Check(pSharedFirst->GetValue());
     433             :             else
     434           0 :                 m_pCntSharedFirstBox->Hide();
     435             :         }
     436             :         else
     437           0 :             pSetItem = 0;
     438             :     }
     439             :     else
     440             :     {
     441             :         // defaults for distance and height
     442           0 :         long nDefaultDist = bIsCalc ? DEF_DIST_CALC : DEF_DIST_WRITER;
     443           0 :         SetMetricValue( *m_pDistEdit, nDefaultDist, SFX_MAPUNIT_100TH_MM );
     444           0 :         SetMetricValue( *m_pHeightEdit, 500, SFX_MAPUNIT_100TH_MM );
     445             :     }
     446             : 
     447           0 :     if ( !pSetItem )
     448             :     {
     449           0 :         m_pTurnOnBox->Check( false );
     450           0 :         m_pHeightDynBtn->Check( true );
     451           0 :         m_pCntSharedBox->Check( true );
     452           0 :         m_pCntSharedFirstBox->Check( true );
     453             :     }
     454             : 
     455           0 :     TurnOnHdl(0);
     456             : 
     457           0 :     m_pTurnOnBox->SaveValue();
     458           0 :     m_pDistEdit->SaveValue();
     459           0 :     m_pHeightEdit->SaveValue();
     460           0 :     m_pHeightDynBtn->SaveValue();
     461           0 :     m_pLMEdit->SaveValue();
     462           0 :     m_pRMEdit->SaveValue();
     463           0 :     m_pCntSharedBox->SaveValue();
     464           0 :     RangeHdl( 0 );
     465             : 
     466           0 :     const SfxPoolItem* pItem = 0;
     467             :     SfxObjectShell* pShell;
     468           0 :     if(SfxItemState::SET == rSet->GetItemState(SID_HTML_MODE, false, &pItem) ||
     469           0 :         ( 0 != (pShell = SfxObjectShell::Current()) &&
     470           0 :                     0 != (pItem = pShell->GetItem(SID_HTML_MODE))))
     471             :     {
     472           0 :         sal_uInt16 nHtmlMode = 0;
     473           0 :         nHtmlMode = static_cast<const SfxUInt16Item*>(pItem)->GetValue();
     474           0 :         if(nHtmlMode & HTMLMODE_ON)
     475             :         {
     476           0 :             m_pCntSharedBox->Hide();
     477           0 :             m_pBackgroundBtn->Hide();
     478             :         }
     479             :     }
     480             : 
     481           0 : }
     482             : 
     483           0 : void SvxHFPage::InitHandler()
     484             : {
     485           0 :     m_pTurnOnBox->SetClickHdl(LINK(this,   SvxHFPage, TurnOnHdl));
     486           0 :     m_pDistEdit->SetModifyHdl(LINK(this,   SvxHFPage, DistModify));
     487           0 :     m_pDistEdit->SetLoseFocusHdl(LINK(this, SvxHFPage, RangeHdl));
     488             : 
     489           0 :     m_pHeightEdit->SetModifyHdl(LINK(this,     SvxHFPage, HeightModify));
     490           0 :     m_pHeightEdit->SetLoseFocusHdl(LINK(this,SvxHFPage,RangeHdl));
     491             : 
     492           0 :     m_pLMEdit->SetModifyHdl(LINK(this,         SvxHFPage, BorderModify));
     493           0 :     m_pLMEdit->SetLoseFocusHdl(LINK(this,  SvxHFPage, RangeHdl));
     494           0 :     m_pRMEdit->SetModifyHdl(LINK(this,         SvxHFPage, BorderModify));
     495           0 :     m_pRMEdit->SetLoseFocusHdl(LINK(this,  SvxHFPage, RangeHdl));
     496           0 :     m_pBackgroundBtn->SetClickHdl(LINK(this,SvxHFPage, BackgroundHdl));
     497           0 : }
     498             : 
     499           0 : IMPL_LINK( SvxHFPage, TurnOnHdl, CheckBox *, pBox )
     500             : {
     501           0 :     if ( m_pTurnOnBox->IsChecked() )
     502             :     {
     503           0 :         m_pDistFT->Enable();
     504           0 :         m_pDistEdit->Enable();
     505           0 :         m_pDynSpacingCB->Enable();
     506           0 :         m_pHeightFT->Enable();
     507           0 :         m_pHeightEdit->Enable();
     508           0 :         m_pHeightDynBtn->Enable();
     509           0 :         m_pLMLbl->Enable();
     510           0 :         m_pLMEdit->Enable();
     511           0 :         m_pRMLbl->Enable();
     512           0 :         m_pRMEdit->Enable();
     513             : 
     514           0 :         sal_uInt16 nUsage = m_pBspWin->GetUsage();
     515             : 
     516           0 :         if( nUsage == SVX_PAGE_RIGHT || nUsage == SVX_PAGE_LEFT )
     517           0 :             m_pCntSharedBox->Disable();
     518             :         else
     519             :         {
     520           0 :             m_pCntSharedBox->Enable();
     521           0 :             m_pCntSharedFirstBox->Enable();
     522             :         }
     523           0 :         m_pBackgroundBtn->Enable();
     524             :     }
     525             :     else
     526             :     {
     527           0 :         bool bDelete = true;
     528             : 
     529           0 :         if ( !mbDisableQueryBox && pBox && m_pTurnOnBox->GetSavedValue() == sal_True )
     530             :         {
     531             :             short nResult;
     532           0 :             if (nId == SID_ATTR_PAGE_HEADERSET)
     533           0 :                 nResult = DeleteHeaderDialog(this).Execute();
     534             :             else
     535           0 :                 nResult = DeleteFooterDialog(this).Execute();
     536           0 :             bDelete = nResult == RET_YES;
     537             :         }
     538             : 
     539           0 :         if ( bDelete )
     540             :         {
     541           0 :             m_pDistFT->Disable();
     542           0 :             m_pDistEdit->Disable();
     543           0 :             m_pDynSpacingCB->Enable(false);
     544           0 :             m_pHeightFT->Disable();
     545           0 :             m_pHeightEdit->Disable();
     546           0 :             m_pHeightDynBtn->Disable();
     547             : 
     548           0 :             m_pLMLbl->Disable();
     549           0 :             m_pLMEdit->Disable();
     550           0 :             m_pRMLbl->Disable();
     551           0 :             m_pRMEdit->Disable();
     552             : 
     553           0 :             m_pCntSharedBox->Disable();
     554           0 :             m_pBackgroundBtn->Disable();
     555           0 :             m_pCntSharedFirstBox->Disable();
     556             :         }
     557             :         else
     558           0 :             m_pTurnOnBox->Check();
     559             :     }
     560           0 :     UpdateExample();
     561           0 :     return 0;
     562             : }
     563             : 
     564           0 : IMPL_LINK_NOARG_INLINE_START(SvxHFPage, DistModify)
     565             : {
     566           0 :     UpdateExample();
     567           0 :     return 0;
     568             : }
     569           0 : IMPL_LINK_NOARG_INLINE_END(SvxHFPage, DistModify)
     570             : 
     571           0 : IMPL_LINK_NOARG_INLINE_START(SvxHFPage, HeightModify)
     572             : {
     573           0 :     UpdateExample();
     574             : 
     575           0 :     return 0;
     576             : }
     577           0 : IMPL_LINK_NOARG_INLINE_END(SvxHFPage, HeightModify)
     578             : 
     579           0 : IMPL_LINK_NOARG_INLINE_START(SvxHFPage, BorderModify)
     580             : {
     581           0 :     UpdateExample();
     582           0 :     return 0;
     583             : }
     584           0 : IMPL_LINK_NOARG_INLINE_END(SvxHFPage, BorderModify)
     585             : 
     586           0 : IMPL_LINK_NOARG(SvxHFPage, BackgroundHdl)
     587             : {
     588           0 :     if(!pBBSet)
     589             :     {
     590             :         // Use only the necessary items for border and background
     591           0 :         const sal_uInt16 nOuter(GetWhich(SID_ATTR_BORDER_OUTER));
     592           0 :         const sal_uInt16 nInner(GetWhich(SID_ATTR_BORDER_INNER, false));
     593           0 :         const sal_uInt16 nShadow(GetWhich(SID_ATTR_BORDER_SHADOW));
     594             : 
     595           0 :         if(mbEnableDrawingLayerFillStyles)
     596             :         {
     597             :             pBBSet = new SfxItemSet(
     598           0 :                 *GetItemSet().GetPool(),
     599             :                 XATTR_FILL_FIRST, XATTR_FILL_LAST,  // DrawingLayer FillStyle definitions
     600             :                 SID_COLOR_TABLE, SID_BITMAP_LIST,   // XPropertyLists for Color, Gradient, Hatch and Graphic fills
     601             :                 nOuter, nOuter,
     602             :                 nInner, nInner,
     603             :                 nShadow, nShadow,
     604           0 :                 0, 0);
     605             : 
     606             :             //UUUU copy items for XPropertyList entries from the DrawModel so that
     607             :             // the Area TabPage can access them
     608             :             static const sal_uInt16 nCopyFlags[] = {
     609             :                 SID_COLOR_TABLE,
     610             :                 SID_GRADIENT_LIST,
     611             :                 SID_HATCH_LIST,
     612             :                 SID_BITMAP_LIST,
     613             :                 0
     614             :             };
     615             : 
     616           0 :             for(sal_uInt16 a(0); nCopyFlags[a]; a++)
     617             :             {
     618           0 :                 const SfxPoolItem* pItem = GetItemSet().GetItem(nCopyFlags[a]);
     619             : 
     620           0 :                 if(pItem)
     621             :                 {
     622           0 :                     pBBSet->Put(*pItem);
     623             :                 }
     624             :                 else
     625             :                 {
     626             :                     OSL_ENSURE(false, "XPropertyList missing (!)");
     627             :                 }
     628             :             }
     629             :         }
     630             :         else
     631             :         {
     632           0 :             const sal_uInt16 nBrush(GetWhich(SID_ATTR_BRUSH));
     633             : 
     634             :             pBBSet = new SfxItemSet(
     635           0 :                 *GetItemSet().GetPool(),
     636             :                 nBrush, nBrush,
     637             :                 nOuter, nOuter,
     638             :                 nInner, nInner,
     639             :                 nShadow, nShadow,
     640           0 :                 0, 0);
     641             :         }
     642             : 
     643             :         const SfxPoolItem* pItem;
     644             : 
     645           0 :         if(SfxItemState::SET == GetItemSet().GetItemState(GetWhich(nId), false, &pItem))
     646             :         {
     647             :             // If a SfxItemSet from the SetItem for SID_ATTR_PAGE_HEADERSET or
     648             :             // SID_ATTR_PAGE_FOOTERSET exists, use it's content
     649           0 :             pBBSet->Put(static_cast<const SvxSetItem*>(pItem)->GetItemSet());
     650             :         }
     651             :         else
     652             :         {
     653           0 :             if(mbEnableDrawingLayerFillStyles)
     654             :             {
     655             :                 //UUUU The style for header/footer is not yet created, need to reset
     656             :                 // XFillStyleItem to drawing::FillStyle_NONE which is the same as in the style
     657             :                 // initialization. This needs to be done since the pool default for
     658             :                 // XFillStyleItem is drawing::FillStyle_SOLID
     659           0 :                 pBBSet->Put(XFillStyleItem(drawing::FillStyle_NONE));
     660             :             }
     661             :         }
     662             : 
     663           0 :         if(SfxItemState::SET == GetItemSet().GetItemState(nInner, false, &pItem))
     664             :         {
     665             :             // The set InfoItem is always required
     666           0 :             pBBSet->Put(*pItem);
     667             :         }
     668             :     }
     669             : 
     670           0 :     SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
     671             : 
     672           0 :     if(pFact)
     673             :     {
     674             :         //UUUU
     675             :         SfxAbstractTabDialog* pDlg = pFact->CreateSvxBorderBackgroundDlg(
     676             :             this,
     677             :             *pBBSet,
     678             :             mbEnableBackgroundSelector,
     679           0 :             mbEnableDrawingLayerFillStyles);
     680             : 
     681             :         DBG_ASSERT(pDlg,"Dialog creation failed!");
     682           0 :         if(RET_OK == pDlg->Execute() && pDlg->GetOutputItemSet())
     683             :         {
     684           0 :             SfxItemIter aIter(*pDlg->GetOutputItemSet());
     685           0 :             const SfxPoolItem* pItem = aIter.FirstItem();
     686             : 
     687           0 :             while(pItem)
     688             :             {
     689           0 :                 if(!IsInvalidItem(pItem))
     690             :                 {
     691           0 :                     pBBSet->Put(*pItem);
     692             :                 }
     693             : 
     694           0 :                 pItem = aIter.NextItem();
     695             :             }
     696             : 
     697             :             {
     698           0 :                 drawinglayer::attribute::SdrAllFillAttributesHelperPtr aFillAttributes;
     699             : 
     700           0 :                 if(mbEnableDrawingLayerFillStyles)
     701             :                 {
     702             :                     //UUUU create FillAttributes directly from DrawingLayer FillStyle entries
     703           0 :                     aFillAttributes.reset(new drawinglayer::attribute::SdrAllFillAttributesHelper(*pBBSet));
     704             :                 }
     705             :                 else
     706             :                 {
     707           0 :                     const sal_uInt16 nWhich = GetWhich(SID_ATTR_BRUSH);
     708             : 
     709           0 :                     if(pBBSet->GetItemState(nWhich) == SfxItemState::SET)
     710             :                     {
     711             :                         //UUUU create FillAttributes from SvxBrushItem
     712           0 :                         const SvxBrushItem& rItem = static_cast< const SvxBrushItem& >(pBBSet->Get(nWhich));
     713           0 :                         SfxItemSet aTempSet(*pBBSet->GetPool(), XATTR_FILL_FIRST, XATTR_FILL_LAST);
     714             : 
     715           0 :                         setSvxBrushItemAsFillAttributesToTargetSet(rItem, aTempSet);
     716           0 :                         aFillAttributes.reset(new drawinglayer::attribute::SdrAllFillAttributesHelper(aTempSet));
     717             :                     }
     718             :                 }
     719             : 
     720           0 :                 if(SID_ATTR_PAGE_HEADERSET == nId)
     721             :                 {
     722             :                     //m_pBspWin->SetHdColor(rItem.GetColor());
     723           0 :                     m_pBspWin->setHeaderFillAttributes(aFillAttributes);
     724             :                 }
     725             :                 else
     726             :                 {
     727             :                     //m_pBspWin->SetFtColor(rItem.GetColor());
     728           0 :                     m_pBspWin->setFooterFillAttributes(aFillAttributes);
     729           0 :                 }
     730             :             }
     731             : 
     732             :             {
     733           0 :                 const sal_uInt16 nWhich = GetWhich(SID_ATTR_BORDER_OUTER);
     734             : 
     735           0 :                 if(pBBSet->GetItemState(nWhich) == SfxItemState::SET)
     736             :                 {
     737           0 :                     const SvxBoxItem& rItem = static_cast<const SvxBoxItem&>(pBBSet->Get(nWhich));
     738             : 
     739           0 :                     if(nId == SID_ATTR_PAGE_HEADERSET)
     740           0 :                         m_pBspWin->SetHdBorder(rItem);
     741             :                     else
     742           0 :                         m_pBspWin->SetFtBorder(rItem);
     743             :                 }
     744           0 :             }
     745             : 
     746             :         }
     747             : 
     748           0 :         UpdateExample();
     749             :     }
     750             : 
     751           0 :     return 0;
     752             : }
     753             : 
     754           0 : void SvxHFPage::UpdateExample()
     755             : {
     756           0 :     if ( nId == SID_ATTR_PAGE_HEADERSET )
     757             :     {
     758           0 :         m_pBspWin->SetHeader( m_pTurnOnBox->IsChecked() );
     759           0 :         m_pBspWin->SetHdHeight( GetCoreValue( *m_pHeightEdit, SFX_MAPUNIT_TWIP ) );
     760           0 :         m_pBspWin->SetHdDist( GetCoreValue( *m_pDistEdit, SFX_MAPUNIT_TWIP ) );
     761           0 :         m_pBspWin->SetHdLeft( GetCoreValue( *m_pLMEdit, SFX_MAPUNIT_TWIP ) );
     762           0 :         m_pBspWin->SetHdRight( GetCoreValue( *m_pRMEdit, SFX_MAPUNIT_TWIP ) );
     763             :     }
     764             :     else
     765             :     {
     766           0 :         m_pBspWin->SetFooter( m_pTurnOnBox->IsChecked() );
     767           0 :         m_pBspWin->SetFtHeight( GetCoreValue( *m_pHeightEdit, SFX_MAPUNIT_TWIP ) );
     768           0 :         m_pBspWin->SetFtDist( GetCoreValue( *m_pDistEdit, SFX_MAPUNIT_TWIP ) );
     769           0 :         m_pBspWin->SetFtLeft( GetCoreValue( *m_pLMEdit, SFX_MAPUNIT_TWIP ) );
     770           0 :         m_pBspWin->SetFtRight( GetCoreValue( *m_pRMEdit, SFX_MAPUNIT_TWIP ) );
     771             :     }
     772           0 :     m_pBspWin->Invalidate();
     773           0 : }
     774             : 
     775           0 : void SvxHFPage::ResetBackground_Impl( const SfxItemSet& rSet )
     776             : {
     777           0 :     sal_uInt16 nWhich(GetWhich(SID_ATTR_PAGE_HEADERSET));
     778             : 
     779           0 :     if (SfxItemState::SET == rSet.GetItemState(nWhich, false))
     780             :     {
     781           0 :         const SvxSetItem& rSetItem = static_cast< const SvxSetItem& >(rSet.Get(nWhich, false));
     782           0 :         const SfxItemSet& rTmpSet = rSetItem.GetItemSet();
     783           0 :         const SfxBoolItem& rOn = static_cast< const SfxBoolItem& >(rTmpSet.Get(GetWhich(SID_ATTR_PAGE_ON)));
     784             : 
     785           0 :         if(rOn.GetValue())
     786             :         {
     787           0 :             drawinglayer::attribute::SdrAllFillAttributesHelperPtr aHeaderFillAttributes;
     788             : 
     789           0 :             if(mbEnableDrawingLayerFillStyles)
     790             :             {
     791             :                 //UUUU create FillAttributes directly from DrawingLayer FillStyle entries
     792           0 :                 aHeaderFillAttributes.reset(new drawinglayer::attribute::SdrAllFillAttributesHelper(rTmpSet));
     793             :             }
     794             :             else
     795             :             {
     796           0 :                 nWhich = GetWhich(SID_ATTR_BRUSH);
     797             : 
     798           0 :                 if(SfxItemState::SET == rTmpSet.GetItemState(nWhich))
     799             :                 {
     800             :                     //UUUU create FillAttributes from SvxBrushItem
     801           0 :                     const SvxBrushItem& rItem = static_cast< const SvxBrushItem& >(rTmpSet.Get(nWhich));
     802           0 :                     SfxItemSet aTempSet(*rTmpSet.GetPool(), XATTR_FILL_FIRST, XATTR_FILL_LAST);
     803             : 
     804           0 :                     setSvxBrushItemAsFillAttributesToTargetSet(rItem, aTempSet);
     805           0 :                     aHeaderFillAttributes.reset(new drawinglayer::attribute::SdrAllFillAttributesHelper(aTempSet));
     806             :                 }
     807             :             }
     808             : 
     809           0 :             m_pBspWin->setHeaderFillAttributes(aHeaderFillAttributes);
     810           0 :             nWhich = GetWhich(SID_ATTR_BORDER_OUTER);
     811             : 
     812           0 :             if(rTmpSet.GetItemState(nWhich) == SfxItemState::SET)
     813             :             {
     814             :                 const SvxBoxItem& rItem =
     815           0 :                     static_cast<const SvxBoxItem&>(rTmpSet.Get(nWhich));
     816           0 :                 m_pBspWin->SetHdBorder(rItem);
     817           0 :             }
     818             :         }
     819             :     }
     820             : 
     821           0 :     nWhich = GetWhich(SID_ATTR_PAGE_FOOTERSET);
     822             : 
     823           0 :     if (SfxItemState::SET == rSet.GetItemState(nWhich, false))
     824             :     {
     825           0 :         const SvxSetItem& rSetItem = static_cast< const SvxSetItem& >(rSet.Get(nWhich, false));
     826           0 :         const SfxItemSet& rTmpSet = rSetItem.GetItemSet();
     827           0 :         const SfxBoolItem& rOn = static_cast< const SfxBoolItem& >(rTmpSet.Get(GetWhich(SID_ATTR_PAGE_ON)));
     828             : 
     829           0 :         if(rOn.GetValue())
     830             :         {
     831           0 :             drawinglayer::attribute::SdrAllFillAttributesHelperPtr aFooterFillAttributes;
     832             : 
     833           0 :             if(mbEnableDrawingLayerFillStyles)
     834             :             {
     835             :                 //UUUU create FillAttributes directly from DrawingLayer FillStyle entries
     836           0 :                 aFooterFillAttributes.reset(new drawinglayer::attribute::SdrAllFillAttributesHelper(rTmpSet));
     837             :             }
     838             :             else
     839             :             {
     840           0 :                 nWhich = GetWhich(SID_ATTR_BRUSH);
     841             : 
     842           0 :                 if(SfxItemState::SET == rTmpSet.GetItemState(nWhich))
     843             :                 {
     844             :                     //UUUU create FillAttributes from SvxBrushItem
     845           0 :                     const SvxBrushItem& rItem = static_cast< const SvxBrushItem& >(rTmpSet.Get(nWhich));
     846           0 :                     SfxItemSet aTempSet(*rTmpSet.GetPool(), XATTR_FILL_FIRST, XATTR_FILL_LAST);
     847             : 
     848           0 :                     setSvxBrushItemAsFillAttributesToTargetSet(rItem, aTempSet);
     849           0 :                     aFooterFillAttributes.reset(new drawinglayer::attribute::SdrAllFillAttributesHelper(aTempSet));
     850             :                 }
     851             :             }
     852             : 
     853           0 :             m_pBspWin->setFooterFillAttributes(aFooterFillAttributes);
     854           0 :             nWhich = GetWhich(SID_ATTR_BORDER_OUTER);
     855             : 
     856           0 :             if(rTmpSet.GetItemState(nWhich) == SfxItemState::SET)
     857             :             {
     858           0 :                 const SvxBoxItem& rItem = static_cast< const SvxBoxItem& >(rTmpSet.Get(nWhich));
     859           0 :                 m_pBspWin->SetFtBorder(rItem);
     860           0 :             }
     861             :         }
     862             :     }
     863             : 
     864           0 :     drawinglayer::attribute::SdrAllFillAttributesHelperPtr aPageFillAttributes;
     865             : 
     866           0 :     if(mbEnableDrawingLayerFillStyles)
     867             :     {
     868             :         //UUUU create FillAttributes directly from DrawingLayer FillStyle entries
     869           0 :         aPageFillAttributes.reset(new drawinglayer::attribute::SdrAllFillAttributesHelper(rSet));
     870             :     }
     871             :     else
     872             :     {
     873           0 :         nWhich = GetWhich(SID_ATTR_BRUSH);
     874             : 
     875           0 :         if(rSet.GetItemState(nWhich) >= SfxItemState::DEFAULT)
     876             :         {
     877             :             //UUUU create FillAttributes from SvxBrushItem
     878           0 :             const SvxBrushItem& rItem = static_cast< const SvxBrushItem& >(rSet.Get(nWhich));
     879           0 :             SfxItemSet aTempSet(*rSet.GetPool(), XATTR_FILL_FIRST, XATTR_FILL_LAST);
     880             : 
     881           0 :             setSvxBrushItemAsFillAttributesToTargetSet(rItem, aTempSet);
     882           0 :             aPageFillAttributes.reset(new drawinglayer::attribute::SdrAllFillAttributesHelper(aTempSet));
     883             :         }
     884             :     }
     885             : 
     886           0 :     m_pBspWin->setPageFillAttributes(aPageFillAttributes);
     887           0 :     nWhich = GetWhich(SID_ATTR_BORDER_OUTER);
     888             : 
     889           0 :     if(rSet.GetItemState(nWhich) >= SfxItemState::DEFAULT)
     890             :     {
     891           0 :         const SvxBoxItem& rItem = static_cast< const SvxBoxItem& >(rSet.Get(nWhich));
     892           0 :         m_pBspWin->SetBorder(rItem);
     893           0 :     }
     894           0 : }
     895             : 
     896           0 : void SvxHFPage::ActivatePage( const SfxItemSet& rSet )
     897             : {
     898           0 :     const SfxPoolItem* pItem = GetItem( rSet, SID_ATTR_LRSPACE );
     899             : 
     900           0 :     if ( pItem )
     901             :     {
     902             :         // Set left and right margins
     903           0 :         const SvxLRSpaceItem& rLRSpace = static_cast<const SvxLRSpaceItem&>(*pItem);
     904             : 
     905           0 :         m_pBspWin->SetLeft( rLRSpace.GetLeft() );
     906           0 :         m_pBspWin->SetRight( rLRSpace.GetRight() );
     907             :     }
     908             :     else
     909             :     {
     910           0 :         m_pBspWin->SetLeft( 0 );
     911           0 :         m_pBspWin->SetRight( 0 );
     912             :     }
     913             : 
     914           0 :     pItem = GetItem( rSet, SID_ATTR_ULSPACE );
     915             : 
     916           0 :     if ( pItem )
     917             :     {
     918             :         // Set top and bottom margins
     919           0 :         const SvxULSpaceItem& rULSpace = static_cast<const SvxULSpaceItem&>(*pItem);
     920             : 
     921           0 :         m_pBspWin->SetTop( rULSpace.GetUpper() );
     922           0 :         m_pBspWin->SetBottom( rULSpace.GetLower() );
     923             :     }
     924             :     else
     925             :     {
     926           0 :         m_pBspWin->SetTop( 0 );
     927           0 :         m_pBspWin->SetBottom( 0 );
     928             :     }
     929             : 
     930           0 :     sal_uInt16 nUsage = SVX_PAGE_ALL;
     931           0 :     pItem = GetItem( rSet, SID_ATTR_PAGE );
     932             : 
     933           0 :     if ( pItem )
     934           0 :         nUsage = static_cast<const SvxPageItem*>(pItem)->GetPageUsage();
     935             : 
     936           0 :     m_pBspWin->SetUsage( nUsage );
     937             : 
     938           0 :     if ( SVX_PAGE_RIGHT == nUsage || SVX_PAGE_LEFT == nUsage )
     939           0 :         m_pCntSharedBox->Disable();
     940             :     else
     941             :     {
     942           0 :         m_pCntSharedBox->Enable();
     943           0 :         m_pCntSharedFirstBox->Enable();
     944             :     }
     945           0 :     pItem = GetItem( rSet, SID_ATTR_PAGE_SIZE );
     946             : 
     947           0 :     if ( pItem )
     948             :     {
     949             :         // Orientation and Size from the PageItem
     950           0 :         const SvxSizeItem& rSize = static_cast<const SvxSizeItem&>(*pItem);
     951             :         // if the size is already swapped (Landscape)
     952           0 :         m_pBspWin->SetSize( rSize.GetSize() );
     953             :     }
     954             : 
     955             :     // Evaluate Header attribute
     956           0 :     const SvxSetItem* pSetItem = 0;
     957             : 
     958           0 :     if ( SfxItemState::SET == rSet.GetItemState( GetWhich( SID_ATTR_PAGE_HEADERSET ),
     959             :                                             false,
     960           0 :                                             (const SfxPoolItem**)&pSetItem ) )
     961             :     {
     962           0 :         const SfxItemSet& rHeaderSet = pSetItem->GetItemSet();
     963             :         const SfxBoolItem& rHeaderOn =
     964           0 :             static_cast<const SfxBoolItem&>(rHeaderSet.Get( GetWhich( SID_ATTR_PAGE_ON ) ));
     965             : 
     966           0 :         if ( rHeaderOn.GetValue() )
     967             :         {
     968             :             const SvxSizeItem& rSize = static_cast<const SvxSizeItem&>(
     969           0 :                 rHeaderSet.Get( GetWhich( SID_ATTR_PAGE_SIZE ) ));
     970             :             const SvxULSpaceItem& rUL = static_cast<const SvxULSpaceItem&>(
     971           0 :                 rHeaderSet.Get( GetWhich(SID_ATTR_ULSPACE ) ));
     972             :             const SvxLRSpaceItem& rLR = static_cast<const SvxLRSpaceItem&>(
     973           0 :                 rHeaderSet.Get( GetWhich( SID_ATTR_LRSPACE ) ));
     974           0 :             long nDist = rUL.GetLower();
     975             : 
     976           0 :             m_pBspWin->SetHdHeight( rSize.GetSize().Height() - nDist );
     977           0 :             m_pBspWin->SetHdDist( nDist );
     978           0 :             m_pBspWin->SetHdLeft( rLR.GetLeft() );
     979           0 :             m_pBspWin->SetHdRight( rLR.GetRight() );
     980           0 :             m_pBspWin->SetHeader( true );
     981             :         }
     982             :         else
     983           0 :             pSetItem = 0;
     984             :     }
     985             : 
     986           0 :     if ( !pSetItem )
     987             :     {
     988           0 :         m_pBspWin->SetHeader( false );
     989             : 
     990           0 :         if ( SID_ATTR_PAGE_HEADERSET == nId )
     991             :         {
     992           0 :             m_pCntSharedBox->Disable();
     993           0 :             m_pCntSharedFirstBox->Disable();
     994             :         }
     995             :     }
     996           0 :     pSetItem = 0;
     997             : 
     998           0 :     if ( SfxItemState::SET == rSet.GetItemState( GetWhich( SID_ATTR_PAGE_FOOTERSET ),
     999             :                                             false,
    1000           0 :                                             (const SfxPoolItem**)&pSetItem ) )
    1001             :     {
    1002           0 :         const SfxItemSet& rFooterSet = pSetItem->GetItemSet();
    1003             :         const SfxBoolItem& rFooterOn =
    1004           0 :             static_cast<const SfxBoolItem&>(rFooterSet.Get( GetWhich( SID_ATTR_PAGE_ON ) ));
    1005             : 
    1006           0 :         if ( rFooterOn.GetValue() )
    1007             :         {
    1008             :             const SvxSizeItem& rSize = static_cast<const SvxSizeItem&>(
    1009           0 :                 rFooterSet.Get( GetWhich( SID_ATTR_PAGE_SIZE ) ));
    1010             :             const SvxULSpaceItem& rUL = static_cast<const SvxULSpaceItem&>(
    1011           0 :                 rFooterSet.Get( GetWhich( SID_ATTR_ULSPACE ) ));
    1012             :             const SvxLRSpaceItem& rLR = static_cast<const SvxLRSpaceItem&>(
    1013           0 :                 rFooterSet.Get( GetWhich( SID_ATTR_LRSPACE ) ));
    1014           0 :             long nDist = rUL.GetUpper();
    1015             : 
    1016           0 :             m_pBspWin->SetFtHeight( rSize.GetSize().Height() - nDist );
    1017           0 :             m_pBspWin->SetFtDist( nDist );
    1018           0 :             m_pBspWin->SetFtLeft( rLR.GetLeft() );
    1019           0 :             m_pBspWin->SetFtRight( rLR.GetRight() );
    1020           0 :             m_pBspWin->SetFooter( true );
    1021             :         }
    1022             :         else
    1023           0 :             pSetItem = 0;
    1024             :     }
    1025             : 
    1026           0 :     if ( !pSetItem )
    1027             :     {
    1028           0 :         m_pBspWin->SetFooter( false );
    1029             : 
    1030           0 :         if ( SID_ATTR_PAGE_FOOTERSET == nId )
    1031             :         {
    1032           0 :             m_pCntSharedBox->Disable();
    1033           0 :             m_pCntSharedFirstBox->Disable();
    1034             :         }
    1035             :     }
    1036             : 
    1037           0 :     pItem = GetItem( rSet, SID_ATTR_PAGE_EXT1 );
    1038             : 
    1039           0 :     if ( pItem && pItem->ISA(SfxBoolItem) )
    1040             :     {
    1041           0 :         m_pBspWin->SetTable( true );
    1042           0 :         m_pBspWin->SetHorz( static_cast<const SfxBoolItem*>(pItem)->GetValue() );
    1043             :     }
    1044             : 
    1045           0 :     pItem = GetItem( rSet, SID_ATTR_PAGE_EXT2 );
    1046             : 
    1047           0 :     if ( pItem && pItem->ISA(SfxBoolItem) )
    1048             :     {
    1049           0 :         m_pBspWin->SetTable( true );
    1050           0 :         m_pBspWin->SetVert( static_cast<const SfxBoolItem*>(pItem)->GetValue() );
    1051             :     }
    1052           0 :     ResetBackground_Impl( rSet );
    1053           0 :     RangeHdl( 0 );
    1054           0 : }
    1055             : 
    1056           0 : int SvxHFPage::DeactivatePage( SfxItemSet* _pSet )
    1057             : {
    1058           0 :     if ( _pSet )
    1059           0 :         FillItemSet( _pSet );
    1060           0 :     return LEAVE_PAGE;
    1061             : }
    1062             : 
    1063           0 : IMPL_LINK_NOARG(SvxHFPage, RangeHdl)
    1064             : {
    1065           0 :     long nHHeight = m_pBspWin->GetHdHeight();
    1066           0 :     long nHDist   = m_pBspWin->GetHdDist();
    1067             : 
    1068           0 :     long nFHeight = m_pBspWin->GetFtHeight();
    1069           0 :     long nFDist   = m_pBspWin->GetFtDist();
    1070             : 
    1071             :     long nHeight = std::max( (long)MINBODY,
    1072           0 :         static_cast<long>(m_pHeightEdit->Denormalize( m_pHeightEdit->GetValue( FUNIT_TWIP ) ) ) );
    1073           0 :     long nDist   = m_pTurnOnBox->IsChecked() ?
    1074           0 :         static_cast<long>(m_pDistEdit->Denormalize( m_pDistEdit->GetValue( FUNIT_TWIP ) )) : 0;
    1075             : 
    1076             :     long nMin;
    1077             :     long nMax;
    1078             : 
    1079           0 :     if ( nId == SID_ATTR_PAGE_HEADERSET )
    1080             :     {
    1081           0 :         nHHeight = nHeight;
    1082           0 :         nHDist   = nDist;
    1083             :     }
    1084             :     else
    1085             :     {
    1086           0 :         nFHeight = nHeight;
    1087           0 :         nFDist   = nDist;
    1088             :     }
    1089             : 
    1090             :     // Current values of the side edges
    1091           0 :     long nBT = m_pBspWin->GetTop();
    1092           0 :     long nBB = m_pBspWin->GetBottom();
    1093           0 :     long nBL = m_pBspWin->GetLeft();
    1094           0 :     long nBR = m_pBspWin->GetRight();
    1095             : 
    1096           0 :     long nH  = m_pBspWin->GetSize().Height();
    1097           0 :     long nW  = m_pBspWin->GetSize().Width();
    1098             : 
    1099             :     // Borders
    1100           0 :     if ( nId == SID_ATTR_PAGE_HEADERSET )
    1101             :     {
    1102             :         // Header
    1103           0 :         nMin = ( nH - nBB - nBT ) / 5; // 20%
    1104           0 :         nMax = std::max( nH - nMin - nHDist - nFDist - nFHeight - nBB - nBT,
    1105           0 :                     nMin );
    1106           0 :         m_pHeightEdit->SetMax( m_pHeightEdit->Normalize( nMax ), FUNIT_TWIP );
    1107           0 :         nMin = ( nH - nBB - nBT ) / 5; // 20%
    1108           0 :         nDist = std::max( nH - nMin - nHHeight - nFDist - nFHeight - nBB - nBT,
    1109           0 :                      long(0) );
    1110           0 :         m_pDistEdit->SetMax( m_pDistEdit->Normalize( nDist ), FUNIT_TWIP );
    1111             :     }
    1112             :     else
    1113             :     {
    1114             :         // Footer
    1115           0 :         nMin = ( nH - nBT - nBB ) / 5; // 20%
    1116           0 :         nMax = std::max( nH - nMin - nFDist - nHDist - nHHeight - nBT - nBB,
    1117           0 :                     nMin );
    1118           0 :         m_pHeightEdit->SetMax( m_pHeightEdit->Normalize( nMax ), FUNIT_TWIP );
    1119           0 :         nMin = ( nH - nBT - nBB ) / 5; // 20%
    1120           0 :         nDist = std::max( nH - nMin - nFHeight - nHDist - nHHeight - nBT - nBB,
    1121           0 :                      long(0) );
    1122           0 :         m_pDistEdit->SetMax( m_pDistEdit->Normalize( nDist ), FUNIT_TWIP );
    1123             :     }
    1124             : 
    1125             :     // Limit Indentation
    1126           0 :     nMax = nW - nBL - nBR -
    1127           0 :            static_cast<long>(m_pRMEdit->Denormalize( m_pRMEdit->GetValue( FUNIT_TWIP ) )) - MINBODY;
    1128           0 :     m_pLMEdit->SetMax( m_pLMEdit->Normalize( nMax ), FUNIT_TWIP );
    1129             : 
    1130           0 :     nMax = nW - nBL - nBR -
    1131           0 :            static_cast<long>(m_pLMEdit->Denormalize( m_pLMEdit->GetValue( FUNIT_TWIP ) )) - MINBODY;
    1132           0 :     m_pRMEdit->SetMax( m_pLMEdit->Normalize( nMax ), FUNIT_TWIP );
    1133           0 :     return 0;
    1134             : }
    1135             : 
    1136           0 : static void lcl_Move(vcl::Window& rWin, sal_Int32 nDiff)
    1137             : {
    1138           0 :     Point aPos(rWin.GetPosPixel());
    1139           0 :     aPos.Y() -= nDiff;
    1140           0 :     rWin.SetPosPixel(aPos);
    1141           0 : }
    1142             : 
    1143           0 : void SvxHFPage::EnableDynamicSpacing()
    1144             : {
    1145           0 :     m_pDynSpacingCB->Show();
    1146             :     //move all following controls
    1147             :     vcl::Window* aMoveWindows[] =
    1148             :     {
    1149             :         m_pHeightFT,
    1150             :         m_pHeightEdit,
    1151             :         m_pHeightDynBtn,
    1152             :         m_pBackgroundBtn,
    1153             :         0
    1154           0 :     };
    1155           0 :     sal_Int32 nOffset = m_pTurnOnBox->GetPosPixel().Y() - m_pCntSharedBox->GetPosPixel().Y();
    1156           0 :     sal_Int32 nIdx = 0;
    1157           0 :     while(aMoveWindows[nIdx])
    1158           0 :         lcl_Move(*aMoveWindows[nIdx++], nOffset);
    1159           0 : }
    1160             : 
    1161           0 : void SvxHFPage::PageCreated(const SfxAllItemSet &rSet)
    1162             : {
    1163             :     //UUUU
    1164           0 :     SFX_ITEMSET_ARG (&rSet, pSupportDrawingLayerFillStyleItem, SfxBoolItem, SID_DRAWINGLAYER_FILLSTYLES, false);
    1165             : 
    1166           0 :     if(pSupportDrawingLayerFillStyleItem)
    1167             :     {
    1168           0 :         const bool bNew(pSupportDrawingLayerFillStyleItem->GetValue());
    1169             : 
    1170           0 :         EnableDrawingLayerFillStyles(bNew);
    1171             :     }
    1172         594 : }
    1173             : 
    1174             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10