|  | /************************************************************** | 
|  | * | 
|  | * Licensed to the Apache Software Foundation (ASF) under one | 
|  | * or more contributor license agreements.  See the NOTICE file | 
|  | * distributed with this work for additional information | 
|  | * regarding copyright ownership.  The ASF licenses this file | 
|  | * to you under the Apache License, Version 2.0 (the | 
|  | * "License"); you may not use this file except in compliance | 
|  | * with the License.  You may obtain a copy of the License at | 
|  | * | 
|  | *   http://www.apache.org/licenses/LICENSE-2.0 | 
|  | * | 
|  | * Unless required by applicable law or agreed to in writing, | 
|  | * software distributed under the License is distributed on an | 
|  | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | 
|  | * KIND, either express or implied.  See the License for the | 
|  | * specific language governing permissions and limitations | 
|  | * under the License. | 
|  | * | 
|  | *************************************************************/ | 
|  |  | 
|  | // MARKER(update_precomp.py): autogen include statement, do not remove | 
|  | #include "precompiled_svx.hxx" | 
|  |  | 
|  | #include <tools/shl.hxx> | 
|  | #include <svl/itemiter.hxx> | 
|  | #include <sfx2/app.hxx> | 
|  | #include <sfx2/objsh.hxx> | 
|  | #include <sfx2/module.hxx> | 
|  | #include <vcl/msgbox.hxx> | 
|  | #include <vcl/graph.hxx> | 
|  | #include <sfx2/sfxsids.hrc> | 
|  | #include <svx/svxids.hrc> | 
|  | #include <svx/dialogs.hrc> | 
|  | #include "hdft.hrc" | 
|  | #include <svl/intitem.hxx> | 
|  | #define _SVX_HDFT_CXX | 
|  | #include <svx/hdft.hxx> | 
|  | #include <svx/pageitem.hxx> | 
|  | #include "svx/dlgutil.hxx" | 
|  | #include <svx/dialmgr.hxx> | 
|  | #include "svx/htmlmode.hxx" | 
|  | #include <editeng/brshitem.hxx> | 
|  | #include <editeng/lrspitem.hxx> | 
|  | #include <editeng/ulspitem.hxx> | 
|  | #include <editeng/shaditem.hxx> | 
|  | #include <editeng/sizeitem.hxx> | 
|  | #include <editeng/boxitem.hxx> | 
|  | #include <svx/svxdlg.hxx> //CHINA001 | 
|  | #include <svx/dialogs.hrc> //CHINA001 | 
|  |  | 
|  | //UUUU | 
|  | #include <svx/xdef.hxx> | 
|  | #include <svx/xenum.hxx> | 
|  | #include <svx/xfillit0.hxx> | 
|  | #include <svx/unobrushitemhelper.hxx> | 
|  | #include <sfx2/request.hxx> | 
|  |  | 
|  | // static ---------------------------------------------------------------- | 
|  |  | 
|  | // --> OD 2004-06-18 #i19922# | 
|  | //static const long MINBODY = 284;            // 0,5cm in twips aufgerundet | 
|  | static const long MINBODY = 56;  // 1mm in twips rounded | 
|  |  | 
|  | // default distance to Header or footer | 
|  | static const long DEF_DIST_WRITER = 500;	// 5mm (Writer) | 
|  | static const long DEF_DIST_CALC = 250;		// 2,5mm (Calc) | 
|  |  | 
|  | static sal_uInt16 pRanges[] = | 
|  | { | 
|  | SID_ATTR_BRUSH,			 SID_ATTR_BRUSH, | 
|  |  | 
|  | //UUUU Support DrawingLayer FillStyles (no real call to below GetRanges() | 
|  | // detected, still do the complete transition) | 
|  | XATTR_FILL_FIRST,        XATTR_FILL_LAST, | 
|  |  | 
|  | SID_ATTR_BORDER_OUTER,	 SID_ATTR_BORDER_OUTER, | 
|  | SID_ATTR_BORDER_INNER,	 SID_ATTR_BORDER_INNER, | 
|  | SID_ATTR_BORDER_SHADOW,	 SID_ATTR_BORDER_SHADOW, | 
|  | SID_ATTR_LRSPACE,		 SID_ATTR_LRSPACE, | 
|  | SID_ATTR_ULSPACE,		 SID_ATTR_ULSPACE, | 
|  | SID_ATTR_PAGE_SIZE,		 SID_ATTR_PAGE_SIZE, | 
|  | SID_ATTR_PAGE_HEADERSET, SID_ATTR_PAGE_HEADERSET, | 
|  | SID_ATTR_PAGE_FOOTERSET, SID_ATTR_PAGE_FOOTERSET, | 
|  | SID_ATTR_PAGE_ON,		 SID_ATTR_PAGE_ON, | 
|  | SID_ATTR_PAGE_DYNAMIC,	 SID_ATTR_PAGE_DYNAMIC, | 
|  | SID_ATTR_PAGE_SHARED,	 SID_ATTR_PAGE_SHARED, | 
|  | SID_ATTR_HDFT_DYNAMIC_SPACING, SID_ATTR_HDFT_DYNAMIC_SPACING, | 
|  | 0 | 
|  | }; | 
|  |  | 
|  | /*-------------------------------------------------------------------- | 
|  | Beschreibung: | 
|  | --------------------------------------------------------------------*/ | 
|  |  | 
|  | // gibt den Bereich der Which-Werte zurueck | 
|  |  | 
|  |  | 
|  | sal_uInt16* SvxHeaderPage::GetRanges() | 
|  | { | 
|  | return pRanges; | 
|  | } | 
|  |  | 
|  | //------------------------------------------------------------------------ | 
|  |  | 
|  | SfxTabPage* SvxHeaderPage::Create( Window* pParent, const SfxItemSet& rSet ) | 
|  | { | 
|  | return new SvxHeaderPage( pParent, rSet ); | 
|  | } | 
|  |  | 
|  | //------------------------------------------------------------------------ | 
|  |  | 
|  | sal_uInt16* SvxFooterPage::GetRanges() | 
|  | { | 
|  | return pRanges; | 
|  | } | 
|  |  | 
|  | // ----------------------------------------------------------------------- | 
|  |  | 
|  | SfxTabPage* SvxFooterPage::Create( Window* pParent, const SfxItemSet& rSet ) | 
|  | { | 
|  | return new SvxFooterPage( pParent, rSet ); | 
|  | } | 
|  |  | 
|  | // ----------------------------------------------------------------------- | 
|  |  | 
|  | SvxHeaderPage::SvxHeaderPage( Window* pParent, const SfxItemSet& rAttr ) : | 
|  |  | 
|  | SvxHFPage( pParent, RID_SVXPAGE_HEADER, rAttr, SID_ATTR_PAGE_HEADERSET ) | 
|  |  | 
|  | { | 
|  | } | 
|  |  | 
|  | // ----------------------------------------------------------------------- | 
|  |  | 
|  | SvxFooterPage::SvxFooterPage( Window* pParent, const SfxItemSet& rAttr ) : | 
|  |  | 
|  | SvxHFPage( pParent, RID_SVXPAGE_FOOTER, rAttr, SID_ATTR_PAGE_FOOTERSET ) | 
|  |  | 
|  | { | 
|  | } | 
|  |  | 
|  | // ----------------------------------------------------------------------- | 
|  |  | 
|  | SvxHFPage::SvxHFPage( Window* pParent, sal_uInt16 nResId, const SfxItemSet& rAttr, sal_uInt16 nSetId ) | 
|  | :   SfxTabPage( pParent, SVX_RES( nResId ), rAttr ), | 
|  |  | 
|  | aFrm            ( this, SVX_RES( FL_FRAME ) ), | 
|  | aTurnOnBox		( this, SVX_RES( CB_TURNON ) ), | 
|  | aCntSharedBox   ( this, SVX_RES( CB_SHARED ) ), | 
|  | aLMLbl          ( this, SVX_RES( FT_LMARGIN ) ), | 
|  | aLMEdit         ( this, SVX_RES( ED_LMARGIN ) ), | 
|  | aRMLbl          ( this, SVX_RES( FT_RMARGIN ) ), | 
|  | aRMEdit         ( this, SVX_RES( ED_RMARGIN ) ), | 
|  | aDistFT         ( this, SVX_RES( FT_DIST ) ), | 
|  | aDistEdit		( this, SVX_RES( ED_DIST ) ), | 
|  | aDynSpacingCB   ( this, SVX_RES( CB_DYNSPACING ) ), | 
|  | aHeightFT       ( this, SVX_RES( FT_HEIGHT ) ), | 
|  | aHeightEdit		( this, SVX_RES( ED_HEIGHT ) ), | 
|  | aHeightDynBtn	( this, SVX_RES( CB_HEIGHT_DYN ) ), | 
|  | aBspWin			( this, SVX_RES( WN_BSP ) ), | 
|  | aBackgroundBtn	( this, SVX_RES( BTN_EXTRAS ) ), | 
|  |  | 
|  | nId             ( nSetId ), | 
|  | pBBSet          ( NULL ), | 
|  |  | 
|  | // bitfield | 
|  | mbDisableQueryBox(false), | 
|  | mbEnableBackgroundSelector(true), | 
|  | mbEnableDrawingLayerFillStyles(false) | 
|  | { | 
|  | InitHandler(); | 
|  | aBspWin.EnableRTL( sal_False ); | 
|  |  | 
|  | // diese Page braucht ExchangeSupport | 
|  | SetExchangeSupport(); | 
|  |  | 
|  | FreeResource(); | 
|  |  | 
|  | // Metrik einstellen | 
|  | FieldUnit eFUnit = GetModuleFieldUnit( rAttr ); | 
|  | SetFieldUnit( aDistEdit, eFUnit ); | 
|  | SetFieldUnit( aHeightEdit, eFUnit ); | 
|  | SetFieldUnit( aLMEdit, eFUnit ); | 
|  | SetFieldUnit( aRMEdit, eFUnit ); | 
|  |  | 
|  | aTurnOnBox.SetAccessibleRelationMemberOf( &aFrm ); | 
|  | aCntSharedBox.SetAccessibleRelationMemberOf( &aFrm ); | 
|  | aLMLbl.SetAccessibleRelationMemberOf( &aFrm ); | 
|  | aLMEdit.SetAccessibleRelationMemberOf( &aFrm ); | 
|  | aRMLbl.SetAccessibleRelationMemberOf( &aFrm ); | 
|  | aRMEdit.SetAccessibleRelationMemberOf( &aFrm ); | 
|  | aDistFT.SetAccessibleRelationMemberOf( &aFrm ); | 
|  | aDistEdit.SetAccessibleRelationMemberOf( &aFrm ); | 
|  | aDynSpacingCB.SetAccessibleRelationMemberOf( &aFrm ); | 
|  | aHeightFT.SetAccessibleRelationMemberOf( &aFrm ); | 
|  | aHeightEdit.SetAccessibleRelationMemberOf( &aFrm ); | 
|  | aHeightDynBtn.SetAccessibleRelationMemberOf( &aFrm ); | 
|  | aBackgroundBtn.SetAccessibleRelationMemberOf(&aFrm); | 
|  | } | 
|  |  | 
|  | // ----------------------------------------------------------------------- | 
|  |  | 
|  | SvxHFPage::~SvxHFPage() | 
|  | { | 
|  | delete pBBSet; | 
|  | } | 
|  |  | 
|  | // ----------------------------------------------------------------------- | 
|  |  | 
|  | sal_Bool SvxHFPage::FillItemSet( SfxItemSet& rSet ) | 
|  | { | 
|  | const sal_uInt16 nWSize = GetWhich(SID_ATTR_PAGE_SIZE); | 
|  | const sal_uInt16 nWLRSpace = GetWhich(SID_ATTR_LRSPACE); | 
|  | const sal_uInt16 nWULSpace = GetWhich(SID_ATTR_ULSPACE); | 
|  | const sal_uInt16 nWOn = GetWhich(SID_ATTR_PAGE_ON); | 
|  | const sal_uInt16 nWDynamic = GetWhich(SID_ATTR_PAGE_DYNAMIC); | 
|  | const sal_uInt16 nWDynSpacing = GetWhich(SID_ATTR_HDFT_DYNAMIC_SPACING); | 
|  | const sal_uInt16 nWShared = GetWhich(SID_ATTR_PAGE_SHARED); | 
|  | const sal_uInt16 nWBrush = GetWhich(SID_ATTR_BRUSH); | 
|  | const sal_uInt16 nWBox = GetWhich(SID_ATTR_BORDER_OUTER); | 
|  | const sal_uInt16 nWBoxInfo = GetWhich(SID_ATTR_BORDER_INNER); | 
|  | const sal_uInt16 nWShadow = GetWhich(SID_ATTR_BORDER_SHADOW); | 
|  |  | 
|  | const sal_uInt16 aWhichTab[] = { | 
|  | nWSize, nWSize, | 
|  | nWLRSpace, nWLRSpace, | 
|  | nWULSpace, nWULSpace, | 
|  | nWOn, nWOn, | 
|  | nWDynamic, nWDynamic, | 
|  | nWShared, nWShared, | 
|  | nWBrush, nWBrush, | 
|  | nWBoxInfo, nWBoxInfo, | 
|  | nWBox, nWBox, | 
|  | nWShadow, nWShadow, | 
|  | nWDynSpacing, nWDynSpacing, | 
|  |  | 
|  | //UUUU take over DrawingLayer FillStyles | 
|  | XATTR_FILL_FIRST, XATTR_FILL_LAST,                // [1014 | 
|  |  | 
|  | 0, 0}; | 
|  |  | 
|  | const SfxItemSet& rOldSet = GetItemSet(); | 
|  | SfxItemPool* pPool = rOldSet.GetPool(); | 
|  | DBG_ASSERT(pPool,"no pool :-("); | 
|  | SfxMapUnit eUnit = pPool->GetMetric(nWSize); | 
|  | SfxItemSet aSet(*pPool,aWhichTab); | 
|  |  | 
|  | if(mbEnableDrawingLayerFillStyles) | 
|  | { | 
|  | //UUUU When using the XATTR_FILLSTYLE DrawingLayer FillStyle definition | 
|  | // extra action has to be done here since the pool default is XFILL_SOLID | 
|  | // instead of XFILL_NONE (to have the default blue fill color at start). | 
|  | aSet.Put(XFillStyleItem(XFILL_NONE)); | 
|  | } | 
|  |  | 
|  | //-------------------------------------------------------------------- | 
|  |  | 
|  | aSet.Put( SfxBoolItem( nWOn,	  aTurnOnBox.IsChecked() ) ); | 
|  | aSet.Put( SfxBoolItem( nWDynamic, aHeightDynBtn.IsChecked() ) ); | 
|  | aSet.Put( SfxBoolItem( nWShared,  aCntSharedBox.IsChecked() ) ); | 
|  | if(aDynSpacingCB.IsVisible() && SFX_WHICH_MAX > nWDynSpacing) | 
|  | { | 
|  | SfxBoolItem* pBoolItem = (SfxBoolItem*)pPool->GetDefaultItem(nWDynSpacing).Clone(); | 
|  | pBoolItem->SetValue(aDynSpacingCB.IsChecked()); | 
|  | aSet.Put(*pBoolItem); | 
|  | delete pBoolItem; | 
|  | } | 
|  |  | 
|  | // Groesse | 
|  | SvxSizeItem aSizeItem( (const SvxSizeItem&)rOldSet.Get( nWSize ) ); | 
|  | Size		aSize( aSizeItem.GetSize() ); | 
|  | long		nDist = GetCoreValue( aDistEdit, eUnit ); | 
|  | long		nH	  = GetCoreValue( aHeightEdit, eUnit ); | 
|  |  | 
|  | // fixe Hoehe? | 
|  | //	if ( !aHeightDynBtn.IsChecked() ) | 
|  | nH += nDist; // dann Abstand dazu addieren | 
|  | aSize.Height() = nH; | 
|  | aSizeItem.SetSize( aSize ); | 
|  | aSet.Put( aSizeItem ); | 
|  |  | 
|  | // Raender | 
|  | SvxLRSpaceItem aLR( nWLRSpace ); | 
|  | aLR.SetLeft( (sal_uInt16)GetCoreValue( aLMEdit, eUnit ) ); | 
|  | aLR.SetRight( (sal_uInt16)GetCoreValue( aRMEdit, eUnit ) ); | 
|  | aSet.Put( aLR ); | 
|  |  | 
|  | SvxULSpaceItem aUL( nWULSpace ); | 
|  | if ( nId == SID_ATTR_PAGE_HEADERSET ) | 
|  | aUL.SetLower( (sal_uInt16)nDist ); | 
|  | else | 
|  | aUL.SetUpper( (sal_uInt16)nDist ); | 
|  | aSet.Put( aUL ); | 
|  |  | 
|  | // Hintergrund und Umrandung? | 
|  | if(pBBSet) | 
|  | { | 
|  | aSet.Put(*pBBSet); | 
|  | } | 
|  | else | 
|  | { | 
|  | const SfxItemSet* _pSet; | 
|  | const SfxPoolItem* pItem; | 
|  |  | 
|  | if(SFX_ITEM_SET == GetItemSet().GetItemState(GetWhich(nId), sal_False, &pItem)) | 
|  | { | 
|  | _pSet = &(static_cast< const SvxSetItem* >(pItem)->GetItemSet()); | 
|  |  | 
|  | if(_pSet->GetItemState(nWBrush) == SFX_ITEM_SET) | 
|  | { | 
|  | aSet.Put(_pSet->Get(nWBrush)); | 
|  | } | 
|  |  | 
|  | if(_pSet->GetItemState(nWBoxInfo) == SFX_ITEM_SET) | 
|  | { | 
|  | aSet.Put(_pSet->Get(nWBoxInfo)); | 
|  | } | 
|  |  | 
|  | if(_pSet->GetItemState(nWBox) == SFX_ITEM_SET) | 
|  | { | 
|  | aSet.Put(_pSet->Get(nWBox)); | 
|  | } | 
|  |  | 
|  | if(_pSet->GetItemState(nWShadow) == SFX_ITEM_SET) | 
|  | { | 
|  | aSet.Put(_pSet->Get(nWShadow)); | 
|  | } | 
|  |  | 
|  | //UUUU take care of [XATTR_XATTR_FILL_FIRST .. XATTR_FILL_LAST] | 
|  | for(sal_uInt16 nFillStyleId(XATTR_FILL_FIRST); nFillStyleId <= XATTR_FILL_LAST; nFillStyleId++) | 
|  | { | 
|  | if(_pSet->GetItemState(nFillStyleId) == SFX_ITEM_SET) | 
|  | { | 
|  | aSet.Put(_pSet->Get(nFillStyleId)); | 
|  | } | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | // Das SetItem wegschreiben | 
|  | SvxSetItem aSetItem( GetWhich( nId ), aSet ); | 
|  | rSet.Put( aSetItem ); | 
|  |  | 
|  | return sal_True; | 
|  | } | 
|  |  | 
|  | // ----------------------------------------------------------------------- | 
|  | void SvxHFPage::Reset( const SfxItemSet& rSet ) | 
|  | { | 
|  | ActivatePage( rSet ); | 
|  | ResetBackground_Impl( rSet ); | 
|  |  | 
|  | SfxItemPool* pPool = GetItemSet().GetPool(); | 
|  | DBG_ASSERT( pPool, "Wo ist der Pool" ); | 
|  | SfxMapUnit eUnit = pPool->GetMetric( GetWhich( SID_ATTR_PAGE_SIZE ) ); | 
|  |  | 
|  | // Kopf-/Fusszeilen-Attribute auswerten | 
|  | // | 
|  | const SvxSetItem* pSetItem = 0; | 
|  |  | 
|  | if ( SFX_ITEM_SET == rSet.GetItemState( GetWhich(nId), sal_False, | 
|  | (const SfxPoolItem**)&pSetItem ) ) | 
|  | { | 
|  | const SfxItemSet& rHeaderSet = pSetItem->GetItemSet(); | 
|  | const SfxBoolItem& rHeaderOn = | 
|  | (const SfxBoolItem&)rHeaderSet.Get(GetWhich(SID_ATTR_PAGE_ON)); | 
|  |  | 
|  | aTurnOnBox.Check(rHeaderOn.GetValue()); | 
|  |  | 
|  | if ( rHeaderOn.GetValue() ) | 
|  | { | 
|  | const SfxBoolItem& rDynamic = | 
|  | (const SfxBoolItem&)rHeaderSet.Get( GetWhich( SID_ATTR_PAGE_DYNAMIC ) ); | 
|  | const SfxBoolItem& rShared = | 
|  | (const SfxBoolItem&)rHeaderSet.Get( GetWhich( SID_ATTR_PAGE_SHARED ) ); | 
|  | const SvxSizeItem& rSize = | 
|  | (const SvxSizeItem&)rHeaderSet.Get( GetWhich( SID_ATTR_PAGE_SIZE ) ); | 
|  | const SvxULSpaceItem& rUL = | 
|  | (const SvxULSpaceItem&)rHeaderSet.Get( GetWhich( SID_ATTR_ULSPACE ) ); | 
|  | const SvxLRSpaceItem& rLR = | 
|  | (const SvxLRSpaceItem&)rHeaderSet.Get( GetWhich( SID_ATTR_LRSPACE ) ); | 
|  | if(aDynSpacingCB.IsVisible()) | 
|  | { | 
|  | const SfxBoolItem& rDynSpacing = | 
|  | (const SfxBoolItem&)rHeaderSet.Get(GetWhich(SID_ATTR_HDFT_DYNAMIC_SPACING)); | 
|  | aDynSpacingCB.Check(rDynSpacing.GetValue()); | 
|  | } | 
|  |  | 
|  |  | 
|  | if ( nId == SID_ATTR_PAGE_HEADERSET ) | 
|  | {	// Kopfzeile | 
|  | SetMetricValue( aDistEdit, rUL.GetLower(), eUnit ); | 
|  | SetMetricValue( aHeightEdit, rSize.GetSize().Height() - rUL.GetLower(), eUnit ); | 
|  | } | 
|  | else | 
|  | {	// Fusszeile | 
|  | SetMetricValue( aDistEdit, rUL.GetUpper(), eUnit ); | 
|  | SetMetricValue( aHeightEdit, rSize.GetSize().Height() - rUL.GetUpper(), eUnit ); | 
|  | } | 
|  |  | 
|  | aHeightDynBtn.Check(rDynamic.GetValue()); | 
|  | SetMetricValue( aLMEdit, rLR.GetLeft(), eUnit ); | 
|  | SetMetricValue( aRMEdit, rLR.GetRight(), eUnit ); | 
|  | aCntSharedBox.Check(rShared.GetValue()); | 
|  | } | 
|  | else | 
|  | pSetItem = 0; | 
|  | } | 
|  | else | 
|  | { | 
|  | // defaults for distance and height | 
|  | long nDefaultDist = DEF_DIST_WRITER; | 
|  | const SfxPoolItem* pExt1 = GetItem( rSet, SID_ATTR_PAGE_EXT1 ); | 
|  | const SfxPoolItem* pExt2 = GetItem( rSet, SID_ATTR_PAGE_EXT2 ); | 
|  |  | 
|  | if ( pExt1 && pExt1->ISA(SfxBoolItem) && pExt2 && pExt2->ISA(SfxBoolItem) ) | 
|  | nDefaultDist = DEF_DIST_CALC; | 
|  |  | 
|  | SetMetricValue( aDistEdit, nDefaultDist, SFX_MAPUNIT_100TH_MM ); | 
|  | SetMetricValue( aHeightEdit, 500, SFX_MAPUNIT_100TH_MM ); | 
|  | } | 
|  |  | 
|  | if ( !pSetItem ) | 
|  | { | 
|  | aTurnOnBox.Check( sal_False ); | 
|  | aHeightDynBtn.Check( sal_True ); | 
|  | aCntSharedBox.Check( sal_True ); | 
|  | } | 
|  |  | 
|  | TurnOnHdl(0); | 
|  |  | 
|  | aTurnOnBox.SaveValue(); | 
|  | aDistEdit.SaveValue(); | 
|  | aHeightEdit.SaveValue(); | 
|  | aHeightDynBtn.SaveValue(); | 
|  | aLMEdit.SaveValue(); | 
|  | aRMEdit.SaveValue(); | 
|  | aCntSharedBox.SaveValue(); | 
|  | RangeHdl( 0 ); | 
|  |  | 
|  | sal_uInt16 nHtmlMode = 0; | 
|  | const SfxPoolItem* pItem = 0; | 
|  | SfxObjectShell* pShell; | 
|  | if(SFX_ITEM_SET == rSet.GetItemState(SID_HTML_MODE, sal_False, &pItem) || | 
|  | ( 0 != (pShell = SfxObjectShell::Current()) && | 
|  | 0 != (pItem = pShell->GetItem(SID_HTML_MODE)))) | 
|  | { | 
|  | nHtmlMode = ((SfxUInt16Item*)pItem)->GetValue(); | 
|  | if(nHtmlMode & HTMLMODE_ON) | 
|  | { | 
|  | aCntSharedBox.Hide(); | 
|  | aBackgroundBtn.Hide(); | 
|  | } | 
|  | } | 
|  |  | 
|  | } | 
|  |  | 
|  | /*-------------------------------------------------------------------- | 
|  | Beschreibung:	Handler initialisieren | 
|  | --------------------------------------------------------------------*/ | 
|  |  | 
|  | void SvxHFPage::InitHandler() | 
|  | { | 
|  | aTurnOnBox.SetClickHdl(LINK(this, 	SvxHFPage, TurnOnHdl)); | 
|  | aDistEdit.SetModifyHdl(LINK(this, 	SvxHFPage, DistModify)); | 
|  | aDistEdit.SetLoseFocusHdl(LINK(this, SvxHFPage, RangeHdl)); | 
|  |  | 
|  | aHeightEdit.SetModifyHdl(LINK(this, 	SvxHFPage, HeightModify)); | 
|  | aHeightEdit.SetLoseFocusHdl(LINK(this,SvxHFPage,RangeHdl)); | 
|  |  | 
|  | aLMEdit.SetModifyHdl(LINK(this, 		SvxHFPage, BorderModify)); | 
|  | aLMEdit.SetLoseFocusHdl(LINK(this,	SvxHFPage, RangeHdl)); | 
|  | aRMEdit.SetModifyHdl(LINK(this, 		SvxHFPage, BorderModify)); | 
|  | aRMEdit.SetLoseFocusHdl(LINK(this,	SvxHFPage, RangeHdl)); | 
|  | aBackgroundBtn.SetClickHdl(LINK(this,SvxHFPage, BackgroundHdl)); | 
|  | } | 
|  |  | 
|  | /*-------------------------------------------------------------------- | 
|  | Beschreibung:	Ein/aus | 
|  | --------------------------------------------------------------------*/ | 
|  |  | 
|  | IMPL_LINK( SvxHFPage, TurnOnHdl, CheckBox *, pBox ) | 
|  | { | 
|  | if ( aTurnOnBox.IsChecked() ) | 
|  | { | 
|  | aDistFT.Enable(); | 
|  | aDistEdit.Enable(); | 
|  | aDynSpacingCB.Enable(); | 
|  | aHeightFT.Enable(); | 
|  | aHeightEdit.Enable(); | 
|  | aHeightDynBtn.Enable(); | 
|  | aLMLbl.Enable(); | 
|  | aLMEdit.Enable(); | 
|  | aRMLbl.Enable(); | 
|  | aRMEdit.Enable(); | 
|  |  | 
|  | sal_uInt16 nUsage = aBspWin.GetUsage(); | 
|  |  | 
|  | if( nUsage == SVX_PAGE_RIGHT || nUsage == SVX_PAGE_LEFT ) | 
|  | aCntSharedBox.Disable(); | 
|  | else | 
|  | aCntSharedBox.Enable(); | 
|  | aBackgroundBtn.Enable(); | 
|  | } | 
|  | else | 
|  | { | 
|  | sal_Bool bDelete = sal_True; | 
|  |  | 
|  | if ( !mbDisableQueryBox && pBox && aTurnOnBox.GetSavedValue() == sal_True ) | 
|  | bDelete = ( QueryBox( this, SVX_RES( RID_SVXQBX_DELETE_HEADFOOT ) ).Execute() == RET_YES ); | 
|  |  | 
|  | if ( bDelete ) | 
|  | { | 
|  | aDistFT.Disable(); | 
|  | aDistEdit.Disable(); | 
|  | aDynSpacingCB.Enable(sal_False); | 
|  | aHeightFT.Disable(); | 
|  | aHeightEdit.Disable(); | 
|  | aHeightDynBtn.Disable(); | 
|  |  | 
|  | aLMLbl.Disable(); | 
|  | aLMEdit.Disable(); | 
|  | aRMLbl.Disable(); | 
|  | aRMEdit.Disable(); | 
|  |  | 
|  | aCntSharedBox.Disable(); | 
|  | aBackgroundBtn.Disable(); | 
|  | } | 
|  | else | 
|  | aTurnOnBox.Check(); | 
|  | } | 
|  | UpdateExample(); | 
|  | return 0; | 
|  | } | 
|  |  | 
|  | /*-------------------------------------------------------------------- | 
|  | Beschreibung:	Abstand im Bsp Modifizieren | 
|  | --------------------------------------------------------------------*/ | 
|  |  | 
|  | IMPL_LINK_INLINE_START( SvxHFPage, DistModify, MetricField *, EMPTYARG ) | 
|  | { | 
|  | UpdateExample(); | 
|  | return 0; | 
|  | } | 
|  | IMPL_LINK_INLINE_END( SvxHFPage, DistModify, MetricField *, EMPTYARG ) | 
|  |  | 
|  | IMPL_LINK_INLINE_START( SvxHFPage, HeightModify, MetricField *, EMPTYARG ) | 
|  | { | 
|  | UpdateExample(); | 
|  |  | 
|  | return 0; | 
|  | } | 
|  | IMPL_LINK_INLINE_END( SvxHFPage, HeightModify, MetricField *, EMPTYARG ) | 
|  |  | 
|  | /*-------------------------------------------------------------------- | 
|  | Beschreibung: Raender einstellen | 
|  | --------------------------------------------------------------------*/ | 
|  |  | 
|  | IMPL_LINK_INLINE_START( SvxHFPage, BorderModify, MetricField *, EMPTYARG ) | 
|  | { | 
|  | UpdateExample(); | 
|  | return 0; | 
|  | } | 
|  | IMPL_LINK_INLINE_END( SvxHFPage, BorderModify, MetricField *, EMPTYARG ) | 
|  |  | 
|  | /*-------------------------------------------------------------------- | 
|  | Beschreibung:	Hintergrund | 
|  | --------------------------------------------------------------------*/ | 
|  |  | 
|  | IMPL_LINK( SvxHFPage, BackgroundHdl, Button *, EMPTYARG ) | 
|  | { | 
|  | if(!pBBSet) | 
|  | { | 
|  | // nur die n"otigen Items f"uer Umrandung und Hintergrund benutzen | 
|  | const sal_uInt16 nOuter(GetWhich(SID_ATTR_BORDER_OUTER)); | 
|  | const sal_uInt16 nInner(GetWhich(SID_ATTR_BORDER_INNER, sal_False)); | 
|  | const sal_uInt16 nShadow(GetWhich(SID_ATTR_BORDER_SHADOW)); | 
|  |  | 
|  | if(mbEnableDrawingLayerFillStyles) | 
|  | { | 
|  | pBBSet = new SfxItemSet( | 
|  | *GetItemSet().GetPool(), | 
|  | XATTR_FILL_FIRST, XATTR_FILL_LAST,  // DrawingLayer FillStyle definitions | 
|  | SID_COLOR_TABLE, SID_BITMAP_LIST,   // XPropertyLists for Color, Gradient, Hatch and Graphic fills | 
|  | nOuter, nOuter, | 
|  | nInner, nInner, | 
|  | nShadow, nShadow, | 
|  | 0, 0); | 
|  |  | 
|  | //UUUU copy items for XPropertyList entries from the DrawModel so that | 
|  | // the Area TabPage can access them | 
|  | static const sal_uInt16 nCopyFlags[] = { | 
|  | SID_COLOR_TABLE, | 
|  | SID_GRADIENT_LIST, | 
|  | SID_HATCH_LIST, | 
|  | SID_BITMAP_LIST, | 
|  | 0 | 
|  | }; | 
|  |  | 
|  | for(sal_uInt16 a(0); nCopyFlags[a]; a++) | 
|  | { | 
|  | const SfxPoolItem* pItem = GetItemSet().GetItem(nCopyFlags[a]); | 
|  |  | 
|  | if(pItem) | 
|  | { | 
|  | pBBSet->Put(*pItem); | 
|  | } | 
|  | else | 
|  | { | 
|  | OSL_ENSURE(false, "XPropertyList missing (!)"); | 
|  | } | 
|  | } | 
|  | } | 
|  | else | 
|  | { | 
|  | const sal_uInt16 nBrush(GetWhich(SID_ATTR_BRUSH)); | 
|  |  | 
|  | pBBSet = new SfxItemSet( | 
|  | *GetItemSet().GetPool(), | 
|  | nBrush, nBrush, | 
|  | nOuter, nOuter, | 
|  | nInner, nInner, | 
|  | nShadow, nShadow, | 
|  | 0, 0); | 
|  | } | 
|  |  | 
|  | const SfxPoolItem* pItem; | 
|  |  | 
|  | if(SFX_ITEM_SET == GetItemSet().GetItemState(GetWhich(nId), sal_False, &pItem)) | 
|  | { | 
|  | // If a SfxItemSet from the SetItem for SID_ATTR_PAGE_HEADERSET or | 
|  | // SID_ATTR_PAGE_FOOTERSET exists, use it's content | 
|  | pBBSet->Put(((SvxSetItem*)pItem)->GetItemSet()); | 
|  | } | 
|  | else | 
|  | { | 
|  | if(mbEnableDrawingLayerFillStyles) | 
|  | { | 
|  | //UUUU The style for header/footer is not yet created, need to reset | 
|  | // XFillStyleItem to XFILL_NONE which is the same as in the style | 
|  | // initialization. This needs to be done since the pool default for | 
|  | // XFillStyleItem is XFILL_SOLID | 
|  | pBBSet->Put(XFillStyleItem(XFILL_NONE)); | 
|  | } | 
|  | } | 
|  |  | 
|  | if(SFX_ITEM_SET == GetItemSet().GetItemState(nInner, sal_False, &pItem)) | 
|  | { | 
|  | // das gesetze InfoItem wird immer ben"otigt | 
|  | pBBSet->Put(*pItem); | 
|  | } | 
|  | } | 
|  |  | 
|  | SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); | 
|  |  | 
|  | if(pFact) | 
|  | { | 
|  | //UUUU | 
|  | SfxAbstractTabDialog* pDlg = pFact->CreateSvxBorderBackgroundDlg( | 
|  | this, | 
|  | *pBBSet, | 
|  | mbEnableBackgroundSelector, | 
|  | mbEnableDrawingLayerFillStyles); | 
|  |  | 
|  | DBG_ASSERT(pDlg,"Dialogdiet fail!");//CHINA001 | 
|  | if(RET_OK == pDlg->Execute() && pDlg->GetOutputItemSet()) | 
|  | { | 
|  | SfxItemIter aIter(*pDlg->GetOutputItemSet()); | 
|  | const SfxPoolItem* pItem = aIter.FirstItem(); | 
|  |  | 
|  | while(pItem) | 
|  | { | 
|  | if(!IsInvalidItem(pItem)) | 
|  | { | 
|  | pBBSet->Put(*pItem); | 
|  | } | 
|  |  | 
|  | pItem = aIter.NextItem(); | 
|  | } | 
|  |  | 
|  | //---------------------------------------------------------------- | 
|  | { | 
|  | drawinglayer::attribute::SdrAllFillAttributesHelperPtr aFillAttributes; | 
|  |  | 
|  | if(mbEnableDrawingLayerFillStyles) | 
|  | { | 
|  | //UUUU create FillAttributes directly from DrawingLayer FillStyle entries | 
|  | aFillAttributes.reset(new drawinglayer::attribute::SdrAllFillAttributesHelper(*pBBSet)); | 
|  | } | 
|  | else | 
|  | { | 
|  | const sal_uInt16 nWhich = GetWhich(SID_ATTR_BRUSH); | 
|  |  | 
|  | if(pBBSet->GetItemState(nWhich) == SFX_ITEM_SET) | 
|  | { | 
|  | //UUUU create FillAttributes from SvxBrushItem | 
|  | const SvxBrushItem& rItem = static_cast< const SvxBrushItem& >(pBBSet->Get(nWhich)); | 
|  | SfxItemSet aTempSet(*pBBSet->GetPool(), XATTR_FILL_FIRST, XATTR_FILL_LAST); | 
|  |  | 
|  | setSvxBrushItemAsFillAttributesToTargetSet(rItem, aTempSet); | 
|  | aFillAttributes.reset(new drawinglayer::attribute::SdrAllFillAttributesHelper(aTempSet)); | 
|  | } | 
|  | } | 
|  |  | 
|  | if(SID_ATTR_PAGE_HEADERSET == nId) | 
|  | { | 
|  | //aBspWin.SetHdColor(rItem.GetColor()); | 
|  | aBspWin.setHeaderFillAttributes(aFillAttributes); | 
|  | } | 
|  | else | 
|  | { | 
|  | //aBspWin.SetFtColor(rItem.GetColor()); | 
|  | aBspWin.setFooterFillAttributes(aFillAttributes); | 
|  | } | 
|  | } | 
|  |  | 
|  | //---------------------------------------------------------------- | 
|  | { | 
|  | const sal_uInt16 nWhich = GetWhich(SID_ATTR_BORDER_OUTER); | 
|  |  | 
|  | if(pBBSet->GetItemState(nWhich) == SFX_ITEM_SET) | 
|  | { | 
|  | const SvxBoxItem& rItem = (const SvxBoxItem&)pBBSet->Get(nWhich); | 
|  |  | 
|  | if(nId == SID_ATTR_PAGE_HEADERSET) | 
|  | aBspWin.SetHdBorder(rItem); | 
|  | else | 
|  | aBspWin.SetFtBorder(rItem); | 
|  | } | 
|  | } | 
|  |  | 
|  | UpdateExample(); | 
|  | } | 
|  | delete pDlg; | 
|  | } | 
|  | return 0; | 
|  | } | 
|  |  | 
|  | /*-------------------------------------------------------------------- | 
|  | Beschreibung:	Bsp | 
|  | --------------------------------------------------------------------*/ | 
|  |  | 
|  | void SvxHFPage::UpdateExample() | 
|  | { | 
|  | if ( nId == SID_ATTR_PAGE_HEADERSET ) | 
|  | { | 
|  | aBspWin.SetHeader( aTurnOnBox.IsChecked() ); | 
|  | aBspWin.SetHdHeight( GetCoreValue( aHeightEdit, SFX_MAPUNIT_TWIP ) ); | 
|  | aBspWin.SetHdDist( GetCoreValue( aDistEdit, SFX_MAPUNIT_TWIP ) ); | 
|  | aBspWin.SetHdLeft( GetCoreValue( aLMEdit, SFX_MAPUNIT_TWIP ) ); | 
|  | aBspWin.SetHdRight( GetCoreValue( aRMEdit, SFX_MAPUNIT_TWIP ) ); | 
|  | } | 
|  | else | 
|  | { | 
|  | aBspWin.SetFooter( aTurnOnBox.IsChecked() ); | 
|  | aBspWin.SetFtHeight( GetCoreValue( aHeightEdit, SFX_MAPUNIT_TWIP ) ); | 
|  | aBspWin.SetFtDist( GetCoreValue( aDistEdit, SFX_MAPUNIT_TWIP ) ); | 
|  | aBspWin.SetFtLeft( GetCoreValue( aLMEdit, SFX_MAPUNIT_TWIP ) ); | 
|  | aBspWin.SetFtRight( GetCoreValue( aRMEdit, SFX_MAPUNIT_TWIP ) ); | 
|  | } | 
|  | aBspWin.Invalidate(); | 
|  | } | 
|  |  | 
|  | /*-------------------------------------------------------------------- | 
|  | Beschreibung: Hintergrund im Beispiel setzen | 
|  | --------------------------------------------------------------------*/ | 
|  |  | 
|  | void SvxHFPage::ResetBackground_Impl( const SfxItemSet& rSet ) | 
|  | { | 
|  | sal_uInt16 nWhich(GetWhich(SID_ATTR_PAGE_HEADERSET)); | 
|  |  | 
|  | if(SFX_ITEM_SET == rSet.GetItemState(nWhich, sal_False)) | 
|  | { | 
|  | const SvxSetItem& rSetItem = static_cast< const SvxSetItem& >(rSet.Get(nWhich, sal_False)); | 
|  | const SfxItemSet& rTmpSet = rSetItem.GetItemSet(); | 
|  | const SfxBoolItem& rOn = static_cast< const SfxBoolItem& >(rTmpSet.Get(GetWhich(SID_ATTR_PAGE_ON))); | 
|  |  | 
|  | if(rOn.GetValue()) | 
|  | { | 
|  | drawinglayer::attribute::SdrAllFillAttributesHelperPtr aHeaderFillAttributes; | 
|  |  | 
|  | if(mbEnableDrawingLayerFillStyles) | 
|  | { | 
|  | //UUUU create FillAttributes directly from DrawingLayer FillStyle entries | 
|  | aHeaderFillAttributes.reset(new drawinglayer::attribute::SdrAllFillAttributesHelper(rTmpSet)); | 
|  | } | 
|  | else | 
|  | { | 
|  | nWhich = GetWhich(SID_ATTR_BRUSH); | 
|  |  | 
|  | if(SFX_ITEM_SET == rTmpSet.GetItemState(nWhich)) | 
|  | { | 
|  | //UUUU create FillAttributes from SvxBrushItem | 
|  | const SvxBrushItem& rItem = static_cast< const SvxBrushItem& >(rTmpSet.Get(nWhich)); | 
|  | SfxItemSet aTempSet(*rTmpSet.GetPool(), XATTR_FILL_FIRST, XATTR_FILL_LAST); | 
|  |  | 
|  | setSvxBrushItemAsFillAttributesToTargetSet(rItem, aTempSet); | 
|  | aHeaderFillAttributes.reset(new drawinglayer::attribute::SdrAllFillAttributesHelper(aTempSet)); | 
|  | } | 
|  | } | 
|  |  | 
|  | aBspWin.setHeaderFillAttributes(aHeaderFillAttributes); | 
|  | nWhich = GetWhich(SID_ATTR_BORDER_OUTER); | 
|  |  | 
|  | if(rTmpSet.GetItemState(nWhich) == SFX_ITEM_SET) | 
|  | { | 
|  | const SvxBoxItem& rItem = | 
|  | (const SvxBoxItem&)rTmpSet.Get(nWhich); | 
|  | aBspWin.SetHdBorder(rItem); | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | nWhich = GetWhich(SID_ATTR_PAGE_FOOTERSET); | 
|  |  | 
|  | if(SFX_ITEM_SET == rSet.GetItemState(nWhich, sal_False)) | 
|  | { | 
|  | const SvxSetItem& rSetItem = static_cast< const SvxSetItem& >(rSet.Get(nWhich, sal_False)); | 
|  | const SfxItemSet& rTmpSet = rSetItem.GetItemSet(); | 
|  | const SfxBoolItem& rOn = static_cast< const SfxBoolItem& >(rTmpSet.Get(GetWhich(SID_ATTR_PAGE_ON))); | 
|  |  | 
|  | if(rOn.GetValue()) | 
|  | { | 
|  | drawinglayer::attribute::SdrAllFillAttributesHelperPtr aFooterFillAttributes; | 
|  |  | 
|  | if(mbEnableDrawingLayerFillStyles) | 
|  | { | 
|  | //UUUU create FillAttributes directly from DrawingLayer FillStyle entries | 
|  | aFooterFillAttributes.reset(new drawinglayer::attribute::SdrAllFillAttributesHelper(rTmpSet)); | 
|  | } | 
|  | else | 
|  | { | 
|  | nWhich = GetWhich(SID_ATTR_BRUSH); | 
|  |  | 
|  | if(SFX_ITEM_SET == rTmpSet.GetItemState(nWhich)) | 
|  | { | 
|  | //UUUU create FillAttributes from SvxBrushItem | 
|  | const SvxBrushItem& rItem = static_cast< const SvxBrushItem& >(rTmpSet.Get(nWhich)); | 
|  | SfxItemSet aTempSet(*rTmpSet.GetPool(), XATTR_FILL_FIRST, XATTR_FILL_LAST); | 
|  |  | 
|  | setSvxBrushItemAsFillAttributesToTargetSet(rItem, aTempSet); | 
|  | aFooterFillAttributes.reset(new drawinglayer::attribute::SdrAllFillAttributesHelper(aTempSet)); | 
|  | } | 
|  | } | 
|  |  | 
|  | aBspWin.setFooterFillAttributes(aFooterFillAttributes); | 
|  | nWhich = GetWhich(SID_ATTR_BORDER_OUTER); | 
|  |  | 
|  | if(rTmpSet.GetItemState(nWhich) == SFX_ITEM_SET) | 
|  | { | 
|  | const SvxBoxItem& rItem = static_cast< const SvxBoxItem& >(rTmpSet.Get(nWhich)); | 
|  | aBspWin.SetFtBorder(rItem); | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | drawinglayer::attribute::SdrAllFillAttributesHelperPtr aPageFillAttributes; | 
|  |  | 
|  | if(mbEnableDrawingLayerFillStyles) | 
|  | { | 
|  | //UUUU create FillAttributes directly from DrawingLayer FillStyle entries | 
|  | aPageFillAttributes.reset(new drawinglayer::attribute::SdrAllFillAttributesHelper(rSet)); | 
|  | } | 
|  | else | 
|  | { | 
|  | nWhich = GetWhich(SID_ATTR_BRUSH); | 
|  |  | 
|  | if(rSet.GetItemState(nWhich) >= SFX_ITEM_AVAILABLE) | 
|  | { | 
|  | //UUUU create FillAttributes from SvxBrushItem | 
|  | const SvxBrushItem& rItem = static_cast< const SvxBrushItem& >(rSet.Get(nWhich)); | 
|  | SfxItemSet aTempSet(*rSet.GetPool(), XATTR_FILL_FIRST, XATTR_FILL_LAST); | 
|  |  | 
|  | setSvxBrushItemAsFillAttributesToTargetSet(rItem, aTempSet); | 
|  | aPageFillAttributes.reset(new drawinglayer::attribute::SdrAllFillAttributesHelper(aTempSet)); | 
|  | } | 
|  | } | 
|  |  | 
|  | aBspWin.setPageFillAttributes(aPageFillAttributes); | 
|  | nWhich = GetWhich(SID_ATTR_BORDER_OUTER); | 
|  |  | 
|  | if(rSet.GetItemState(nWhich) >= SFX_ITEM_AVAILABLE) | 
|  | { | 
|  | const SvxBoxItem& rItem = static_cast< const SvxBoxItem& >(rSet.Get(nWhich)); | 
|  | aBspWin.SetBorder(rItem); | 
|  | } | 
|  | } | 
|  |  | 
|  | /*-------------------------------------------------------------------- | 
|  | Beschreibung: | 
|  | --------------------------------------------------------------------*/ | 
|  |  | 
|  | void SvxHFPage::ActivatePage( const SfxItemSet& rSet ) | 
|  | { | 
|  | const SfxPoolItem* pItem = GetItem( rSet, SID_ATTR_LRSPACE ); | 
|  |  | 
|  | if ( pItem ) | 
|  | { | 
|  | // linken und rechten Rand einstellen | 
|  | const SvxLRSpaceItem& rLRSpace = (const SvxLRSpaceItem&)*pItem; | 
|  |  | 
|  | aBspWin.SetLeft( rLRSpace.GetLeft() ); | 
|  | aBspWin.SetRight( rLRSpace.GetRight() ); | 
|  | } | 
|  | else | 
|  | { | 
|  | aBspWin.SetLeft( 0 ); | 
|  | aBspWin.SetRight( 0 ); | 
|  | } | 
|  |  | 
|  | pItem = GetItem( rSet, SID_ATTR_ULSPACE ); | 
|  |  | 
|  | if ( pItem ) | 
|  | { | 
|  | // oberen und unteren Rand einstellen | 
|  | const SvxULSpaceItem& rULSpace = (const SvxULSpaceItem&)*pItem; | 
|  |  | 
|  | aBspWin.SetTop( rULSpace.GetUpper() ); | 
|  | aBspWin.SetBottom( rULSpace.GetLower() ); | 
|  | } | 
|  | else | 
|  | { | 
|  | aBspWin.SetTop( 0 ); | 
|  | aBspWin.SetBottom( 0 ); | 
|  | } | 
|  |  | 
|  | sal_uInt16 nUsage = SVX_PAGE_ALL; | 
|  | pItem = GetItem( rSet, SID_ATTR_PAGE ); | 
|  |  | 
|  | if ( pItem ) | 
|  | nUsage = ( (const SvxPageItem*)pItem )->GetPageUsage(); | 
|  |  | 
|  | aBspWin.SetUsage( nUsage ); | 
|  |  | 
|  | if ( SVX_PAGE_RIGHT == nUsage || SVX_PAGE_LEFT == nUsage ) | 
|  | aCntSharedBox.Disable(); | 
|  | else | 
|  | aCntSharedBox.Enable(); | 
|  | pItem = GetItem( rSet, SID_ATTR_PAGE_SIZE ); | 
|  |  | 
|  | if ( pItem ) | 
|  | { | 
|  | // Orientation und Size aus dem PageItem | 
|  | const SvxSizeItem& rSize = (const SvxSizeItem&)*pItem; | 
|  | // die Groesse ist ggf. schon geswappt (Querformat) | 
|  | aBspWin.SetSize( rSize.GetSize() ); | 
|  | } | 
|  |  | 
|  | // Kopfzeilen-Attribute auswerten | 
|  | const SvxSetItem* pSetItem = 0; | 
|  |  | 
|  | if ( SFX_ITEM_SET == rSet.GetItemState( GetWhich( SID_ATTR_PAGE_HEADERSET ), | 
|  | sal_False, | 
|  | (const SfxPoolItem**)&pSetItem ) ) | 
|  | { | 
|  | const SfxItemSet& rHeaderSet = pSetItem->GetItemSet(); | 
|  | const SfxBoolItem& rHeaderOn = | 
|  | (const SfxBoolItem&)rHeaderSet.Get( GetWhich( SID_ATTR_PAGE_ON ) ); | 
|  |  | 
|  | if ( rHeaderOn.GetValue() ) | 
|  | { | 
|  | const SvxSizeItem& rSize = (const SvxSizeItem&) | 
|  | rHeaderSet.Get( GetWhich( SID_ATTR_PAGE_SIZE ) ); | 
|  | const SvxULSpaceItem& rUL = (const SvxULSpaceItem&) | 
|  | rHeaderSet.Get( GetWhich(SID_ATTR_ULSPACE ) ); | 
|  | const SvxLRSpaceItem& rLR = (const SvxLRSpaceItem&) | 
|  | rHeaderSet.Get( GetWhich( SID_ATTR_LRSPACE ) ); | 
|  | long nDist = rUL.GetLower(); | 
|  |  | 
|  | aBspWin.SetHdHeight( rSize.GetSize().Height() - nDist ); | 
|  | aBspWin.SetHdDist( nDist ); | 
|  | aBspWin.SetHdLeft( rLR.GetLeft() ); | 
|  | aBspWin.SetHdRight( rLR.GetRight() ); | 
|  | aBspWin.SetHeader( sal_True ); | 
|  | } | 
|  | else | 
|  | pSetItem = 0; | 
|  | } | 
|  |  | 
|  | if ( !pSetItem ) | 
|  | { | 
|  | aBspWin.SetHeader( sal_False ); | 
|  |  | 
|  | if ( SID_ATTR_PAGE_HEADERSET == nId ) | 
|  | aCntSharedBox.Disable(); | 
|  | } | 
|  | pSetItem = 0; | 
|  |  | 
|  | if ( SFX_ITEM_SET == rSet.GetItemState( GetWhich( SID_ATTR_PAGE_FOOTERSET ), | 
|  | sal_False, | 
|  | (const SfxPoolItem**)&pSetItem ) ) | 
|  | { | 
|  | const SfxItemSet& rFooterSet = pSetItem->GetItemSet(); | 
|  | const SfxBoolItem& rFooterOn = | 
|  | (const SfxBoolItem&)rFooterSet.Get( GetWhich( SID_ATTR_PAGE_ON ) ); | 
|  |  | 
|  | if ( rFooterOn.GetValue() ) | 
|  | { | 
|  | const SvxSizeItem& rSize = (const SvxSizeItem&) | 
|  | rFooterSet.Get( GetWhich( SID_ATTR_PAGE_SIZE ) ); | 
|  | const SvxULSpaceItem& rUL = (const SvxULSpaceItem&) | 
|  | rFooterSet.Get( GetWhich( SID_ATTR_ULSPACE ) ); | 
|  | const SvxLRSpaceItem& rLR = (const SvxLRSpaceItem&) | 
|  | rFooterSet.Get( GetWhich( SID_ATTR_LRSPACE ) ); | 
|  | long nDist = rUL.GetUpper(); | 
|  |  | 
|  | aBspWin.SetFtHeight( rSize.GetSize().Height() - nDist ); | 
|  | aBspWin.SetFtDist( nDist ); | 
|  | aBspWin.SetFtLeft( rLR.GetLeft() ); | 
|  | aBspWin.SetFtRight( rLR.GetRight() ); | 
|  | aBspWin.SetFooter( sal_True ); | 
|  | } | 
|  | else | 
|  | pSetItem = 0; | 
|  | } | 
|  |  | 
|  | if ( !pSetItem ) | 
|  | { | 
|  | aBspWin.SetFooter( sal_False ); | 
|  |  | 
|  | if ( SID_ATTR_PAGE_FOOTERSET == nId ) | 
|  | aCntSharedBox.Disable(); | 
|  | } | 
|  |  | 
|  | pItem = GetItem( rSet, SID_ATTR_PAGE_EXT1 ); | 
|  |  | 
|  | if ( pItem && pItem->ISA(SfxBoolItem) ) | 
|  | { | 
|  | aBspWin.SetTable( sal_True ); | 
|  | aBspWin.SetHorz( ( (SfxBoolItem*)pItem )->GetValue() ); | 
|  | } | 
|  |  | 
|  | pItem = GetItem( rSet, SID_ATTR_PAGE_EXT2 ); | 
|  |  | 
|  | if ( pItem && pItem->ISA(SfxBoolItem) ) | 
|  | { | 
|  | aBspWin.SetTable( sal_True ); | 
|  | aBspWin.SetVert( ( (SfxBoolItem*)pItem )->GetValue() ); | 
|  | } | 
|  | ResetBackground_Impl( rSet ); | 
|  | RangeHdl( 0 ); | 
|  | } | 
|  |  | 
|  | /*-------------------------------------------------------------------- | 
|  | Beschreibung: | 
|  | --------------------------------------------------------------------*/ | 
|  |  | 
|  | int SvxHFPage::DeactivatePage( SfxItemSet* _pSet ) | 
|  | { | 
|  | if ( _pSet ) | 
|  | FillItemSet( *_pSet ); | 
|  | return LEAVE_PAGE; | 
|  | } | 
|  |  | 
|  | /*-------------------------------------------------------------------- | 
|  | Beschreibung:	Berech | 
|  | --------------------------------------------------------------------*/ | 
|  |  | 
|  | IMPL_LINK( SvxHFPage, RangeHdl, Edit *, EMPTYARG ) | 
|  | { | 
|  | long nHHeight = aBspWin.GetHdHeight(); | 
|  | long nHDist   = aBspWin.GetHdDist(); | 
|  |  | 
|  | long nFHeight = aBspWin.GetFtHeight(); | 
|  | long nFDist   = aBspWin.GetFtDist(); | 
|  |  | 
|  | long nHeight = Max( (long)MINBODY, | 
|  | static_cast<long>(aHeightEdit.Denormalize( aHeightEdit.GetValue( FUNIT_TWIP ) ) ) ); | 
|  | long nDist   = aTurnOnBox.IsChecked() ? | 
|  | static_cast<long>(aDistEdit.Denormalize( aDistEdit.GetValue( FUNIT_TWIP ) )) : 0; | 
|  |  | 
|  | long nMin; | 
|  | long nMax; | 
|  |  | 
|  | if ( nId == SID_ATTR_PAGE_HEADERSET ) | 
|  | { | 
|  | nHHeight = nHeight; | 
|  | nHDist   = nDist; | 
|  | } | 
|  | else | 
|  | { | 
|  | nFHeight = nHeight; | 
|  | nFDist 	 = nDist; | 
|  | } | 
|  |  | 
|  | // Aktuelle Werte der Seitenraender | 
|  | long nBT = aBspWin.GetTop(); | 
|  | long nBB = aBspWin.GetBottom(); | 
|  | long nBL = aBspWin.GetLeft(); | 
|  | long nBR = aBspWin.GetRight(); | 
|  |  | 
|  | long nH  = aBspWin.GetSize().Height(); | 
|  | long nW  = aBspWin.GetSize().Width(); | 
|  |  | 
|  | // Grenzen | 
|  | if ( nId == SID_ATTR_PAGE_HEADERSET ) | 
|  | { | 
|  | // Header | 
|  | nMin = ( nH - nBB - nBT ) / 5; // 20% | 
|  | nMax = Max( nH - nMin - nHDist - nFDist - nFHeight - nBB - nBT, | 
|  | nMin ); | 
|  | aHeightEdit.SetMax( aHeightEdit.Normalize( nMax ), FUNIT_TWIP ); | 
|  | nMin = ( nH - nBB - nBT ) / 5; // 20% | 
|  | nDist = Max( nH - nMin - nHHeight - nFDist - nFHeight - nBB - nBT, | 
|  | long(0) ); | 
|  | aDistEdit.SetMax( aDistEdit.Normalize( nDist ), FUNIT_TWIP ); | 
|  | } | 
|  | else | 
|  | { | 
|  | // Footer | 
|  | nMin = ( nH - nBT - nBB ) / 5; // 20% | 
|  | nMax = Max( nH - nMin - nFDist - nHDist - nHHeight - nBT - nBB, | 
|  | nMin ); | 
|  | aHeightEdit.SetMax( aHeightEdit.Normalize( nMax ), FUNIT_TWIP ); | 
|  | nMin = ( nH - nBT - nBB ) / 5; // 20% | 
|  | nDist = Max( nH - nMin - nFHeight - nHDist - nHHeight - nBT - nBB, | 
|  | long(0) ); | 
|  | aDistEdit.SetMax( aDistEdit.Normalize( nDist ), FUNIT_TWIP ); | 
|  | } | 
|  |  | 
|  | // Einzuege beschraenken | 
|  | nMax = nW - nBL - nBR - | 
|  | static_cast<long>(aRMEdit.Denormalize( aRMEdit.GetValue( FUNIT_TWIP ) )) - MINBODY; | 
|  | aLMEdit.SetMax( aLMEdit.Normalize( nMax ), FUNIT_TWIP ); | 
|  |  | 
|  | nMax = nW - nBL - nBR - | 
|  | static_cast<long>(aLMEdit.Denormalize( aLMEdit.GetValue( FUNIT_TWIP ) )) - MINBODY; | 
|  | aRMEdit.SetMax( aLMEdit.Normalize( nMax ), FUNIT_TWIP ); | 
|  | return 0; | 
|  | } | 
|  | /* -----------------------------26.08.2002 12:49------------------------------ | 
|  |  | 
|  | ---------------------------------------------------------------------------*/ | 
|  | void lcl_Move(Window& rWin, sal_Int32 nDiff) | 
|  | { | 
|  | Point aPos(rWin.GetPosPixel()); | 
|  | aPos.Y() -= nDiff; | 
|  | rWin.SetPosPixel(aPos); | 
|  | } | 
|  |  | 
|  | void SvxHFPage::EnableDynamicSpacing() | 
|  | { | 
|  | aDynSpacingCB.Show(); | 
|  | //move all following controls | 
|  | Window* aMoveWindows[] = | 
|  | { | 
|  | &aHeightFT, | 
|  | &aHeightEdit, | 
|  | &aHeightDynBtn, | 
|  | &aBackgroundBtn, | 
|  | 0 | 
|  | }; | 
|  | sal_Int32 nOffset = aTurnOnBox.GetPosPixel().Y() - aCntSharedBox.GetPosPixel().Y(); | 
|  | sal_Int32 nIdx = 0; | 
|  | while(aMoveWindows[nIdx]) | 
|  | lcl_Move(*aMoveWindows[nIdx++], nOffset); | 
|  | } | 
|  |  | 
|  | void SvxHFPage::PageCreated(SfxAllItemSet aSet) | 
|  | { | 
|  | //UUUU | 
|  | SFX_ITEMSET_ARG (&aSet, pSupportDrawingLayerFillStyleItem, SfxBoolItem, SID_DRAWINGLAYER_FILLSTYLES, sal_False); | 
|  |  | 
|  | if(pSupportDrawingLayerFillStyleItem) | 
|  | { | 
|  | const bool bNew(pSupportDrawingLayerFillStyleItem->GetValue()); | 
|  |  | 
|  | EnableDrawingLayerFillStyles(bNew); | 
|  | } | 
|  | } | 
|  |  | 
|  | //eof |