xref: /aoo4110/main/cui/source/tabpages/page.cxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_cui.hxx"
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski // include ---------------------------------------------------------------
28*b1cdbd2cSJim Jagielski #include <sfx2/app.hxx>
29*b1cdbd2cSJim Jagielski #include <sfx2/objsh.hxx>
30*b1cdbd2cSJim Jagielski #include <tools/resary.hxx>
31*b1cdbd2cSJim Jagielski #include <vcl/graph.hxx>
32*b1cdbd2cSJim Jagielski #include <sfx2/viewsh.hxx>
33*b1cdbd2cSJim Jagielski #include <svl/itemiter.hxx>
34*b1cdbd2cSJim Jagielski #include <svl/languageoptions.hxx>
35*b1cdbd2cSJim Jagielski #include <vcl/msgbox.hxx>
36*b1cdbd2cSJim Jagielski #include <unotools/configitem.hxx>
37*b1cdbd2cSJim Jagielski #include "svx/htmlmode.hxx"
38*b1cdbd2cSJim Jagielski 
39*b1cdbd2cSJim Jagielski #define _SVX_PAGE_CXX
40*b1cdbd2cSJim Jagielski 
41*b1cdbd2cSJim Jagielski #include <cuires.hrc>
42*b1cdbd2cSJim Jagielski #include "page.hrc"
43*b1cdbd2cSJim Jagielski #include "helpid.hrc"
44*b1cdbd2cSJim Jagielski #include "page.hxx"
45*b1cdbd2cSJim Jagielski #include <svx/pageitem.hxx>
46*b1cdbd2cSJim Jagielski #include <editeng/brshitem.hxx>
47*b1cdbd2cSJim Jagielski #include <editeng/boxitem.hxx>
48*b1cdbd2cSJim Jagielski #include <editeng/shaditem.hxx>
49*b1cdbd2cSJim Jagielski #include <editeng/pbinitem.hxx>
50*b1cdbd2cSJim Jagielski #include <editeng/lrspitem.hxx>
51*b1cdbd2cSJim Jagielski #include <editeng/ulspitem.hxx>
52*b1cdbd2cSJim Jagielski #include <editeng/sizeitem.hxx>
53*b1cdbd2cSJim Jagielski #include <editeng/frmdiritem.hxx>
54*b1cdbd2cSJim Jagielski #include "svx/dlgutil.hxx"
55*b1cdbd2cSJim Jagielski #include <dialmgr.hxx>
56*b1cdbd2cSJim Jagielski #include <editeng/paperinf.hxx>
57*b1cdbd2cSJim Jagielski #include <dialmgr.hxx>
58*b1cdbd2cSJim Jagielski #include <sfx2/module.hxx>
59*b1cdbd2cSJim Jagielski #include <svl/stritem.hxx>
60*b1cdbd2cSJim Jagielski #include <svx/dialogs.hrc>  // for RID_SVXPAGE_PAGE
61*b1cdbd2cSJim Jagielski #include <editeng/eerdll.hxx>
62*b1cdbd2cSJim Jagielski #include <editeng/editrids.hrc> // for RID_SVXSTR_PAPERBIN...,
63*b1cdbd2cSJim Jagielski #include <svx/svxids.hrc>
64*b1cdbd2cSJim Jagielski 
65*b1cdbd2cSJim Jagielski // #i4219#
66*b1cdbd2cSJim Jagielski #include <svtools/optionsdrawinglayer.hxx>
67*b1cdbd2cSJim Jagielski #include <svl/slstitm.hxx> //CHINA001
68*b1cdbd2cSJim Jagielski #include <svl/aeitem.hxx> //CHINA001
69*b1cdbd2cSJim Jagielski #include <sfx2/request.hxx> //CHINA001
70*b1cdbd2cSJim Jagielski // configuration helper =======================================================
71*b1cdbd2cSJim Jagielski 
72*b1cdbd2cSJim Jagielski /** Helper to get a configuration setting.
73*b1cdbd2cSJim Jagielski     @descr  This is a HACK to get a configuration item directly. Normally the
74*b1cdbd2cSJim Jagielski     OfaHtmlOptions class from 'offmgr' project would do the job, but we cannot
75*b1cdbd2cSJim Jagielski     use it here. On the other hand, the OfaHtmlOptions cannot be moved to
76*b1cdbd2cSJim Jagielski     'svtools', because it uses 'svx' itself...
77*b1cdbd2cSJim Jagielski     The correct way would be to move OfaHtmlOptions to 'svtools' anyway, and to
78*b1cdbd2cSJim Jagielski     remove the dependency from 'svx' (a call to the static function
79*b1cdbd2cSJim Jagielski     SvxTextEncodingBox::GetBestMimeEncoding(), which contains low level
80*b1cdbd2cSJim Jagielski     operations that can be moved to lower projects, i.e. 'rtl'). Then this
81*b1cdbd2cSJim Jagielski     class can be removed, and the OfaHtmlOptions can be used instead. */
82*b1cdbd2cSJim Jagielski class SvxHtmlExportModeConfigItem_Impl : public utl::ConfigItem
83*b1cdbd2cSJim Jagielski {
84*b1cdbd2cSJim Jagielski public:
85*b1cdbd2cSJim Jagielski     explicit                    SvxHtmlExportModeConfigItem_Impl();
86*b1cdbd2cSJim Jagielski 
87*b1cdbd2cSJim Jagielski     /** Returns the HTML export mode, as read from the configuration. */
GetExportMode() const88*b1cdbd2cSJim Jagielski     inline sal_Int32            GetExportMode() const { return mnExpMode; }
89*b1cdbd2cSJim Jagielski 
90*b1cdbd2cSJim Jagielski     /** Returns true, if the current HTML export mode is set to HTML 3.2. */
IsExportModeHTML32() const91*b1cdbd2cSJim Jagielski     inline bool                 IsExportModeHTML32() const { return mnExpMode == 0; } // 0 == HTML_CFG_HTML32, see offmgr/htmlcfg.hxx
92*b1cdbd2cSJim Jagielski 
93*b1cdbd2cSJim Jagielski     virtual void    Commit();
94*b1cdbd2cSJim Jagielski 	virtual void Notify( const com::sun::star::uno::Sequence< rtl::OUString >& _rPropertyNames);
95*b1cdbd2cSJim Jagielski 
96*b1cdbd2cSJim Jagielski private:
97*b1cdbd2cSJim Jagielski     sal_Int32                   mnExpMode;
98*b1cdbd2cSJim Jagielski };
99*b1cdbd2cSJim Jagielski 
SvxHtmlExportModeConfigItem_Impl()100*b1cdbd2cSJim Jagielski SvxHtmlExportModeConfigItem_Impl::SvxHtmlExportModeConfigItem_Impl() :
101*b1cdbd2cSJim Jagielski     utl::ConfigItem( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Office.Common/Filter/HTML/Export" ) ) ),
102*b1cdbd2cSJim Jagielski     mnExpMode( 3 )  // default to 3 == HTML_CFG_NS40, see offmgr/htmlcfg.hxx
103*b1cdbd2cSJim Jagielski {
104*b1cdbd2cSJim Jagielski     using com::sun::star::uno::Sequence;
105*b1cdbd2cSJim Jagielski     using com::sun::star::uno::Any;
106*b1cdbd2cSJim Jagielski 
107*b1cdbd2cSJim Jagielski     Sequence< rtl::OUString > aPropNames( 1 );
108*b1cdbd2cSJim Jagielski     aPropNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Browser" ) );
109*b1cdbd2cSJim Jagielski     Sequence< Any > aPropValues( GetProperties( aPropNames ) );
110*b1cdbd2cSJim Jagielski     if( aPropValues.getLength() == 1 )
111*b1cdbd2cSJim Jagielski         aPropValues[ 0 ] >>= mnExpMode;
112*b1cdbd2cSJim Jagielski }
113*b1cdbd2cSJim Jagielski 
Commit()114*b1cdbd2cSJim Jagielski void SvxHtmlExportModeConfigItem_Impl::Commit()
115*b1cdbd2cSJim Jagielski {
116*b1cdbd2cSJim Jagielski }
117*b1cdbd2cSJim Jagielski 
Notify(const com::sun::star::uno::Sequence<rtl::OUString> &)118*b1cdbd2cSJim Jagielski void SvxHtmlExportModeConfigItem_Impl::Notify( const com::sun::star::uno::Sequence< rtl::OUString >& )
119*b1cdbd2cSJim Jagielski {
120*b1cdbd2cSJim Jagielski }
121*b1cdbd2cSJim Jagielski 
122*b1cdbd2cSJim Jagielski // static ----------------------------------------------------------------
123*b1cdbd2cSJim Jagielski 
124*b1cdbd2cSJim Jagielski static const long MINBODY 		= 284;	// 0,5cm in twips aufgerundet
125*b1cdbd2cSJim Jagielski //static const long PRINT_OFFSET 	= 17;	// 0,03cm in twips abgerundet
126*b1cdbd2cSJim Jagielski static const long PRINT_OFFSET 	= 0;	// why was this ever set to 17 ? it led to wrong right and bottom margins.
127*b1cdbd2cSJim Jagielski 
128*b1cdbd2cSJim Jagielski static sal_uInt16 pRanges[] =
129*b1cdbd2cSJim Jagielski {
130*b1cdbd2cSJim Jagielski 	SID_ATTR_BORDER_OUTER,
131*b1cdbd2cSJim Jagielski 	SID_ATTR_BORDER_SHADOW,
132*b1cdbd2cSJim Jagielski 	SID_ATTR_LRSPACE,
133*b1cdbd2cSJim Jagielski 	SID_ATTR_PAGE_SHARED,
134*b1cdbd2cSJim Jagielski 	SID_SWREGISTER_COLLECTION,
135*b1cdbd2cSJim Jagielski 	SID_SWREGISTER_MODE,
136*b1cdbd2cSJim Jagielski 	0
137*b1cdbd2cSJim Jagielski };
138*b1cdbd2cSJim Jagielski 
139*b1cdbd2cSJim Jagielski // ------- Mapping Seitenlayout ------------------------------------------
140*b1cdbd2cSJim Jagielski 
141*b1cdbd2cSJim Jagielski sal_uInt16 aArr[] =
142*b1cdbd2cSJim Jagielski {
143*b1cdbd2cSJim Jagielski 	SVX_PAGE_ALL,
144*b1cdbd2cSJim Jagielski 	SVX_PAGE_MIRROR,
145*b1cdbd2cSJim Jagielski 	SVX_PAGE_RIGHT,
146*b1cdbd2cSJim Jagielski 	SVX_PAGE_LEFT
147*b1cdbd2cSJim Jagielski };
148*b1cdbd2cSJim Jagielski 
149*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
150*b1cdbd2cSJim Jagielski 
PageUsageToPos_Impl(sal_uInt16 nUsage)151*b1cdbd2cSJim Jagielski sal_uInt16 PageUsageToPos_Impl( sal_uInt16 nUsage )
152*b1cdbd2cSJim Jagielski {
153*b1cdbd2cSJim Jagielski 	const sal_uInt16 nCount = sizeof(aArr) / sizeof(sal_uInt16);
154*b1cdbd2cSJim Jagielski 
155*b1cdbd2cSJim Jagielski 	for ( sal_uInt16 i = 0; i < nCount; ++i )
156*b1cdbd2cSJim Jagielski 		if ( aArr[i] == ( nUsage & 0x000f ) )
157*b1cdbd2cSJim Jagielski 			return i;
158*b1cdbd2cSJim Jagielski 	return SVX_PAGE_ALL;
159*b1cdbd2cSJim Jagielski }
160*b1cdbd2cSJim Jagielski 
161*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
162*b1cdbd2cSJim Jagielski 
PosToPageUsage_Impl(sal_uInt16 nPos)163*b1cdbd2cSJim Jagielski sal_uInt16 PosToPageUsage_Impl( sal_uInt16 nPos )
164*b1cdbd2cSJim Jagielski {
165*b1cdbd2cSJim Jagielski 	const sal_uInt16 nCount = sizeof(aArr) / sizeof(sal_uInt16);
166*b1cdbd2cSJim Jagielski 
167*b1cdbd2cSJim Jagielski 	if ( nPos >= nCount )
168*b1cdbd2cSJim Jagielski 		return 0;
169*b1cdbd2cSJim Jagielski 	return aArr[nPos];
170*b1cdbd2cSJim Jagielski }
171*b1cdbd2cSJim Jagielski 
172*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
173*b1cdbd2cSJim Jagielski 
GetMinBorderSpace_Impl(const SvxShadowItem & rShadow,const SvxBoxItem & rBox)174*b1cdbd2cSJim Jagielski Size GetMinBorderSpace_Impl( const SvxShadowItem& rShadow, const SvxBoxItem& rBox )
175*b1cdbd2cSJim Jagielski {
176*b1cdbd2cSJim Jagielski 	Size aSz;
177*b1cdbd2cSJim Jagielski 	aSz.Height() = rShadow.CalcShadowSpace( SHADOW_BOTTOM ) + rBox.CalcLineSpace( BOX_LINE_BOTTOM );
178*b1cdbd2cSJim Jagielski 	aSz.Height() += rShadow.CalcShadowSpace( SHADOW_TOP ) + rBox.CalcLineSpace( BOX_LINE_TOP );
179*b1cdbd2cSJim Jagielski 	aSz.Width() = rShadow.CalcShadowSpace( SHADOW_LEFT ) + rBox.CalcLineSpace( BOX_LINE_LEFT );
180*b1cdbd2cSJim Jagielski 	aSz.Width() += rShadow.CalcShadowSpace( SHADOW_RIGHT ) + rBox.CalcLineSpace( BOX_LINE_RIGHT );
181*b1cdbd2cSJim Jagielski 	return aSz;
182*b1cdbd2cSJim Jagielski }
183*b1cdbd2cSJim Jagielski 
184*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
185*b1cdbd2cSJim Jagielski 
ConvertLong_Impl(const long nIn,SfxMapUnit eUnit)186*b1cdbd2cSJim Jagielski long ConvertLong_Impl( const long nIn, SfxMapUnit eUnit )
187*b1cdbd2cSJim Jagielski {
188*b1cdbd2cSJim Jagielski 	return OutputDevice::LogicToLogic( nIn, (MapUnit)eUnit, MAP_TWIP );
189*b1cdbd2cSJim Jagielski }
190*b1cdbd2cSJim Jagielski 
IsEqualSize_Impl(const SvxSizeItem * pSize,const Size & rSize)191*b1cdbd2cSJim Jagielski sal_Bool IsEqualSize_Impl( const SvxSizeItem* pSize, const Size& rSize )
192*b1cdbd2cSJim Jagielski {
193*b1cdbd2cSJim Jagielski 	if ( pSize )
194*b1cdbd2cSJim Jagielski 	{
195*b1cdbd2cSJim Jagielski 		Size aSize = pSize->GetSize();
196*b1cdbd2cSJim Jagielski 		long nDiffW = Abs( rSize.Width () - aSize.Width () );
197*b1cdbd2cSJim Jagielski 		long nDiffH = Abs( rSize.Height() - aSize.Height() );
198*b1cdbd2cSJim Jagielski 		return ( nDiffW < 10 && nDiffH < 10 );
199*b1cdbd2cSJim Jagielski 	}
200*b1cdbd2cSJim Jagielski 	else
201*b1cdbd2cSJim Jagielski 		return sal_False;
202*b1cdbd2cSJim Jagielski }
203*b1cdbd2cSJim Jagielski 
204*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
205*b1cdbd2cSJim Jagielski 
206*b1cdbd2cSJim Jagielski #define MARGIN_LEFT		( (MarginPosition)0x0001 )
207*b1cdbd2cSJim Jagielski #define MARGIN_RIGHT	( (MarginPosition)0x0002 )
208*b1cdbd2cSJim Jagielski #define MARGIN_TOP		( (MarginPosition)0x0004 )
209*b1cdbd2cSJim Jagielski #define MARGIN_BOTTOM	( (MarginPosition)0x0008 )
210*b1cdbd2cSJim Jagielski 
211*b1cdbd2cSJim Jagielski struct SvxPage_Impl
212*b1cdbd2cSJim Jagielski {
213*b1cdbd2cSJim Jagielski 	MarginPosition	m_nPos;
214*b1cdbd2cSJim Jagielski     Printer*        mpDefPrinter;
215*b1cdbd2cSJim Jagielski     bool            mbDelPrinter;
216*b1cdbd2cSJim Jagielski 
SvxPage_ImplSvxPage_Impl217*b1cdbd2cSJim Jagielski     SvxPage_Impl() :
218*b1cdbd2cSJim Jagielski         m_nPos( 0 ),
219*b1cdbd2cSJim Jagielski         mpDefPrinter( 0 ),
220*b1cdbd2cSJim Jagielski         mbDelPrinter( false ) {}
221*b1cdbd2cSJim Jagielski 
~SvxPage_ImplSvxPage_Impl222*b1cdbd2cSJim Jagielski     ~SvxPage_Impl() { if ( mbDelPrinter ) delete mpDefPrinter; }
223*b1cdbd2cSJim Jagielski };
224*b1cdbd2cSJim Jagielski 
225*b1cdbd2cSJim Jagielski // class SvxPageDescPage --------------------------------------------------
226*b1cdbd2cSJim Jagielski 
227*b1cdbd2cSJim Jagielski // gibt den Bereich der Which-Werte zur"uck
228*b1cdbd2cSJim Jagielski 
GetRanges()229*b1cdbd2cSJim Jagielski sal_uInt16* SvxPageDescPage::GetRanges()
230*b1cdbd2cSJim Jagielski {
231*b1cdbd2cSJim Jagielski 	return pRanges;
232*b1cdbd2cSJim Jagielski }
233*b1cdbd2cSJim Jagielski 
234*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
235*b1cdbd2cSJim Jagielski 
Create(Window * pParent,const SfxItemSet & rSet)236*b1cdbd2cSJim Jagielski SfxTabPage* SvxPageDescPage::Create( Window* pParent, const SfxItemSet& rSet )
237*b1cdbd2cSJim Jagielski {
238*b1cdbd2cSJim Jagielski 	return new SvxPageDescPage( pParent, rSet );
239*b1cdbd2cSJim Jagielski }
240*b1cdbd2cSJim Jagielski 
241*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
242*b1cdbd2cSJim Jagielski 
SvxPageDescPage(Window * pParent,const SfxItemSet & rAttr)243*b1cdbd2cSJim Jagielski SvxPageDescPage::SvxPageDescPage( Window* pParent, const SfxItemSet& rAttr ) :
244*b1cdbd2cSJim Jagielski 
245*b1cdbd2cSJim Jagielski 	SfxTabPage( pParent, CUI_RES( RID_SVXPAGE_PAGE ), rAttr ),
246*b1cdbd2cSJim Jagielski 
247*b1cdbd2cSJim Jagielski     aPaperSizeFl        ( this, CUI_RES( FL_PAPER_SIZE ) ),
248*b1cdbd2cSJim Jagielski     aPaperFormatText    ( this, CUI_RES( FT_PAPER_FORMAT ) ),
249*b1cdbd2cSJim Jagielski     aPaperSizeBox       ( this, CUI_RES( LB_PAPER_SIZE ) ),
250*b1cdbd2cSJim Jagielski     aPaperWidthText     ( this, CUI_RES( FT_PAPER_WIDTH ) ),
251*b1cdbd2cSJim Jagielski     aPaperWidthEdit     ( this, CUI_RES( ED_PAPER_WIDTH ) ),
252*b1cdbd2cSJim Jagielski     aPaperHeightText    ( this, CUI_RES( FT_PAPER_HEIGHT ) ),
253*b1cdbd2cSJim Jagielski     aPaperHeightEdit    ( this, CUI_RES( ED_PAPER_HEIGHT ) ),
254*b1cdbd2cSJim Jagielski     aOrientationFT      ( this, CUI_RES( FT_ORIENTATION ) ),
255*b1cdbd2cSJim Jagielski 	aPortraitBtn        ( this, CUI_RES( RB_PORTRAIT ) ),
256*b1cdbd2cSJim Jagielski     aLandscapeBtn       ( this, CUI_RES( RB_LANDSCAPE ) ),
257*b1cdbd2cSJim Jagielski 	aBspWin             ( this, CUI_RES( WN_BSP ) ),
258*b1cdbd2cSJim Jagielski     aTextFlowLbl        ( this, CUI_RES( FT_TEXT_FLOW ) ),
259*b1cdbd2cSJim Jagielski     aTextFlowBox        ( this, CUI_RES( LB_TEXT_FLOW ) ),
260*b1cdbd2cSJim Jagielski 	aPaperTrayLbl       ( this, CUI_RES( FT_PAPER_TRAY ) ),
261*b1cdbd2cSJim Jagielski     aPaperTrayBox       ( this, CUI_RES( LB_PAPER_TRAY ) ),
262*b1cdbd2cSJim Jagielski 	aMarginFl           ( this, CUI_RES( FL_MARGIN ) ),
263*b1cdbd2cSJim Jagielski     aLeftMarginLbl      ( this, CUI_RES( FT_LEFT_MARGIN ) ),
264*b1cdbd2cSJim Jagielski 	aLeftMarginEdit		( this, CUI_RES( ED_LEFT_MARGIN ) ),
265*b1cdbd2cSJim Jagielski 	aRightMarginLbl		( this, CUI_RES( FT_RIGHT_MARGIN ) ),
266*b1cdbd2cSJim Jagielski 	aRightMarginEdit	( this, CUI_RES( ED_RIGHT_MARGIN ) ),
267*b1cdbd2cSJim Jagielski 	aTopMarginLbl		( this, CUI_RES( FT_TOP_MARGIN ) ),
268*b1cdbd2cSJim Jagielski 	aTopMarginEdit		( this, CUI_RES( ED_TOP_MARGIN ) ),
269*b1cdbd2cSJim Jagielski 	aBottomMarginLbl	( this, CUI_RES( FT_BOTTOM_MARGIN ) ),
270*b1cdbd2cSJim Jagielski 	aBottomMarginEdit	( this, CUI_RES( ED_BOTTOM_MARGIN ) ),
271*b1cdbd2cSJim Jagielski     aBottomSeparatorFl  ( this, CUI_RES( FL_BOTTOM_SEP ) ),
272*b1cdbd2cSJim Jagielski     aLayoutFL           ( this, CUI_RES( FL_LAYOUT ) ),
273*b1cdbd2cSJim Jagielski 	aPageText			( this, CUI_RES( FT_PAGELAYOUT ) ),
274*b1cdbd2cSJim Jagielski     aLayoutBox          ( this, CUI_RES( LB_LAYOUT ) ),
275*b1cdbd2cSJim Jagielski 	aNumberFormatText	( this, CUI_RES( FT_NUMBER_FORMAT ) ),
276*b1cdbd2cSJim Jagielski 	aNumberFormatBox	( this, CUI_RES( LB_NUMBER_FORMAT ) ),
277*b1cdbd2cSJim Jagielski     aTblAlignFT         ( this, CUI_RES( FT_TBL_ALIGN ) ),
278*b1cdbd2cSJim Jagielski     aHorzBox            ( this, CUI_RES( CB_HORZ ) ),
279*b1cdbd2cSJim Jagielski 	aVertBox			( this, CUI_RES( CB_VERT ) ),
280*b1cdbd2cSJim Jagielski 	aAdaptBox			( this, CUI_RES( CB_ADAPT ) ),
281*b1cdbd2cSJim Jagielski 	aRegisterCB         ( this, CUI_RES( CB_REGISTER ) ),
282*b1cdbd2cSJim Jagielski 	aRegisterFT         ( this, CUI_RES( FT_REGISTER ) ),
283*b1cdbd2cSJim Jagielski 	aRegisterLB       	( this, CUI_RES( LB_REGISTER ) ),
284*b1cdbd2cSJim Jagielski 
285*b1cdbd2cSJim Jagielski 	aInsideText			( 		CUI_RES( STR_INSIDE ) ),
286*b1cdbd2cSJim Jagielski 	aOutsideText		( 		CUI_RES( STR_OUTSIDE ) ),
287*b1cdbd2cSJim Jagielski 	aPrintRangeQueryText(		CUI_RES( STR_QUERY_PRINTRANGE ) ),
288*b1cdbd2cSJim Jagielski 
289*b1cdbd2cSJim Jagielski 	bLandscape			( sal_False ),
290*b1cdbd2cSJim Jagielski 	eMode				( SVX_PAGE_MODE_STANDARD ),
291*b1cdbd2cSJim Jagielski 	ePaperStart			( PAPER_A3 ),
292*b1cdbd2cSJim Jagielski 	ePaperEnd 			( PAPER_ENV_DL ),
293*b1cdbd2cSJim Jagielski 	pImpl				( new SvxPage_Impl )
294*b1cdbd2cSJim Jagielski 
295*b1cdbd2cSJim Jagielski {
296*b1cdbd2cSJim Jagielski 	bBorderModified = sal_False;
297*b1cdbd2cSJim Jagielski 	FreeResource();
298*b1cdbd2cSJim Jagielski     aBspWin.EnableRTL( sal_False );
299*b1cdbd2cSJim Jagielski 
300*b1cdbd2cSJim Jagielski 	// diese Page braucht ExchangeSupport
301*b1cdbd2cSJim Jagielski 	SetExchangeSupport();
302*b1cdbd2cSJim Jagielski 
303*b1cdbd2cSJim Jagielski     SvtLanguageOptions aLangOptions;
304*b1cdbd2cSJim Jagielski     sal_Bool bCJK = aLangOptions.IsAsianTypographyEnabled();
305*b1cdbd2cSJim Jagielski     sal_Bool bCTL = aLangOptions.IsCTLFontEnabled();
306*b1cdbd2cSJim Jagielski     sal_Bool bWeb = sal_False;
307*b1cdbd2cSJim Jagielski     const SfxPoolItem* pItem;
308*b1cdbd2cSJim Jagielski 
309*b1cdbd2cSJim Jagielski     SfxObjectShell* pShell;
310*b1cdbd2cSJim Jagielski     if(SFX_ITEM_SET == rAttr.GetItemState(SID_HTML_MODE, sal_False, &pItem) ||
311*b1cdbd2cSJim Jagielski 		( 0 != (pShell = SfxObjectShell::Current()) &&
312*b1cdbd2cSJim Jagielski 					0 != (pItem = pShell->GetItem(SID_HTML_MODE))))
313*b1cdbd2cSJim Jagielski         bWeb = 0 != (((const SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON);
314*b1cdbd2cSJim Jagielski 
315*b1cdbd2cSJim Jagielski     // #109989# get the HTML export setting from configuration.
316*b1cdbd2cSJim Jagielski     // !! This is a hack, see comments in SvxHtmlExportModeConfigItem_Impl class above.
317*b1cdbd2cSJim Jagielski     bool bHTML32 = SvxHtmlExportModeConfigItem_Impl().IsExportModeHTML32();
318*b1cdbd2cSJim Jagielski 
319*b1cdbd2cSJim Jagielski     //  fill text flow listbox with valid entries
320*b1cdbd2cSJim Jagielski     aTextFlowBox.InsertEntryValue( CUI_RESSTR( RID_SVXSTR_PAGEDIR_LTR_HORI ), FRMDIR_HORI_LEFT_TOP );
321*b1cdbd2cSJim Jagielski     if( bCTL )
322*b1cdbd2cSJim Jagielski         aTextFlowBox.InsertEntryValue( CUI_RESSTR( RID_SVXSTR_PAGEDIR_RTL_HORI ), FRMDIR_HORI_RIGHT_TOP );
323*b1cdbd2cSJim Jagielski     // #109989# do not show vertical directions in Writer/Web
324*b1cdbd2cSJim Jagielski     if( !bWeb )
325*b1cdbd2cSJim Jagielski     {
326*b1cdbd2cSJim Jagielski         if( bCJK )
327*b1cdbd2cSJim Jagielski         {
328*b1cdbd2cSJim Jagielski             aTextFlowBox.InsertEntryValue( CUI_RESSTR( RID_SVXSTR_PAGEDIR_RTL_VERT ), FRMDIR_VERT_TOP_RIGHT );
329*b1cdbd2cSJim Jagielski //            aTextFlowBox.InsertEntryValue( CUI_RESSTR( RID_SVXSTR_PAGEDIR_LTR_VERT ), FRMDIR_VERT_TOP_LEFT );
330*b1cdbd2cSJim Jagielski         }
331*b1cdbd2cSJim Jagielski     }
332*b1cdbd2cSJim Jagielski 
333*b1cdbd2cSJim Jagielski     // #109989# show the text direction box in Writer/Web too, but only, if HTML export mode is not HTML3.2.
334*b1cdbd2cSJim Jagielski     if( !(bWeb && bHTML32) && (bCJK || bCTL) &&
335*b1cdbd2cSJim Jagielski         SFX_ITEM_UNKNOWN < rAttr.GetItemState(GetWhich( SID_ATTR_FRAMEDIRECTION )))
336*b1cdbd2cSJim Jagielski     {
337*b1cdbd2cSJim Jagielski         aTextFlowLbl.Show();
338*b1cdbd2cSJim Jagielski         aTextFlowBox.Show();
339*b1cdbd2cSJim Jagielski         aTextFlowBox.SetSelectHdl(LINK(this, SvxPageDescPage, FrameDirectionModify_Impl ));
340*b1cdbd2cSJim Jagielski 
341*b1cdbd2cSJim Jagielski         aBspWin.EnableFrameDirection(sal_True);
342*b1cdbd2cSJim Jagielski     }
343*b1cdbd2cSJim Jagielski     Init_Impl();
344*b1cdbd2cSJim Jagielski 
345*b1cdbd2cSJim Jagielski 	FieldUnit eFUnit = GetModuleFieldUnit( rAttr );
346*b1cdbd2cSJim Jagielski 	SetFieldUnit( aLeftMarginEdit, eFUnit );
347*b1cdbd2cSJim Jagielski 	SetFieldUnit( aRightMarginEdit, eFUnit );
348*b1cdbd2cSJim Jagielski 	SetFieldUnit( aTopMarginEdit, eFUnit );
349*b1cdbd2cSJim Jagielski 	SetFieldUnit( aBottomMarginEdit, eFUnit );
350*b1cdbd2cSJim Jagielski 	SetFieldUnit( aPaperWidthEdit, eFUnit );
351*b1cdbd2cSJim Jagielski 	SetFieldUnit( aPaperHeightEdit, eFUnit );
352*b1cdbd2cSJim Jagielski 
353*b1cdbd2cSJim Jagielski     if ( SfxViewShell::Current() && SfxViewShell::Current()->GetPrinter() )
354*b1cdbd2cSJim Jagielski         pImpl->mpDefPrinter = (Printer*)SfxViewShell::Current()->GetPrinter();
355*b1cdbd2cSJim Jagielski 	else
356*b1cdbd2cSJim Jagielski 	{
357*b1cdbd2cSJim Jagielski         pImpl->mpDefPrinter = new Printer;
358*b1cdbd2cSJim Jagielski         pImpl->mbDelPrinter = true;
359*b1cdbd2cSJim Jagielski 	}
360*b1cdbd2cSJim Jagielski 
361*b1cdbd2cSJim Jagielski     MapMode aOldMode = pImpl->mpDefPrinter->GetMapMode();
362*b1cdbd2cSJim Jagielski     pImpl->mpDefPrinter->SetMapMode( MAP_TWIP );
363*b1cdbd2cSJim Jagielski 
364*b1cdbd2cSJim Jagielski 	// First- und Last-Werte f"ur die R"ander setzen
365*b1cdbd2cSJim Jagielski     Size aPaperSize = pImpl->mpDefPrinter->GetPaperSize();
366*b1cdbd2cSJim Jagielski     Size aPrintSize = pImpl->mpDefPrinter->GetOutputSize();
367*b1cdbd2cSJim Jagielski 	/*
368*b1cdbd2cSJim Jagielski 	 * einen Punkt ( 0,0 ) in logische Koordinaten zu konvertieren,
369*b1cdbd2cSJim Jagielski 	 * sieht aus wie Unsinn; ist aber sinnvoll, wenn der Ursprung des
370*b1cdbd2cSJim Jagielski 	 * Koordinatensystems verschoben ist.
371*b1cdbd2cSJim Jagielski 	 */
372*b1cdbd2cSJim Jagielski     Point aPrintOffset = pImpl->mpDefPrinter->GetPageOffset() -
373*b1cdbd2cSJim Jagielski                          pImpl->mpDefPrinter->PixelToLogic( Point() );
374*b1cdbd2cSJim Jagielski     pImpl->mpDefPrinter->SetMapMode( aOldMode );
375*b1cdbd2cSJim Jagielski 
376*b1cdbd2cSJim Jagielski     long nOffset = !aPrintOffset.X() && !aPrintOffset.Y() ? 0 : PRINT_OFFSET;
377*b1cdbd2cSJim Jagielski 	aLeftMarginEdit.SetFirst( aLeftMarginEdit.Normalize( aPrintOffset.X() ), FUNIT_TWIP );
378*b1cdbd2cSJim Jagielski 	nFirstLeftMargin = static_cast<long>(aLeftMarginEdit.GetFirst());
379*b1cdbd2cSJim Jagielski 	aRightMarginEdit.SetFirst( aRightMarginEdit.Normalize(
380*b1cdbd2cSJim Jagielski 		aPaperSize.Width() - aPrintSize.Width() - aPrintOffset.X() + nOffset ), FUNIT_TWIP);
381*b1cdbd2cSJim Jagielski 	nFirstRightMargin = static_cast<long>(aRightMarginEdit.GetFirst());
382*b1cdbd2cSJim Jagielski 	aTopMarginEdit.SetFirst( aTopMarginEdit.Normalize( aPrintOffset.Y() ), FUNIT_TWIP );
383*b1cdbd2cSJim Jagielski 	nFirstTopMargin = static_cast<long>(aTopMarginEdit.GetFirst());
384*b1cdbd2cSJim Jagielski 	aBottomMarginEdit.SetFirst( aBottomMarginEdit.Normalize(
385*b1cdbd2cSJim Jagielski 		aPaperSize.Height() - aPrintSize.Height() - aPrintOffset.Y() + nOffset ), FUNIT_TWIP );
386*b1cdbd2cSJim Jagielski 	nFirstBottomMargin = static_cast<long>(aBottomMarginEdit.GetFirst());
387*b1cdbd2cSJim Jagielski 	aLeftMarginEdit.SetLast( aLeftMarginEdit.Normalize(
388*b1cdbd2cSJim Jagielski 		aPrintOffset.X() + aPrintSize.Width() ), FUNIT_TWIP );
389*b1cdbd2cSJim Jagielski 	nLastLeftMargin = static_cast<long>(aLeftMarginEdit.GetLast());
390*b1cdbd2cSJim Jagielski 	aRightMarginEdit.SetLast( aRightMarginEdit.Normalize(
391*b1cdbd2cSJim Jagielski 		aPrintOffset.X() + aPrintSize.Width() ), FUNIT_TWIP );
392*b1cdbd2cSJim Jagielski 	nLastRightMargin = static_cast<long>(aRightMarginEdit.GetLast());
393*b1cdbd2cSJim Jagielski 	aTopMarginEdit.SetLast( aTopMarginEdit.Normalize(
394*b1cdbd2cSJim Jagielski 		aPrintOffset.Y() + aPrintSize.Height() ), FUNIT_TWIP );
395*b1cdbd2cSJim Jagielski 	nLastTopMargin = static_cast<long>(aTopMarginEdit.GetLast());
396*b1cdbd2cSJim Jagielski 	aBottomMarginEdit.SetLast( aBottomMarginEdit.Normalize(
397*b1cdbd2cSJim Jagielski 		aPrintOffset.Y() + aPrintSize.Height() ), FUNIT_TWIP );
398*b1cdbd2cSJim Jagielski 	nLastBottomMargin = static_cast<long>(aBottomMarginEdit.GetLast());
399*b1cdbd2cSJim Jagielski 
400*b1cdbd2cSJim Jagielski 	// #i4219# get DrawingLayer options
401*b1cdbd2cSJim Jagielski     const SvtOptionsDrawinglayer aDrawinglayerOpt;
402*b1cdbd2cSJim Jagielski 
403*b1cdbd2cSJim Jagielski 	// #i4219# take Maximum now from configuration (1/100th cm)
404*b1cdbd2cSJim Jagielski 	// was: 11900 -> 119 cm ;new value 3 meters -> 300 cm -> 30000
405*b1cdbd2cSJim Jagielski 	aPaperWidthEdit.SetMax(aPaperWidthEdit.Normalize(aDrawinglayerOpt.GetMaximumPaperWidth()), FUNIT_CM);
406*b1cdbd2cSJim Jagielski 	aPaperWidthEdit.SetLast(aPaperWidthEdit.Normalize(aDrawinglayerOpt.GetMaximumPaperWidth()), FUNIT_CM);
407*b1cdbd2cSJim Jagielski 	aPaperHeightEdit.SetMax(aPaperHeightEdit.Normalize(aDrawinglayerOpt.GetMaximumPaperHeight()), FUNIT_CM);
408*b1cdbd2cSJim Jagielski 	aPaperHeightEdit.SetLast(aPaperHeightEdit.Normalize(aDrawinglayerOpt.GetMaximumPaperHeight()), FUNIT_CM);
409*b1cdbd2cSJim Jagielski 
410*b1cdbd2cSJim Jagielski 	// #i4219# also for margins (1/100th cm). Was: 9999, keeping.
411*b1cdbd2cSJim Jagielski 	aLeftMarginEdit.SetMax(aDrawinglayerOpt.GetMaximumPaperLeftMargin());
412*b1cdbd2cSJim Jagielski 	aLeftMarginEdit.SetLast(aDrawinglayerOpt.GetMaximumPaperLeftMargin());
413*b1cdbd2cSJim Jagielski 	aRightMarginEdit.SetMax(aDrawinglayerOpt.GetMaximumPaperRightMargin());
414*b1cdbd2cSJim Jagielski 	aRightMarginEdit.SetLast(aDrawinglayerOpt.GetMaximumPaperRightMargin());
415*b1cdbd2cSJim Jagielski 	aTopMarginEdit.SetMax(aDrawinglayerOpt.GetMaximumPaperTopMargin());
416*b1cdbd2cSJim Jagielski 	aTopMarginEdit.SetLast(aDrawinglayerOpt.GetMaximumPaperTopMargin());
417*b1cdbd2cSJim Jagielski 	aBottomMarginEdit.SetMax(aDrawinglayerOpt.GetMaximumPaperBottomMargin());
418*b1cdbd2cSJim Jagielski 	aBottomMarginEdit.SetLast(aDrawinglayerOpt.GetMaximumPaperBottomMargin());
419*b1cdbd2cSJim Jagielski 
420*b1cdbd2cSJim Jagielski 	aPortraitBtn.SetAccessibleRelationMemberOf(&aOrientationFT);
421*b1cdbd2cSJim Jagielski 	aLandscapeBtn.SetAccessibleRelationMemberOf(&aOrientationFT);
422*b1cdbd2cSJim Jagielski }
423*b1cdbd2cSJim Jagielski 
424*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
425*b1cdbd2cSJim Jagielski 
~SvxPageDescPage()426*b1cdbd2cSJim Jagielski SvxPageDescPage::~SvxPageDescPage()
427*b1cdbd2cSJim Jagielski {
428*b1cdbd2cSJim Jagielski 	delete pImpl;
429*b1cdbd2cSJim Jagielski }
430*b1cdbd2cSJim Jagielski 
431*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
432*b1cdbd2cSJim Jagielski 
Init_Impl()433*b1cdbd2cSJim Jagielski void SvxPageDescPage::Init_Impl()
434*b1cdbd2cSJim Jagielski {
435*b1cdbd2cSJim Jagielski 	aLeftText = aLeftMarginLbl.GetText();
436*b1cdbd2cSJim Jagielski 	aRightText = aRightMarginLbl.GetText();
437*b1cdbd2cSJim Jagielski 
438*b1cdbd2cSJim Jagielski 		// Handler einstellen
439*b1cdbd2cSJim Jagielski 	aLayoutBox.SetSelectHdl( LINK( this, SvxPageDescPage, LayoutHdl_Impl ) );
440*b1cdbd2cSJim Jagielski     aPaperSizeBox.SetDropDownLineCount(10);
441*b1cdbd2cSJim Jagielski 
442*b1cdbd2cSJim Jagielski 	aPaperTrayBox.SetGetFocusHdl(
443*b1cdbd2cSJim Jagielski 		LINK( this, SvxPageDescPage, PaperBinHdl_Impl ) );
444*b1cdbd2cSJim Jagielski 	aPaperSizeBox.SetSelectHdl(
445*b1cdbd2cSJim Jagielski 		LINK( this, SvxPageDescPage, PaperSizeSelect_Impl ) );
446*b1cdbd2cSJim Jagielski 	aPaperWidthEdit.SetModifyHdl(
447*b1cdbd2cSJim Jagielski 		LINK( this, SvxPageDescPage, PaperSizeModify_Impl ) );
448*b1cdbd2cSJim Jagielski 	aPaperHeightEdit.SetModifyHdl(
449*b1cdbd2cSJim Jagielski 		LINK( this, SvxPageDescPage, PaperSizeModify_Impl ) );
450*b1cdbd2cSJim Jagielski 	aLandscapeBtn.SetClickHdl(
451*b1cdbd2cSJim Jagielski 		LINK( this, SvxPageDescPage, SwapOrientation_Impl ) );
452*b1cdbd2cSJim Jagielski 	aPortraitBtn.SetClickHdl(
453*b1cdbd2cSJim Jagielski 		LINK( this, SvxPageDescPage, SwapOrientation_Impl ) );
454*b1cdbd2cSJim Jagielski 
455*b1cdbd2cSJim Jagielski 	Link aLink = LINK( this, SvxPageDescPage, BorderModify_Impl );
456*b1cdbd2cSJim Jagielski 	aLeftMarginEdit.SetModifyHdl( aLink );
457*b1cdbd2cSJim Jagielski 	aRightMarginEdit.SetModifyHdl( aLink );
458*b1cdbd2cSJim Jagielski 	aTopMarginEdit.SetModifyHdl( aLink );
459*b1cdbd2cSJim Jagielski 	aBottomMarginEdit.SetModifyHdl( aLink );
460*b1cdbd2cSJim Jagielski 
461*b1cdbd2cSJim Jagielski 	aLink = LINK( this, SvxPageDescPage, RangeHdl_Impl );
462*b1cdbd2cSJim Jagielski 	aPaperWidthEdit.SetLoseFocusHdl( aLink );
463*b1cdbd2cSJim Jagielski 	aPaperHeightEdit.SetLoseFocusHdl( aLink );
464*b1cdbd2cSJim Jagielski 	aLeftMarginEdit.SetLoseFocusHdl( aLink );
465*b1cdbd2cSJim Jagielski 	aRightMarginEdit.SetLoseFocusHdl( aLink );
466*b1cdbd2cSJim Jagielski 	aTopMarginEdit.SetLoseFocusHdl( aLink );
467*b1cdbd2cSJim Jagielski 	aBottomMarginEdit.SetLoseFocusHdl( aLink );
468*b1cdbd2cSJim Jagielski 
469*b1cdbd2cSJim Jagielski 	aHorzBox.SetClickHdl( LINK( this, SvxPageDescPage, CenterHdl_Impl ) );
470*b1cdbd2cSJim Jagielski 	aVertBox.SetClickHdl( LINK( this, SvxPageDescPage, CenterHdl_Impl ) );
471*b1cdbd2cSJim Jagielski 
472*b1cdbd2cSJim Jagielski }
473*b1cdbd2cSJim Jagielski 
474*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
475*b1cdbd2cSJim Jagielski 
Reset(const SfxItemSet & rSet)476*b1cdbd2cSJim Jagielski void SvxPageDescPage::Reset( const SfxItemSet& rSet )
477*b1cdbd2cSJim Jagielski {
478*b1cdbd2cSJim Jagielski 	SfxItemPool* pPool = rSet.GetPool();
479*b1cdbd2cSJim Jagielski 	DBG_ASSERT( pPool, "Wo ist der Pool" );
480*b1cdbd2cSJim Jagielski 	SfxMapUnit eUnit = pPool->GetMetric( GetWhich( SID_ATTR_LRSPACE ) );
481*b1cdbd2cSJim Jagielski 
482*b1cdbd2cSJim Jagielski 	// R"ander (Links/Rechts) einstellen
483*b1cdbd2cSJim Jagielski 	const SfxPoolItem* pItem = GetItem( rSet, SID_ATTR_LRSPACE );
484*b1cdbd2cSJim Jagielski 
485*b1cdbd2cSJim Jagielski 	if ( pItem )
486*b1cdbd2cSJim Jagielski 	{
487*b1cdbd2cSJim Jagielski 		const SvxLRSpaceItem& rLRSpace = (const SvxLRSpaceItem&)*pItem;
488*b1cdbd2cSJim Jagielski 		SetMetricValue( aLeftMarginEdit, rLRSpace.GetLeft(), eUnit );
489*b1cdbd2cSJim Jagielski 		aBspWin.SetLeft(
490*b1cdbd2cSJim Jagielski 			(sal_uInt16)ConvertLong_Impl( (long)rLRSpace.GetLeft(), eUnit ) );
491*b1cdbd2cSJim Jagielski 		SetMetricValue( aRightMarginEdit, rLRSpace.GetRight(), eUnit );
492*b1cdbd2cSJim Jagielski 		aBspWin.SetRight(
493*b1cdbd2cSJim Jagielski 			(sal_uInt16)ConvertLong_Impl( (long)rLRSpace.GetRight(), eUnit ) );
494*b1cdbd2cSJim Jagielski 	}
495*b1cdbd2cSJim Jagielski 
496*b1cdbd2cSJim Jagielski 	// R"ander (Oben/Unten) einstellen
497*b1cdbd2cSJim Jagielski 	pItem = GetItem( rSet, SID_ATTR_ULSPACE );
498*b1cdbd2cSJim Jagielski 
499*b1cdbd2cSJim Jagielski 	if ( pItem )
500*b1cdbd2cSJim Jagielski 	{
501*b1cdbd2cSJim Jagielski 		const SvxULSpaceItem& rULSpace = (const SvxULSpaceItem&)*pItem;
502*b1cdbd2cSJim Jagielski 		SetMetricValue( aTopMarginEdit, rULSpace.GetUpper(), eUnit );
503*b1cdbd2cSJim Jagielski 		aBspWin.SetTop(
504*b1cdbd2cSJim Jagielski 			(sal_uInt16)ConvertLong_Impl( (long)rULSpace.GetUpper(), eUnit ) );
505*b1cdbd2cSJim Jagielski 		SetMetricValue( aBottomMarginEdit, rULSpace.GetLower(), eUnit );
506*b1cdbd2cSJim Jagielski 		aBspWin.SetBottom(
507*b1cdbd2cSJim Jagielski 			(sal_uInt16)ConvertLong_Impl( (long)rULSpace.GetLower(), eUnit ) );
508*b1cdbd2cSJim Jagielski 	}
509*b1cdbd2cSJim Jagielski 
510*b1cdbd2cSJim Jagielski     // allgemeine Seitendaten
511*b1cdbd2cSJim Jagielski 	SvxNumType eNumType = SVX_ARABIC;
512*b1cdbd2cSJim Jagielski     bLandscape = ( pImpl->mpDefPrinter->GetOrientation() == ORIENTATION_LANDSCAPE );
513*b1cdbd2cSJim Jagielski 	sal_uInt16 nUse = (sal_uInt16)SVX_PAGE_ALL;
514*b1cdbd2cSJim Jagielski 	pItem = GetItem( rSet, SID_ATTR_PAGE );
515*b1cdbd2cSJim Jagielski 
516*b1cdbd2cSJim Jagielski 	if ( pItem )
517*b1cdbd2cSJim Jagielski 	{
518*b1cdbd2cSJim Jagielski 		const SvxPageItem& rItem = (const SvxPageItem&)*pItem;
519*b1cdbd2cSJim Jagielski 		eNumType = rItem.GetNumType();
520*b1cdbd2cSJim Jagielski 		nUse = rItem.GetPageUsage();
521*b1cdbd2cSJim Jagielski 		bLandscape = rItem.IsLandscape();
522*b1cdbd2cSJim Jagielski 	}
523*b1cdbd2cSJim Jagielski 
524*b1cdbd2cSJim Jagielski 	// Ausrichtung
525*b1cdbd2cSJim Jagielski 	aLayoutBox.SelectEntryPos( ::PageUsageToPos_Impl( nUse ) );
526*b1cdbd2cSJim Jagielski 	aBspWin.SetUsage( nUse );
527*b1cdbd2cSJim Jagielski 	LayoutHdl_Impl( 0 );
528*b1cdbd2cSJim Jagielski 
529*b1cdbd2cSJim Jagielski 	// Numerierungsart der Seitenvorlage einstellen
530*b1cdbd2cSJim Jagielski 	aNumberFormatBox.SelectEntryPos( sal::static_int_cast< sal_uInt16 >(eNumType) );
531*b1cdbd2cSJim Jagielski 
532*b1cdbd2cSJim Jagielski 	// Aktueller Papierschacht
533*b1cdbd2cSJim Jagielski 	aPaperTrayBox.Clear();
534*b1cdbd2cSJim Jagielski 	sal_uInt8 nPaperBin = PAPERBIN_PRINTER_SETTINGS;
535*b1cdbd2cSJim Jagielski 	pItem = GetItem( rSet, SID_ATTR_PAGE_PAPERBIN );
536*b1cdbd2cSJim Jagielski 
537*b1cdbd2cSJim Jagielski 	if ( pItem )
538*b1cdbd2cSJim Jagielski 	{
539*b1cdbd2cSJim Jagielski 		nPaperBin = ( (const SvxPaperBinItem*)pItem )->GetValue();
540*b1cdbd2cSJim Jagielski 
541*b1cdbd2cSJim Jagielski         if ( nPaperBin >= pImpl->mpDefPrinter->GetPaperBinCount() )
542*b1cdbd2cSJim Jagielski 			nPaperBin = PAPERBIN_PRINTER_SETTINGS;
543*b1cdbd2cSJim Jagielski 	}
544*b1cdbd2cSJim Jagielski 
545*b1cdbd2cSJim Jagielski 	String aBinName;
546*b1cdbd2cSJim Jagielski 
547*b1cdbd2cSJim Jagielski 	if ( PAPERBIN_PRINTER_SETTINGS	== nPaperBin )
548*b1cdbd2cSJim Jagielski 		aBinName = EE_RESSTR( RID_SVXSTR_PAPERBIN_SETTINGS );
549*b1cdbd2cSJim Jagielski 	else
550*b1cdbd2cSJim Jagielski         aBinName = pImpl->mpDefPrinter->GetPaperBinName( (sal_uInt16)nPaperBin );
551*b1cdbd2cSJim Jagielski 
552*b1cdbd2cSJim Jagielski 	sal_uInt16 nEntryPos = aPaperTrayBox.InsertEntry( aBinName );
553*b1cdbd2cSJim Jagielski 	aPaperTrayBox.SetEntryData( nEntryPos, (void*)(sal_uLong)nPaperBin );
554*b1cdbd2cSJim Jagielski 	aPaperTrayBox.SelectEntry( aBinName );
555*b1cdbd2cSJim Jagielski 
556*b1cdbd2cSJim Jagielski 	// Size rausholen
557*b1cdbd2cSJim Jagielski     Size aPaperSize = SvxPaperInfo::GetPaperSize( pImpl->mpDefPrinter );
558*b1cdbd2cSJim Jagielski 	pItem = GetItem( rSet, SID_ATTR_PAGE_SIZE );
559*b1cdbd2cSJim Jagielski 
560*b1cdbd2cSJim Jagielski 	if ( pItem )
561*b1cdbd2cSJim Jagielski 		aPaperSize = ( (const SvxSizeItem*)pItem )->GetSize();
562*b1cdbd2cSJim Jagielski 
563*b1cdbd2cSJim Jagielski 	FASTBOOL bOrientationSupport =
564*b1cdbd2cSJim Jagielski         pImpl->mpDefPrinter->HasSupport( SUPPORT_SET_ORIENTATION );
565*b1cdbd2cSJim Jagielski #ifdef OS2
566*b1cdbd2cSJim Jagielski 	// unter OS/2 wird bei HasSupport() immer sal_True returned
567*b1cdbd2cSJim Jagielski 	// aber nur als Dummy, deshalb FALSE
568*b1cdbd2cSJim Jagielski 	bOrientationSupport = sal_False;
569*b1cdbd2cSJim Jagielski #endif
570*b1cdbd2cSJim Jagielski 
571*b1cdbd2cSJim Jagielski 	if ( !bOrientationSupport &&
572*b1cdbd2cSJim Jagielski 		 aPaperSize.Width() > aPaperSize.Height() )
573*b1cdbd2cSJim Jagielski 		bLandscape = sal_True;
574*b1cdbd2cSJim Jagielski 
575*b1cdbd2cSJim Jagielski 	aLandscapeBtn.Check( bLandscape );
576*b1cdbd2cSJim Jagielski 	aPortraitBtn.Check( !bLandscape );
577*b1cdbd2cSJim Jagielski 
578*b1cdbd2cSJim Jagielski 	aBspWin.SetSize( Size( ConvertLong_Impl( aPaperSize.Width(), eUnit ),
579*b1cdbd2cSJim Jagielski 						   ConvertLong_Impl( aPaperSize.Height(), eUnit ) ) );
580*b1cdbd2cSJim Jagielski 
581*b1cdbd2cSJim Jagielski 	aPaperSize = OutputDevice::LogicToLogic(aPaperSize, (MapUnit)eUnit, MAP_100TH_MM);
582*b1cdbd2cSJim Jagielski 	if ( bLandscape )
583*b1cdbd2cSJim Jagielski 		Swap( aPaperSize );
584*b1cdbd2cSJim Jagielski 
585*b1cdbd2cSJim Jagielski 	// Actual Paper Format
586*b1cdbd2cSJim Jagielski 	Paper ePaper = SvxPaperInfo::GetSvxPaper( aPaperSize, MAP_100TH_MM, sal_True );
587*b1cdbd2cSJim Jagielski 
588*b1cdbd2cSJim Jagielski 	if ( PAPER_USER != ePaper )
589*b1cdbd2cSJim Jagielski 		aPaperSize = SvxPaperInfo::GetPaperSize( ePaper, MAP_100TH_MM );
590*b1cdbd2cSJim Jagielski 
591*b1cdbd2cSJim Jagielski 	if ( bLandscape )
592*b1cdbd2cSJim Jagielski 		Swap( aPaperSize );
593*b1cdbd2cSJim Jagielski 
594*b1cdbd2cSJim Jagielski 	// Werte in die Edits eintragen
595*b1cdbd2cSJim Jagielski 	SetMetricValue( aPaperHeightEdit, aPaperSize.Height(), SFX_MAPUNIT_100TH_MM );
596*b1cdbd2cSJim Jagielski 	SetMetricValue( aPaperWidthEdit, aPaperSize.Width(), SFX_MAPUNIT_100TH_MM );
597*b1cdbd2cSJim Jagielski 	aPaperSizeBox.Clear();
598*b1cdbd2cSJim Jagielski 
599*b1cdbd2cSJim Jagielski 	sal_uInt16 nActPos = LISTBOX_ENTRY_NOTFOUND;
600*b1cdbd2cSJim Jagielski 	sal_uInt16 nAryId = RID_SVXSTRARY_PAPERSIZE_STD;
601*b1cdbd2cSJim Jagielski 
602*b1cdbd2cSJim Jagielski 	if ( ePaperStart != PAPER_A3 )
603*b1cdbd2cSJim Jagielski 		nAryId = RID_SVXSTRARY_PAPERSIZE_DRAW;
604*b1cdbd2cSJim Jagielski 	ResStringArray aPaperAry( CUI_RES( nAryId ) );
605*b1cdbd2cSJim Jagielski 	sal_uInt32 nCnt = aPaperAry.Count();
606*b1cdbd2cSJim Jagielski 
607*b1cdbd2cSJim Jagielski     sal_uInt16 nUserPos = LISTBOX_ENTRY_NOTFOUND;
608*b1cdbd2cSJim Jagielski 	for ( sal_uInt32 i = 0; i < nCnt; ++i )
609*b1cdbd2cSJim Jagielski 	{
610*b1cdbd2cSJim Jagielski 		String aStr = aPaperAry.GetString(i);
611*b1cdbd2cSJim Jagielski 		Paper eSize = (Paper)aPaperAry.GetValue(i);
612*b1cdbd2cSJim Jagielski 		sal_uInt16 nPos = aPaperSizeBox.InsertEntry( aStr );
613*b1cdbd2cSJim Jagielski 		aPaperSizeBox.SetEntryData( nPos, (void*)(sal_uLong)eSize );
614*b1cdbd2cSJim Jagielski 
615*b1cdbd2cSJim Jagielski 		if ( eSize == ePaper )
616*b1cdbd2cSJim Jagielski 			nActPos = nPos;
617*b1cdbd2cSJim Jagielski         if( eSize == PAPER_USER )
618*b1cdbd2cSJim Jagielski             nUserPos = nPos;
619*b1cdbd2cSJim Jagielski 	}
620*b1cdbd2cSJim Jagielski 	// preselect current paper format - #115915#: ePaper might not be in aPaperSizeBox so use PAPER_USER instead
621*b1cdbd2cSJim Jagielski     aPaperSizeBox.SelectEntryPos( nActPos != LISTBOX_ENTRY_NOTFOUND ? nActPos : nUserPos );
622*b1cdbd2cSJim Jagielski 
623*b1cdbd2cSJim Jagielski     // Applikationsspezifisch
624*b1cdbd2cSJim Jagielski 
625*b1cdbd2cSJim Jagielski 	switch ( eMode )
626*b1cdbd2cSJim Jagielski 	{
627*b1cdbd2cSJim Jagielski 		case SVX_PAGE_MODE_CENTER:
628*b1cdbd2cSJim Jagielski 		{
629*b1cdbd2cSJim Jagielski             aTblAlignFT.Show();
630*b1cdbd2cSJim Jagielski             aHorzBox.Show();
631*b1cdbd2cSJim Jagielski 			aVertBox.Show();
632*b1cdbd2cSJim Jagielski             DisableVerticalPageDir();
633*b1cdbd2cSJim Jagielski 
634*b1cdbd2cSJim Jagielski 			// Horizontale Ausrichtung
635*b1cdbd2cSJim Jagielski 			pItem = GetItem( rSet, SID_ATTR_PAGE_EXT1 );
636*b1cdbd2cSJim Jagielski 			aHorzBox.Check( pItem ? ( (const SfxBoolItem*)pItem )->GetValue()
637*b1cdbd2cSJim Jagielski 								  : sal_False );
638*b1cdbd2cSJim Jagielski 
639*b1cdbd2cSJim Jagielski 			// Vertikale Ausrichtung
640*b1cdbd2cSJim Jagielski 			pItem = GetItem( rSet, SID_ATTR_PAGE_EXT2 );
641*b1cdbd2cSJim Jagielski 			aVertBox.Check( pItem ? ( (const SfxBoolItem*)pItem )->GetValue()
642*b1cdbd2cSJim Jagielski 								  : sal_False );
643*b1cdbd2cSJim Jagielski 
644*b1cdbd2cSJim Jagielski 			// Beispiel-Fenster auf Tabelle setzen
645*b1cdbd2cSJim Jagielski 			aBspWin.SetTable( sal_True );
646*b1cdbd2cSJim Jagielski 			aBspWin.SetHorz( aHorzBox.IsChecked() );
647*b1cdbd2cSJim Jagielski 			aBspWin.SetVert( aVertBox.IsChecked() );
648*b1cdbd2cSJim Jagielski 
649*b1cdbd2cSJim Jagielski 			break;
650*b1cdbd2cSJim Jagielski 		}
651*b1cdbd2cSJim Jagielski 
652*b1cdbd2cSJim Jagielski 		case SVX_PAGE_MODE_PRESENTATION:
653*b1cdbd2cSJim Jagielski 		{
654*b1cdbd2cSJim Jagielski             DisableVerticalPageDir();
655*b1cdbd2cSJim Jagielski 			aAdaptBox.Show();
656*b1cdbd2cSJim Jagielski 			pItem = GetItem( rSet, SID_ATTR_PAGE_EXT1 );
657*b1cdbd2cSJim Jagielski 			aAdaptBox.Check( pItem ?
658*b1cdbd2cSJim Jagielski 				( (const SfxBoolItem*)pItem )->GetValue() : sal_False );
659*b1cdbd2cSJim Jagielski 
660*b1cdbd2cSJim Jagielski 			//!!! hidden, weil von StarDraw nicht implementiert
661*b1cdbd2cSJim Jagielski 			aLayoutBox.Hide();
662*b1cdbd2cSJim Jagielski 			aPageText.Hide();
663*b1cdbd2cSJim Jagielski 
664*b1cdbd2cSJim Jagielski 			break;
665*b1cdbd2cSJim Jagielski 		}
666*b1cdbd2cSJim Jagielski         default: ;//prevent warning
667*b1cdbd2cSJim Jagielski 	}
668*b1cdbd2cSJim Jagielski 
669*b1cdbd2cSJim Jagielski 
670*b1cdbd2cSJim Jagielski 	// im Beispiel Hintergrund und Umrandung anzeigen
671*b1cdbd2cSJim Jagielski 	ResetBackground_Impl( rSet );
672*b1cdbd2cSJim Jagielski //!	UpdateExample_Impl();
673*b1cdbd2cSJim Jagielski 	RangeHdl_Impl( 0 );
674*b1cdbd2cSJim Jagielski 
675*b1cdbd2cSJim Jagielski 	// Header Footer anzeigen
676*b1cdbd2cSJim Jagielski 	InitHeadFoot_Impl( rSet );
677*b1cdbd2cSJim Jagielski 
678*b1cdbd2cSJim Jagielski 	// R"ander auf Hoch/Quer updaten, dann Beispiel updaten
679*b1cdbd2cSJim Jagielski 	bBorderModified = sal_False;
680*b1cdbd2cSJim Jagielski 	SwapFirstValues_Impl( sal_False );
681*b1cdbd2cSJim Jagielski 	UpdateExample_Impl();
682*b1cdbd2cSJim Jagielski 
683*b1cdbd2cSJim Jagielski 	// Alte Werte sichern
684*b1cdbd2cSJim Jagielski 	aLeftMarginEdit.SaveValue();
685*b1cdbd2cSJim Jagielski 	aRightMarginEdit.SaveValue();
686*b1cdbd2cSJim Jagielski 	aTopMarginEdit.SaveValue();
687*b1cdbd2cSJim Jagielski 	aBottomMarginEdit.SaveValue();
688*b1cdbd2cSJim Jagielski 	aLayoutBox.SaveValue();
689*b1cdbd2cSJim Jagielski 	aNumberFormatBox.SaveValue();
690*b1cdbd2cSJim Jagielski 	aPaperSizeBox.SaveValue();
691*b1cdbd2cSJim Jagielski 	aPaperWidthEdit.SaveValue();
692*b1cdbd2cSJim Jagielski 	aPaperHeightEdit.SaveValue();
693*b1cdbd2cSJim Jagielski 	aPortraitBtn.SaveValue();
694*b1cdbd2cSJim Jagielski 	aLandscapeBtn.SaveValue();
695*b1cdbd2cSJim Jagielski 	aPaperTrayBox.SaveValue();
696*b1cdbd2cSJim Jagielski 	aVertBox.SaveValue();
697*b1cdbd2cSJim Jagielski 	aHorzBox.SaveValue();
698*b1cdbd2cSJim Jagielski     aAdaptBox.SaveValue();
699*b1cdbd2cSJim Jagielski 
700*b1cdbd2cSJim Jagielski 	CheckMarginEdits( true );
701*b1cdbd2cSJim Jagielski 
702*b1cdbd2cSJim Jagielski 	// Registerhaltigkeit
703*b1cdbd2cSJim Jagielski 	if(SFX_ITEM_SET == rSet.GetItemState(SID_SWREGISTER_MODE))
704*b1cdbd2cSJim Jagielski 	{
705*b1cdbd2cSJim Jagielski 		aRegisterCB.Check(((const SfxBoolItem&)rSet.Get(
706*b1cdbd2cSJim Jagielski 								SID_SWREGISTER_MODE)).GetValue());
707*b1cdbd2cSJim Jagielski 		aRegisterCB.SaveValue();
708*b1cdbd2cSJim Jagielski 		RegisterModify(&aRegisterCB);
709*b1cdbd2cSJim Jagielski 	}
710*b1cdbd2cSJim Jagielski 	if(SFX_ITEM_SET == rSet.GetItemState(SID_SWREGISTER_COLLECTION))
711*b1cdbd2cSJim Jagielski 	{
712*b1cdbd2cSJim Jagielski 		aRegisterLB.SelectEntry(
713*b1cdbd2cSJim Jagielski 				((const SfxStringItem&)rSet.Get(SID_SWREGISTER_COLLECTION)).GetValue());
714*b1cdbd2cSJim Jagielski 		aRegisterLB.SaveValue();
715*b1cdbd2cSJim Jagielski 	}
716*b1cdbd2cSJim Jagielski 
717*b1cdbd2cSJim Jagielski 	SfxItemState eState = rSet.GetItemState( GetWhich( SID_ATTR_FRAMEDIRECTION ),
718*b1cdbd2cSJim Jagielski 												sal_True, &pItem );
719*b1cdbd2cSJim Jagielski 	if( SFX_ITEM_UNKNOWN != eState )
720*b1cdbd2cSJim Jagielski 	{
721*b1cdbd2cSJim Jagielski         sal_uInt32 nVal  = SFX_ITEM_SET == eState
722*b1cdbd2cSJim Jagielski 								? ((SvxFrameDirectionItem*)pItem)->GetValue()
723*b1cdbd2cSJim Jagielski                                 : 0;
724*b1cdbd2cSJim Jagielski         aTextFlowBox.SelectEntryValue( static_cast< SvxFrameDirection >( nVal ) );
725*b1cdbd2cSJim Jagielski 		aTextFlowBox.SaveValue();
726*b1cdbd2cSJim Jagielski         aBspWin.SetFrameDirection(nVal);
727*b1cdbd2cSJim Jagielski 	}
728*b1cdbd2cSJim Jagielski }
729*b1cdbd2cSJim Jagielski 
730*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
731*b1cdbd2cSJim Jagielski 
FillUserData()732*b1cdbd2cSJim Jagielski void SvxPageDescPage::FillUserData()
733*b1cdbd2cSJim Jagielski {
734*b1cdbd2cSJim Jagielski 	if ( SVX_PAGE_MODE_PRESENTATION == eMode )
735*b1cdbd2cSJim Jagielski 		SetUserData( UniString::CreateFromInt32( (sal_Int32)aAdaptBox.IsChecked() ) );
736*b1cdbd2cSJim Jagielski }
737*b1cdbd2cSJim Jagielski 
738*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
739*b1cdbd2cSJim Jagielski 
FillItemSet(SfxItemSet & rSet)740*b1cdbd2cSJim Jagielski sal_Bool SvxPageDescPage::FillItemSet( SfxItemSet& rSet )
741*b1cdbd2cSJim Jagielski {
742*b1cdbd2cSJim Jagielski 	sal_Bool bModified = sal_False;
743*b1cdbd2cSJim Jagielski 	const SfxItemSet& rOldSet = GetItemSet();
744*b1cdbd2cSJim Jagielski 	SfxItemPool* pPool = rOldSet.GetPool();
745*b1cdbd2cSJim Jagielski 	DBG_ASSERT( pPool, "Wo ist der Pool" );
746*b1cdbd2cSJim Jagielski 	sal_uInt16 nWhich = GetWhich( SID_ATTR_LRSPACE );
747*b1cdbd2cSJim Jagielski 	SfxMapUnit eUnit = pPool->GetMetric( nWhich );
748*b1cdbd2cSJim Jagielski 	const SfxPoolItem* pOld = 0;
749*b1cdbd2cSJim Jagielski 
750*b1cdbd2cSJim Jagielski 	// alten linken und rechten Rand kopieren
751*b1cdbd2cSJim Jagielski 	SvxLRSpaceItem aMargin( (const SvxLRSpaceItem&)rOldSet.Get( nWhich ) );
752*b1cdbd2cSJim Jagielski 
753*b1cdbd2cSJim Jagielski 	// alten  oberen und unteren Rand kopieren
754*b1cdbd2cSJim Jagielski 	nWhich = GetWhich( SID_ATTR_ULSPACE );
755*b1cdbd2cSJim Jagielski 	SvxULSpaceItem aTopMargin( (const SvxULSpaceItem&)rOldSet.Get( nWhich ) );
756*b1cdbd2cSJim Jagielski 
757*b1cdbd2cSJim Jagielski 	if ( aLeftMarginEdit.GetText() != aLeftMarginEdit.GetSavedValue() )
758*b1cdbd2cSJim Jagielski 	{
759*b1cdbd2cSJim Jagielski 		aMargin.SetLeft( (sal_uInt16)GetCoreValue( aLeftMarginEdit, eUnit ) );
760*b1cdbd2cSJim Jagielski 		bModified |= sal_True;
761*b1cdbd2cSJim Jagielski 	}
762*b1cdbd2cSJim Jagielski 
763*b1cdbd2cSJim Jagielski 	if ( aRightMarginEdit.GetText() != aRightMarginEdit.GetSavedValue() )
764*b1cdbd2cSJim Jagielski 	{
765*b1cdbd2cSJim Jagielski 		aMargin.SetRight( (sal_uInt16)GetCoreValue( aRightMarginEdit, eUnit ) );
766*b1cdbd2cSJim Jagielski 		bModified |= sal_True;
767*b1cdbd2cSJim Jagielski 	}
768*b1cdbd2cSJim Jagielski 
769*b1cdbd2cSJim Jagielski 	// Linken und rechten Rand setzen
770*b1cdbd2cSJim Jagielski 	if ( bModified )
771*b1cdbd2cSJim Jagielski 	{
772*b1cdbd2cSJim Jagielski 		pOld = GetOldItem( rSet, SID_ATTR_LRSPACE );
773*b1cdbd2cSJim Jagielski 
774*b1cdbd2cSJim Jagielski 		if ( !pOld || !( *(const SvxLRSpaceItem*)pOld == aMargin ) )
775*b1cdbd2cSJim Jagielski 			rSet.Put( aMargin );
776*b1cdbd2cSJim Jagielski 		else
777*b1cdbd2cSJim Jagielski 			bModified = sal_False;
778*b1cdbd2cSJim Jagielski 	}
779*b1cdbd2cSJim Jagielski 
780*b1cdbd2cSJim Jagielski 	sal_Bool bMod = sal_False;
781*b1cdbd2cSJim Jagielski 
782*b1cdbd2cSJim Jagielski 	if ( aTopMarginEdit.GetText() != aTopMarginEdit.GetSavedValue() )
783*b1cdbd2cSJim Jagielski 	{
784*b1cdbd2cSJim Jagielski 		aTopMargin.SetUpper( (sal_uInt16)GetCoreValue( aTopMarginEdit, eUnit ) );
785*b1cdbd2cSJim Jagielski 		bMod |= sal_True;
786*b1cdbd2cSJim Jagielski 	}
787*b1cdbd2cSJim Jagielski 
788*b1cdbd2cSJim Jagielski 	if ( aBottomMarginEdit.GetText() != aBottomMarginEdit.GetSavedValue() )
789*b1cdbd2cSJim Jagielski 	{
790*b1cdbd2cSJim Jagielski 		aTopMargin.SetLower( (sal_uInt16)GetCoreValue( aBottomMarginEdit, eUnit ) );
791*b1cdbd2cSJim Jagielski 		bMod |= sal_True;
792*b1cdbd2cSJim Jagielski 	}
793*b1cdbd2cSJim Jagielski 
794*b1cdbd2cSJim Jagielski 	// unteren oberen Rand setzen
795*b1cdbd2cSJim Jagielski 	//
796*b1cdbd2cSJim Jagielski 	if ( bMod )
797*b1cdbd2cSJim Jagielski 	{
798*b1cdbd2cSJim Jagielski 		pOld = GetOldItem( rSet, SID_ATTR_ULSPACE );
799*b1cdbd2cSJim Jagielski 
800*b1cdbd2cSJim Jagielski 		if ( !pOld || !( *(const SvxULSpaceItem*)pOld == aTopMargin ) )
801*b1cdbd2cSJim Jagielski 		{
802*b1cdbd2cSJim Jagielski 			bModified |= sal_True;
803*b1cdbd2cSJim Jagielski 			rSet.Put( aTopMargin );
804*b1cdbd2cSJim Jagielski 		}
805*b1cdbd2cSJim Jagielski 	}
806*b1cdbd2cSJim Jagielski 
807*b1cdbd2cSJim Jagielski 	// Druckerschacht
808*b1cdbd2cSJim Jagielski 	nWhich = GetWhich( SID_ATTR_PAGE_PAPERBIN );
809*b1cdbd2cSJim Jagielski 	sal_uInt16 nPos = aPaperTrayBox.GetSelectEntryPos();
810*b1cdbd2cSJim Jagielski 	sal_uInt16 nBin = (sal_uInt16)(sal_uLong)aPaperTrayBox.GetEntryData( nPos );
811*b1cdbd2cSJim Jagielski 	pOld = GetOldItem( rSet, SID_ATTR_PAGE_PAPERBIN );
812*b1cdbd2cSJim Jagielski 
813*b1cdbd2cSJim Jagielski 	if ( !pOld || ( (const SvxPaperBinItem*)pOld )->GetValue() != nBin )
814*b1cdbd2cSJim Jagielski 	{
815*b1cdbd2cSJim Jagielski 		rSet.Put( SvxPaperBinItem( nWhich, (sal_uInt8)nBin ) );
816*b1cdbd2cSJim Jagielski 		bModified |= sal_True;
817*b1cdbd2cSJim Jagielski 	}
818*b1cdbd2cSJim Jagielski 
819*b1cdbd2cSJim Jagielski 	nPos = aPaperSizeBox.GetSelectEntryPos();
820*b1cdbd2cSJim Jagielski 	Paper ePaper = (Paper)(sal_uLong)aPaperSizeBox.GetEntryData( nPos );
821*b1cdbd2cSJim Jagielski 	const sal_uInt16 nOld = aPaperSizeBox.GetSavedValue();
822*b1cdbd2cSJim Jagielski 	sal_Bool bChecked = aLandscapeBtn.IsChecked();
823*b1cdbd2cSJim Jagielski 
824*b1cdbd2cSJim Jagielski 	if ( PAPER_USER == ePaper )
825*b1cdbd2cSJim Jagielski 	{
826*b1cdbd2cSJim Jagielski 		if ( nOld != nPos						||
827*b1cdbd2cSJim Jagielski 			 aPaperWidthEdit.IsValueModified()  ||
828*b1cdbd2cSJim Jagielski 			 aPaperHeightEdit.IsValueModified() ||
829*b1cdbd2cSJim Jagielski 			 bChecked != aLandscapeBtn.GetSavedValue() )
830*b1cdbd2cSJim Jagielski 		{
831*b1cdbd2cSJim Jagielski 			Size aSize( GetCoreValue( aPaperWidthEdit, eUnit ),
832*b1cdbd2cSJim Jagielski 						GetCoreValue( aPaperHeightEdit, eUnit ) );
833*b1cdbd2cSJim Jagielski 			pOld = GetOldItem( rSet, SID_ATTR_PAGE_SIZE );
834*b1cdbd2cSJim Jagielski 
835*b1cdbd2cSJim Jagielski 			if ( !pOld || ( (const SvxSizeItem*)pOld )->GetSize() != aSize )
836*b1cdbd2cSJim Jagielski 			{
837*b1cdbd2cSJim Jagielski 				rSet.Put( SvxSizeItem( GetWhich(SID_ATTR_PAGE_SIZE), aSize ) );
838*b1cdbd2cSJim Jagielski 				bModified |= sal_True;
839*b1cdbd2cSJim Jagielski 			}
840*b1cdbd2cSJim Jagielski 		}
841*b1cdbd2cSJim Jagielski 	}
842*b1cdbd2cSJim Jagielski 	else
843*b1cdbd2cSJim Jagielski 	{
844*b1cdbd2cSJim Jagielski 		if ( nOld != nPos || bChecked != aLandscapeBtn.GetSavedValue() )
845*b1cdbd2cSJim Jagielski 		{
846*b1cdbd2cSJim Jagielski 			Size aSize( SvxPaperInfo::GetPaperSize( ePaper, (MapUnit)eUnit ) );
847*b1cdbd2cSJim Jagielski 
848*b1cdbd2cSJim Jagielski 			if ( bChecked )
849*b1cdbd2cSJim Jagielski 				Swap( aSize );
850*b1cdbd2cSJim Jagielski 
851*b1cdbd2cSJim Jagielski 			pOld = GetOldItem( rSet, SID_ATTR_PAGE_SIZE );
852*b1cdbd2cSJim Jagielski 
853*b1cdbd2cSJim Jagielski 			if ( !pOld || ( (const SvxSizeItem*)pOld )->GetSize() != aSize )
854*b1cdbd2cSJim Jagielski 			{
855*b1cdbd2cSJim Jagielski 				rSet.Put( SvxSizeItem( GetWhich(SID_ATTR_PAGE_SIZE), aSize ) );
856*b1cdbd2cSJim Jagielski 				bModified |= sal_True;
857*b1cdbd2cSJim Jagielski 			}
858*b1cdbd2cSJim Jagielski 		}
859*b1cdbd2cSJim Jagielski 	}
860*b1cdbd2cSJim Jagielski 
861*b1cdbd2cSJim Jagielski 	// sonstiges Zeug der Page
862*b1cdbd2cSJim Jagielski 	nWhich = GetWhich( SID_ATTR_PAGE );
863*b1cdbd2cSJim Jagielski 	SvxPageItem aPage( (const SvxPageItem&)rOldSet.Get( nWhich ) );
864*b1cdbd2cSJim Jagielski 	bMod = 	aLayoutBox.GetSelectEntryPos()  != aLayoutBox.GetSavedValue();
865*b1cdbd2cSJim Jagielski 
866*b1cdbd2cSJim Jagielski 	if ( bMod )
867*b1cdbd2cSJim Jagielski 		aPage.SetPageUsage(
868*b1cdbd2cSJim Jagielski 			::PosToPageUsage_Impl( aLayoutBox.GetSelectEntryPos() ) );
869*b1cdbd2cSJim Jagielski 
870*b1cdbd2cSJim Jagielski 	if ( bChecked != aLandscapeBtn.GetSavedValue() )
871*b1cdbd2cSJim Jagielski 	{
872*b1cdbd2cSJim Jagielski 		aPage.SetLandscape(bChecked);
873*b1cdbd2cSJim Jagielski 		bMod |= sal_True;
874*b1cdbd2cSJim Jagielski 	}
875*b1cdbd2cSJim Jagielski 
876*b1cdbd2cSJim Jagielski 	// Einstellen der Numerierungsart der Seite
877*b1cdbd2cSJim Jagielski 	nPos = aNumberFormatBox.GetSelectEntryPos();
878*b1cdbd2cSJim Jagielski 
879*b1cdbd2cSJim Jagielski 	if ( nPos != aNumberFormatBox.GetSavedValue() )
880*b1cdbd2cSJim Jagielski 	{
881*b1cdbd2cSJim Jagielski 		aPage.SetNumType( (SvxNumType)nPos );
882*b1cdbd2cSJim Jagielski 		bMod |= sal_True;
883*b1cdbd2cSJim Jagielski 	}
884*b1cdbd2cSJim Jagielski 
885*b1cdbd2cSJim Jagielski 	if ( bMod )
886*b1cdbd2cSJim Jagielski 	{
887*b1cdbd2cSJim Jagielski 		pOld = GetOldItem( rSet, SID_ATTR_PAGE );
888*b1cdbd2cSJim Jagielski 
889*b1cdbd2cSJim Jagielski 		if ( !pOld || !( *(const SvxPageItem*)pOld == aPage ) )
890*b1cdbd2cSJim Jagielski 		{
891*b1cdbd2cSJim Jagielski 			rSet.Put( aPage );
892*b1cdbd2cSJim Jagielski 			bModified |= sal_True;
893*b1cdbd2cSJim Jagielski 		}
894*b1cdbd2cSJim Jagielski 	}
895*b1cdbd2cSJim Jagielski 	else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich ) )
896*b1cdbd2cSJim Jagielski 		rSet.ClearItem( nWhich );
897*b1cdbd2cSJim Jagielski 	else
898*b1cdbd2cSJim Jagielski 		rSet.Put( rOldSet.Get( nWhich ) );
899*b1cdbd2cSJim Jagielski 
900*b1cdbd2cSJim Jagielski 	// Modispezifische Controls auswerten
901*b1cdbd2cSJim Jagielski 
902*b1cdbd2cSJim Jagielski 	switch ( eMode )
903*b1cdbd2cSJim Jagielski 	{
904*b1cdbd2cSJim Jagielski 		case SVX_PAGE_MODE_CENTER:
905*b1cdbd2cSJim Jagielski 		{
906*b1cdbd2cSJim Jagielski 			if ( aHorzBox.IsChecked() != aHorzBox.GetSavedValue() )
907*b1cdbd2cSJim Jagielski 			{
908*b1cdbd2cSJim Jagielski 				SfxBoolItem aHorz( GetWhich( SID_ATTR_PAGE_EXT1 ),
909*b1cdbd2cSJim Jagielski 								   aHorzBox.IsChecked() );
910*b1cdbd2cSJim Jagielski 				rSet.Put( aHorz );
911*b1cdbd2cSJim Jagielski 				bModified |= sal_True;
912*b1cdbd2cSJim Jagielski 			}
913*b1cdbd2cSJim Jagielski 
914*b1cdbd2cSJim Jagielski 			if ( aVertBox.IsChecked() != aVertBox.GetSavedValue() )
915*b1cdbd2cSJim Jagielski 			{
916*b1cdbd2cSJim Jagielski 				SfxBoolItem aVert( GetWhich( SID_ATTR_PAGE_EXT2 ),
917*b1cdbd2cSJim Jagielski 								   aVertBox.IsChecked() );
918*b1cdbd2cSJim Jagielski 				rSet.Put( aVert );
919*b1cdbd2cSJim Jagielski 				bModified |= sal_True;
920*b1cdbd2cSJim Jagielski 			}
921*b1cdbd2cSJim Jagielski 			break;
922*b1cdbd2cSJim Jagielski 		}
923*b1cdbd2cSJim Jagielski 
924*b1cdbd2cSJim Jagielski 		case SVX_PAGE_MODE_PRESENTATION:
925*b1cdbd2cSJim Jagielski 		{
926*b1cdbd2cSJim Jagielski 			// immer putten, damit Draw das auswerten kann
927*b1cdbd2cSJim Jagielski 			rSet.Put( SfxBoolItem( GetWhich( SID_ATTR_PAGE_EXT1 ),
928*b1cdbd2cSJim Jagielski 					  aAdaptBox.IsChecked() ) );
929*b1cdbd2cSJim Jagielski 			bModified |= sal_True;
930*b1cdbd2cSJim Jagielski 			break;
931*b1cdbd2cSJim Jagielski 		}
932*b1cdbd2cSJim Jagielski         default: ;//prevent warning
933*b1cdbd2cSJim Jagielski 
934*b1cdbd2cSJim Jagielski 	}
935*b1cdbd2cSJim Jagielski 
936*b1cdbd2cSJim Jagielski 	if(aRegisterCB.IsVisible() &&
937*b1cdbd2cSJim Jagielski 		(aRegisterCB.IsChecked() || aRegisterCB.GetSavedValue() != aRegisterCB.IsChecked()))
938*b1cdbd2cSJim Jagielski 	{
939*b1cdbd2cSJim Jagielski 		const SfxBoolItem& rRegItem = (const SfxBoolItem&)rOldSet.Get(SID_SWREGISTER_MODE);
940*b1cdbd2cSJim Jagielski 		SfxBoolItem* pRegItem = (SfxBoolItem*)rRegItem.Clone();
941*b1cdbd2cSJim Jagielski 		sal_Bool bCheck = aRegisterCB.IsChecked();
942*b1cdbd2cSJim Jagielski 		pRegItem->SetValue(bCheck);
943*b1cdbd2cSJim Jagielski 		rSet.Put(*pRegItem);
944*b1cdbd2cSJim Jagielski 		bModified |= sal_True;
945*b1cdbd2cSJim Jagielski 		if(bCheck)
946*b1cdbd2cSJim Jagielski 		{
947*b1cdbd2cSJim Jagielski 			bModified |= sal_True;
948*b1cdbd2cSJim Jagielski 			rSet.Put(SfxStringItem(SID_SWREGISTER_COLLECTION,
949*b1cdbd2cSJim Jagielski 							aRegisterLB.GetSelectEntry()));
950*b1cdbd2cSJim Jagielski 		}
951*b1cdbd2cSJim Jagielski 		delete pRegItem;
952*b1cdbd2cSJim Jagielski 	}
953*b1cdbd2cSJim Jagielski 
954*b1cdbd2cSJim Jagielski     SvxFrameDirection eDirection = aTextFlowBox.GetSelectEntryValue();
955*b1cdbd2cSJim Jagielski     if( aTextFlowBox.IsVisible() && (eDirection != aTextFlowBox.GetSavedValue()) )
956*b1cdbd2cSJim Jagielski 	{
957*b1cdbd2cSJim Jagielski         rSet.Put( SvxFrameDirectionItem( eDirection, GetWhich( SID_ATTR_FRAMEDIRECTION ) ) );
958*b1cdbd2cSJim Jagielski 		bModified = sal_True;
959*b1cdbd2cSJim Jagielski 	}
960*b1cdbd2cSJim Jagielski 
961*b1cdbd2cSJim Jagielski 	return bModified;
962*b1cdbd2cSJim Jagielski }
963*b1cdbd2cSJim Jagielski 
964*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
965*b1cdbd2cSJim Jagielski 
IMPL_LINK(SvxPageDescPage,LayoutHdl_Impl,ListBox *,EMPTYARG)966*b1cdbd2cSJim Jagielski IMPL_LINK( SvxPageDescPage, LayoutHdl_Impl, ListBox *, EMPTYARG )
967*b1cdbd2cSJim Jagielski {
968*b1cdbd2cSJim Jagielski 	// innen au\sen umschalten
969*b1cdbd2cSJim Jagielski 	const sal_uInt16 nPos = PosToPageUsage_Impl( aLayoutBox.GetSelectEntryPos() );
970*b1cdbd2cSJim Jagielski 
971*b1cdbd2cSJim Jagielski 	if ( nPos == SVX_PAGE_MIRROR )
972*b1cdbd2cSJim Jagielski 	{
973*b1cdbd2cSJim Jagielski 		if ( aLeftMarginLbl.GetText() != aInsideText )
974*b1cdbd2cSJim Jagielski 			aLeftMarginLbl.SetText( aInsideText );
975*b1cdbd2cSJim Jagielski 
976*b1cdbd2cSJim Jagielski 		if ( aRightMarginLbl.GetText() != aOutsideText )
977*b1cdbd2cSJim Jagielski 			aRightMarginLbl.SetText( aOutsideText );
978*b1cdbd2cSJim Jagielski 	}
979*b1cdbd2cSJim Jagielski 	else
980*b1cdbd2cSJim Jagielski 	{
981*b1cdbd2cSJim Jagielski 		if ( aLeftMarginLbl.GetText() != aLeftText )
982*b1cdbd2cSJim Jagielski 			aLeftMarginLbl.SetText( aLeftText );
983*b1cdbd2cSJim Jagielski 
984*b1cdbd2cSJim Jagielski 		if ( aRightMarginLbl.GetText() != aRightText )
985*b1cdbd2cSJim Jagielski 			aRightMarginLbl.SetText( aRightText );
986*b1cdbd2cSJim Jagielski 	}
987*b1cdbd2cSJim Jagielski     UpdateExample_Impl( true );
988*b1cdbd2cSJim Jagielski 	return 0;
989*b1cdbd2cSJim Jagielski }
990*b1cdbd2cSJim Jagielski 
991*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
992*b1cdbd2cSJim Jagielski 
IMPL_LINK(SvxPageDescPage,PaperBinHdl_Impl,ListBox *,EMPTYARG)993*b1cdbd2cSJim Jagielski IMPL_LINK( SvxPageDescPage, PaperBinHdl_Impl, ListBox *, EMPTYARG )
994*b1cdbd2cSJim Jagielski {
995*b1cdbd2cSJim Jagielski 	if ( aPaperTrayBox.GetEntryCount() > 1 )
996*b1cdbd2cSJim Jagielski 		// schon gef"ullt
997*b1cdbd2cSJim Jagielski 		return 0;
998*b1cdbd2cSJim Jagielski 
999*b1cdbd2cSJim Jagielski 	// Schacht-Box initialisieren
1000*b1cdbd2cSJim Jagielski 	String aOldName = aPaperTrayBox.GetSelectEntry();
1001*b1cdbd2cSJim Jagielski 	aPaperTrayBox.SetUpdateMode( sal_False );
1002*b1cdbd2cSJim Jagielski 	aPaperTrayBox.Clear();
1003*b1cdbd2cSJim Jagielski 	sal_uInt16 nEntryPos = aPaperTrayBox.InsertEntry(
1004*b1cdbd2cSJim Jagielski 		EE_RESSTR( RID_SVXSTR_PAPERBIN_SETTINGS ) );
1005*b1cdbd2cSJim Jagielski 	aPaperTrayBox.SetEntryData( nEntryPos,
1006*b1cdbd2cSJim Jagielski 		(void*)(sal_uLong)PAPERBIN_PRINTER_SETTINGS );
1007*b1cdbd2cSJim Jagielski 	String aPaperBin( EditResId( RID_SVXSTR_PAPERBIN ) );
1008*b1cdbd2cSJim Jagielski     sal_uInt16 nBinCount = pImpl->mpDefPrinter->GetPaperBinCount();
1009*b1cdbd2cSJim Jagielski 
1010*b1cdbd2cSJim Jagielski 	for ( sal_uInt16 i = 0; i < nBinCount; ++i )
1011*b1cdbd2cSJim Jagielski 	{
1012*b1cdbd2cSJim Jagielski         String aName = pImpl->mpDefPrinter->GetPaperBinName(i);
1013*b1cdbd2cSJim Jagielski 
1014*b1cdbd2cSJim Jagielski 		if ( !aName.Len() )
1015*b1cdbd2cSJim Jagielski 		{
1016*b1cdbd2cSJim Jagielski 			aName = aPaperBin;
1017*b1cdbd2cSJim Jagielski 			aName.Append( sal_Unicode(' ') );
1018*b1cdbd2cSJim Jagielski 			aName.Append( UniString::CreateFromInt32( i+1 ) );
1019*b1cdbd2cSJim Jagielski 		}
1020*b1cdbd2cSJim Jagielski 		nEntryPos = aPaperTrayBox.InsertEntry( aName );
1021*b1cdbd2cSJim Jagielski 		aPaperTrayBox.SetEntryData( nEntryPos, (void*)(sal_uLong)i );
1022*b1cdbd2cSJim Jagielski 	}
1023*b1cdbd2cSJim Jagielski 	aPaperTrayBox.SelectEntry( aOldName );
1024*b1cdbd2cSJim Jagielski 	aPaperTrayBox.SetUpdateMode( sal_True );
1025*b1cdbd2cSJim Jagielski 
1026*b1cdbd2cSJim Jagielski     return 0;
1027*b1cdbd2cSJim Jagielski }
1028*b1cdbd2cSJim Jagielski 
1029*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1030*b1cdbd2cSJim Jagielski 
IMPL_LINK(SvxPageDescPage,PaperSizeSelect_Impl,ListBox *,pBox)1031*b1cdbd2cSJim Jagielski IMPL_LINK( SvxPageDescPage, PaperSizeSelect_Impl, ListBox *, pBox )
1032*b1cdbd2cSJim Jagielski {
1033*b1cdbd2cSJim Jagielski 	const sal_uInt16 nPos = pBox->GetSelectEntryPos();
1034*b1cdbd2cSJim Jagielski 	Paper ePaper = (Paper)(sal_uLong)aPaperSizeBox.GetEntryData( nPos );
1035*b1cdbd2cSJim Jagielski 
1036*b1cdbd2cSJim Jagielski 	if ( ePaper != PAPER_USER )
1037*b1cdbd2cSJim Jagielski 	{
1038*b1cdbd2cSJim Jagielski 		Size aSize( SvxPaperInfo::GetPaperSize( ePaper, MAP_100TH_MM ) );
1039*b1cdbd2cSJim Jagielski 
1040*b1cdbd2cSJim Jagielski 		if ( aLandscapeBtn.IsChecked() )
1041*b1cdbd2cSJim Jagielski 			Swap( aSize );
1042*b1cdbd2cSJim Jagielski 
1043*b1cdbd2cSJim Jagielski 		if ( aSize.Height() < aPaperHeightEdit.GetMin( FUNIT_100TH_MM ) )
1044*b1cdbd2cSJim Jagielski 			aPaperHeightEdit.SetMin(
1045*b1cdbd2cSJim Jagielski 				aPaperHeightEdit.Normalize( aSize.Height() ), FUNIT_100TH_MM );
1046*b1cdbd2cSJim Jagielski 		if ( aSize.Width() < aPaperWidthEdit.GetMin( FUNIT_100TH_MM ) )
1047*b1cdbd2cSJim Jagielski 			aPaperWidthEdit.SetMin(
1048*b1cdbd2cSJim Jagielski 				aPaperWidthEdit.Normalize( aSize.Width() ), FUNIT_100TH_MM );
1049*b1cdbd2cSJim Jagielski 		SetMetricValue( aPaperHeightEdit, aSize.Height(), SFX_MAPUNIT_100TH_MM );
1050*b1cdbd2cSJim Jagielski 		SetMetricValue( aPaperWidthEdit, aSize.Width(), SFX_MAPUNIT_100TH_MM );
1051*b1cdbd2cSJim Jagielski 
1052*b1cdbd2cSJim Jagielski 		// R"ander ggf. neu berechnen
1053*b1cdbd2cSJim Jagielski 		CalcMargin_Impl();
1054*b1cdbd2cSJim Jagielski 
1055*b1cdbd2cSJim Jagielski 		RangeHdl_Impl( 0 );
1056*b1cdbd2cSJim Jagielski 		UpdateExample_Impl( true );
1057*b1cdbd2cSJim Jagielski 
1058*b1cdbd2cSJim Jagielski 		if ( eMode == SVX_PAGE_MODE_PRESENTATION )
1059*b1cdbd2cSJim Jagielski 		{
1060*b1cdbd2cSJim Jagielski 			// Draw: bei Papierformat soll der Rand 1cm betragen
1061*b1cdbd2cSJim Jagielski 			long nTmp = 0;
1062*b1cdbd2cSJim Jagielski 			sal_Bool bScreen = ( PAPER_SCREEN == ePaper );
1063*b1cdbd2cSJim Jagielski 
1064*b1cdbd2cSJim Jagielski 			if ( !bScreen )
1065*b1cdbd2cSJim Jagielski 				// bei Bildschirm keinen Rand
1066*b1cdbd2cSJim Jagielski 				nTmp = 1; // entspr. 1cm
1067*b1cdbd2cSJim Jagielski 
1068*b1cdbd2cSJim Jagielski 			// Abfragen, ob fuer Raender 0 gesetzt ist:
1069*b1cdbd2cSJim Jagielski 			if ( bScreen || aRightMarginEdit.GetValue() == 0 )
1070*b1cdbd2cSJim Jagielski 			{
1071*b1cdbd2cSJim Jagielski 				SetMetricValue( aRightMarginEdit, nTmp, SFX_MAPUNIT_CM );
1072*b1cdbd2cSJim Jagielski 				if ( !bScreen &&
1073*b1cdbd2cSJim Jagielski 					 aRightMarginEdit.GetFirst() > aRightMarginEdit.GetValue() )
1074*b1cdbd2cSJim Jagielski 					aRightMarginEdit.SetValue( aRightMarginEdit.GetFirst() );
1075*b1cdbd2cSJim Jagielski 			}
1076*b1cdbd2cSJim Jagielski 			if ( bScreen || aLeftMarginEdit.GetValue() == 0 )
1077*b1cdbd2cSJim Jagielski 			{
1078*b1cdbd2cSJim Jagielski 				SetMetricValue( aLeftMarginEdit, nTmp, SFX_MAPUNIT_CM );
1079*b1cdbd2cSJim Jagielski 				if ( !bScreen &&
1080*b1cdbd2cSJim Jagielski 					 aLeftMarginEdit.GetFirst() > aLeftMarginEdit.GetValue() )
1081*b1cdbd2cSJim Jagielski 					aLeftMarginEdit.SetValue( aLeftMarginEdit.GetFirst() );
1082*b1cdbd2cSJim Jagielski 			}
1083*b1cdbd2cSJim Jagielski 			if ( bScreen || aBottomMarginEdit.GetValue() == 0 )
1084*b1cdbd2cSJim Jagielski 			{
1085*b1cdbd2cSJim Jagielski 				SetMetricValue( aBottomMarginEdit, nTmp, SFX_MAPUNIT_CM );
1086*b1cdbd2cSJim Jagielski 				if ( !bScreen &&
1087*b1cdbd2cSJim Jagielski 					 aBottomMarginEdit.GetFirst() > aBottomMarginEdit.GetValue() )
1088*b1cdbd2cSJim Jagielski 					aBottomMarginEdit.SetValue( aBottomMarginEdit.GetFirst() );
1089*b1cdbd2cSJim Jagielski 			}
1090*b1cdbd2cSJim Jagielski 			if ( bScreen || aTopMarginEdit.GetValue() == 0 )
1091*b1cdbd2cSJim Jagielski 			{
1092*b1cdbd2cSJim Jagielski 				SetMetricValue( aTopMarginEdit, nTmp, SFX_MAPUNIT_CM );
1093*b1cdbd2cSJim Jagielski 				if ( !bScreen &&
1094*b1cdbd2cSJim Jagielski 					 aTopMarginEdit.GetFirst() > aTopMarginEdit.GetValue() )
1095*b1cdbd2cSJim Jagielski 					aTopMarginEdit.SetValue( aTopMarginEdit.GetFirst() );
1096*b1cdbd2cSJim Jagielski 			}
1097*b1cdbd2cSJim Jagielski 			UpdateExample_Impl( true );
1098*b1cdbd2cSJim Jagielski 		}
1099*b1cdbd2cSJim Jagielski 	}
1100*b1cdbd2cSJim Jagielski 	return 0;
1101*b1cdbd2cSJim Jagielski }
1102*b1cdbd2cSJim Jagielski 
1103*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1104*b1cdbd2cSJim Jagielski 
IMPL_LINK(SvxPageDescPage,PaperSizeModify_Impl,Edit *,EMPTYARG)1105*b1cdbd2cSJim Jagielski IMPL_LINK( SvxPageDescPage, PaperSizeModify_Impl, Edit *, EMPTYARG )
1106*b1cdbd2cSJim Jagielski {
1107*b1cdbd2cSJim Jagielski 	sal_uInt16 nWhich = GetWhich( SID_ATTR_LRSPACE );
1108*b1cdbd2cSJim Jagielski 	SfxMapUnit eUnit = GetItemSet().GetPool()->GetMetric( nWhich );
1109*b1cdbd2cSJim Jagielski 	Size aSize( GetCoreValue( aPaperWidthEdit, eUnit ),
1110*b1cdbd2cSJim Jagielski 				GetCoreValue( aPaperHeightEdit, eUnit ) );
1111*b1cdbd2cSJim Jagielski 	Paper ePaper = SvxPaperInfo::GetSvxPaper( aSize, (MapUnit)eUnit, sal_True );
1112*b1cdbd2cSJim Jagielski 	sal_uInt16 nEntryCount = aPaperSizeBox.GetEntryCount();
1113*b1cdbd2cSJim Jagielski 
1114*b1cdbd2cSJim Jagielski 	for ( sal_uInt16 i = 0; i < nEntryCount; ++i )
1115*b1cdbd2cSJim Jagielski 	{
1116*b1cdbd2cSJim Jagielski 		Paper eTmp = (Paper)(sal_uLong)aPaperSizeBox.GetEntryData(i);
1117*b1cdbd2cSJim Jagielski 
1118*b1cdbd2cSJim Jagielski 		if ( eTmp == ePaper )
1119*b1cdbd2cSJim Jagielski 		{
1120*b1cdbd2cSJim Jagielski 			aPaperSizeBox.SelectEntryPos(i);
1121*b1cdbd2cSJim Jagielski 			break;
1122*b1cdbd2cSJim Jagielski 		}
1123*b1cdbd2cSJim Jagielski 	}
1124*b1cdbd2cSJim Jagielski 	UpdateExample_Impl( true );
1125*b1cdbd2cSJim Jagielski 	return 0;
1126*b1cdbd2cSJim Jagielski }
1127*b1cdbd2cSJim Jagielski 
1128*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1129*b1cdbd2cSJim Jagielski 
IMPL_LINK(SvxPageDescPage,SwapOrientation_Impl,RadioButton *,pBtn)1130*b1cdbd2cSJim Jagielski IMPL_LINK( SvxPageDescPage, SwapOrientation_Impl, RadioButton *, pBtn )
1131*b1cdbd2cSJim Jagielski {
1132*b1cdbd2cSJim Jagielski 	if (
1133*b1cdbd2cSJim Jagielski         (!bLandscape && pBtn == &aLandscapeBtn) ||
1134*b1cdbd2cSJim Jagielski 		(bLandscape  && pBtn == &aPortraitBtn)
1135*b1cdbd2cSJim Jagielski        )
1136*b1cdbd2cSJim Jagielski 	{
1137*b1cdbd2cSJim Jagielski 		bLandscape = aLandscapeBtn.IsChecked();
1138*b1cdbd2cSJim Jagielski 
1139*b1cdbd2cSJim Jagielski 		const long lWidth = GetCoreValue( aPaperWidthEdit, SFX_MAPUNIT_100TH_MM );
1140*b1cdbd2cSJim Jagielski 		const long lHeight = GetCoreValue( aPaperHeightEdit, SFX_MAPUNIT_100TH_MM );
1141*b1cdbd2cSJim Jagielski 
1142*b1cdbd2cSJim Jagielski         // swap with and height
1143*b1cdbd2cSJim Jagielski 		SetMetricValue( aPaperWidthEdit, lHeight, SFX_MAPUNIT_100TH_MM );
1144*b1cdbd2cSJim Jagielski 		SetMetricValue( aPaperHeightEdit, lWidth, SFX_MAPUNIT_100TH_MM );
1145*b1cdbd2cSJim Jagielski 
1146*b1cdbd2cSJim Jagielski         // recalculate margins if necessary
1147*b1cdbd2cSJim Jagielski 		CalcMargin_Impl();
1148*b1cdbd2cSJim Jagielski 
1149*b1cdbd2cSJim Jagielski 		PaperSizeSelect_Impl( &aPaperSizeBox );
1150*b1cdbd2cSJim Jagielski 		RangeHdl_Impl( 0 );
1151*b1cdbd2cSJim Jagielski 		SwapFirstValues_Impl( bBorderModified );
1152*b1cdbd2cSJim Jagielski         UpdateExample_Impl( true );
1153*b1cdbd2cSJim Jagielski 	}
1154*b1cdbd2cSJim Jagielski 	return 0;
1155*b1cdbd2cSJim Jagielski }
1156*b1cdbd2cSJim Jagielski 
1157*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1158*b1cdbd2cSJim Jagielski 
SwapFirstValues_Impl(FASTBOOL bSet)1159*b1cdbd2cSJim Jagielski void SvxPageDescPage::SwapFirstValues_Impl( FASTBOOL bSet )
1160*b1cdbd2cSJim Jagielski {
1161*b1cdbd2cSJim Jagielski     MapMode aOldMode = pImpl->mpDefPrinter->GetMapMode();
1162*b1cdbd2cSJim Jagielski 	Orientation	eOri = ORIENTATION_PORTRAIT;
1163*b1cdbd2cSJim Jagielski 
1164*b1cdbd2cSJim Jagielski 	if ( bLandscape )
1165*b1cdbd2cSJim Jagielski 		eOri = ORIENTATION_LANDSCAPE;
1166*b1cdbd2cSJim Jagielski     Orientation eOldOri = pImpl->mpDefPrinter->GetOrientation();
1167*b1cdbd2cSJim Jagielski     pImpl->mpDefPrinter->SetOrientation( eOri );
1168*b1cdbd2cSJim Jagielski     pImpl->mpDefPrinter->SetMapMode( MAP_TWIP );
1169*b1cdbd2cSJim Jagielski 
1170*b1cdbd2cSJim Jagielski 	// First- und Last-Werte f"ur die R"ander setzen
1171*b1cdbd2cSJim Jagielski     Size aPaperSize = pImpl->mpDefPrinter->GetPaperSize();
1172*b1cdbd2cSJim Jagielski     Size aPrintSize = pImpl->mpDefPrinter->GetOutputSize();
1173*b1cdbd2cSJim Jagielski 	/*
1174*b1cdbd2cSJim Jagielski 	 * einen Punkt ( 0,0 ) in logische Koordinaten zu konvertieren,
1175*b1cdbd2cSJim Jagielski 	 * sieht aus wie Unsinn; ist aber sinnvoll, wenn der Ursprung des
1176*b1cdbd2cSJim Jagielski 	 * Koordinatensystems verschoben ist.
1177*b1cdbd2cSJim Jagielski 	 */
1178*b1cdbd2cSJim Jagielski     Point aPrintOffset = pImpl->mpDefPrinter->GetPageOffset() -
1179*b1cdbd2cSJim Jagielski                          pImpl->mpDefPrinter->PixelToLogic( Point() );
1180*b1cdbd2cSJim Jagielski     pImpl->mpDefPrinter->SetMapMode( aOldMode );
1181*b1cdbd2cSJim Jagielski     pImpl->mpDefPrinter->SetOrientation( eOldOri );
1182*b1cdbd2cSJim Jagielski 
1183*b1cdbd2cSJim Jagielski     sal_Int64 nSetL = aLeftMarginEdit.Denormalize(
1184*b1cdbd2cSJim Jagielski 					aLeftMarginEdit.GetValue( FUNIT_TWIP ) );
1185*b1cdbd2cSJim Jagielski 	sal_Int64 nSetR = aRightMarginEdit.Denormalize(
1186*b1cdbd2cSJim Jagielski 					aRightMarginEdit.GetValue( FUNIT_TWIP ) );
1187*b1cdbd2cSJim Jagielski 	sal_Int64 nSetT = aTopMarginEdit.Denormalize(
1188*b1cdbd2cSJim Jagielski 					aTopMarginEdit.GetValue( FUNIT_TWIP ) );
1189*b1cdbd2cSJim Jagielski 	sal_Int64 nSetB = aBottomMarginEdit.Denormalize(
1190*b1cdbd2cSJim Jagielski 					aBottomMarginEdit.GetValue( FUNIT_TWIP ) );
1191*b1cdbd2cSJim Jagielski 
1192*b1cdbd2cSJim Jagielski 	long nOffset = !aPrintOffset.X() && !aPrintOffset.Y() ? 0 : PRINT_OFFSET;
1193*b1cdbd2cSJim Jagielski 	long nNewL = aPrintOffset.X();
1194*b1cdbd2cSJim Jagielski 	long nNewR =
1195*b1cdbd2cSJim Jagielski 		aPaperSize.Width() - aPrintSize.Width() - aPrintOffset.X() + nOffset;
1196*b1cdbd2cSJim Jagielski 	long nNewT = aPrintOffset.Y();
1197*b1cdbd2cSJim Jagielski 	long nNewB =
1198*b1cdbd2cSJim Jagielski 		aPaperSize.Height() - aPrintSize.Height() - aPrintOffset.Y() + nOffset;
1199*b1cdbd2cSJim Jagielski 
1200*b1cdbd2cSJim Jagielski 	aLeftMarginEdit.SetFirst( aLeftMarginEdit.Normalize( nNewL ), FUNIT_TWIP );
1201*b1cdbd2cSJim Jagielski 	nFirstLeftMargin = static_cast<long>(aLeftMarginEdit.GetFirst());
1202*b1cdbd2cSJim Jagielski 	aRightMarginEdit.SetFirst( aRightMarginEdit.Normalize( nNewR ), FUNIT_TWIP );
1203*b1cdbd2cSJim Jagielski 	nFirstRightMargin = static_cast<long>(aRightMarginEdit.GetFirst());
1204*b1cdbd2cSJim Jagielski 	aTopMarginEdit.SetFirst( aTopMarginEdit.Normalize( nNewT ), FUNIT_TWIP );
1205*b1cdbd2cSJim Jagielski 	nFirstTopMargin = static_cast<long>(aTopMarginEdit.GetFirst());
1206*b1cdbd2cSJim Jagielski 	aBottomMarginEdit.SetFirst(	aBottomMarginEdit.Normalize( nNewB ), FUNIT_TWIP );
1207*b1cdbd2cSJim Jagielski 	nFirstBottomMargin = static_cast<long>(aBottomMarginEdit.GetFirst());
1208*b1cdbd2cSJim Jagielski 
1209*b1cdbd2cSJim Jagielski 	if ( bSet )
1210*b1cdbd2cSJim Jagielski 	{
1211*b1cdbd2cSJim Jagielski 		// ggf. auch die Werte umsetzen,
1212*b1cdbd2cSJim Jagielski 		if ( nSetL < nNewL )
1213*b1cdbd2cSJim Jagielski 			aLeftMarginEdit.SetValue( aLeftMarginEdit.Normalize( nNewL ),
1214*b1cdbd2cSJim Jagielski 									  FUNIT_TWIP );
1215*b1cdbd2cSJim Jagielski 		if ( nSetR < nNewR )
1216*b1cdbd2cSJim Jagielski 			aRightMarginEdit.SetValue( aRightMarginEdit.Normalize( nNewR ),
1217*b1cdbd2cSJim Jagielski 									   FUNIT_TWIP );
1218*b1cdbd2cSJim Jagielski 		if ( nSetT < nNewT )
1219*b1cdbd2cSJim Jagielski 			aTopMarginEdit.SetValue( aTopMarginEdit.Normalize( nNewT ),
1220*b1cdbd2cSJim Jagielski 									 FUNIT_TWIP );
1221*b1cdbd2cSJim Jagielski 		if ( nSetB < nNewB )
1222*b1cdbd2cSJim Jagielski 			aBottomMarginEdit.SetValue( aBottomMarginEdit.Normalize( nNewB ),
1223*b1cdbd2cSJim Jagielski 										FUNIT_TWIP );
1224*b1cdbd2cSJim Jagielski 	}
1225*b1cdbd2cSJim Jagielski }
1226*b1cdbd2cSJim Jagielski 
1227*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1228*b1cdbd2cSJim Jagielski 
IMPL_LINK_INLINE_START(SvxPageDescPage,BorderModify_Impl,MetricField *,EMPTYARG)1229*b1cdbd2cSJim Jagielski IMPL_LINK_INLINE_START( SvxPageDescPage, BorderModify_Impl, MetricField *, EMPTYARG )
1230*b1cdbd2cSJim Jagielski {
1231*b1cdbd2cSJim Jagielski 	if ( !bBorderModified )
1232*b1cdbd2cSJim Jagielski 		bBorderModified = sal_True;
1233*b1cdbd2cSJim Jagielski 	UpdateExample_Impl();
1234*b1cdbd2cSJim Jagielski 	return 0;
1235*b1cdbd2cSJim Jagielski }
IMPL_LINK_INLINE_END(SvxPageDescPage,BorderModify_Impl,MetricField *,EMPTYARG)1236*b1cdbd2cSJim Jagielski IMPL_LINK_INLINE_END( SvxPageDescPage, BorderModify_Impl, MetricField *, EMPTYARG )
1237*b1cdbd2cSJim Jagielski 
1238*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1239*b1cdbd2cSJim Jagielski 
1240*b1cdbd2cSJim Jagielski void SvxPageDescPage::UpdateExample_Impl( bool bResetbackground )
1241*b1cdbd2cSJim Jagielski {
1242*b1cdbd2cSJim Jagielski 	// Size
1243*b1cdbd2cSJim Jagielski 	Size aSize(	GetCoreValue( aPaperWidthEdit, SFX_MAPUNIT_TWIP ),
1244*b1cdbd2cSJim Jagielski 				GetCoreValue( aPaperHeightEdit, SFX_MAPUNIT_TWIP ) );
1245*b1cdbd2cSJim Jagielski 
1246*b1cdbd2cSJim Jagielski 	aBspWin.SetSize( aSize );
1247*b1cdbd2cSJim Jagielski 
1248*b1cdbd2cSJim Jagielski 	// R"ander
1249*b1cdbd2cSJim Jagielski 	aBspWin.SetTop( GetCoreValue( aTopMarginEdit, SFX_MAPUNIT_TWIP ) );
1250*b1cdbd2cSJim Jagielski 	aBspWin.SetBottom( GetCoreValue( aBottomMarginEdit, SFX_MAPUNIT_TWIP ) );
1251*b1cdbd2cSJim Jagielski 	aBspWin.SetLeft( GetCoreValue( aLeftMarginEdit, SFX_MAPUNIT_TWIP ) );
1252*b1cdbd2cSJim Jagielski 	aBspWin.SetRight( GetCoreValue( aRightMarginEdit, SFX_MAPUNIT_TWIP ) );
1253*b1cdbd2cSJim Jagielski 
1254*b1cdbd2cSJim Jagielski 	// Layout
1255*b1cdbd2cSJim Jagielski 	aBspWin.SetUsage( PosToPageUsage_Impl( aLayoutBox.GetSelectEntryPos() ) );
1256*b1cdbd2cSJim Jagielski     if ( bResetbackground )
1257*b1cdbd2cSJim Jagielski         aBspWin.ResetBackground();
1258*b1cdbd2cSJim Jagielski 	aBspWin.Invalidate();
1259*b1cdbd2cSJim Jagielski }
1260*b1cdbd2cSJim Jagielski 
1261*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1262*b1cdbd2cSJim Jagielski 
ResetBackground_Impl(const SfxItemSet & rSet)1263*b1cdbd2cSJim Jagielski void SvxPageDescPage::ResetBackground_Impl( const SfxItemSet& rSet )
1264*b1cdbd2cSJim Jagielski {
1265*b1cdbd2cSJim Jagielski 	sal_uInt16 nWhich = GetWhich( SID_ATTR_PAGE_HEADERSET );
1266*b1cdbd2cSJim Jagielski 
1267*b1cdbd2cSJim Jagielski 	if ( rSet.GetItemState( nWhich, sal_False ) == SFX_ITEM_SET )
1268*b1cdbd2cSJim Jagielski 	{
1269*b1cdbd2cSJim Jagielski 		const SvxSetItem& rSetItem =
1270*b1cdbd2cSJim Jagielski 			(const SvxSetItem&)rSet.Get( nWhich, sal_False );
1271*b1cdbd2cSJim Jagielski 		const SfxItemSet& rTmpSet = rSetItem.GetItemSet();
1272*b1cdbd2cSJim Jagielski 		const SfxBoolItem& rOn =
1273*b1cdbd2cSJim Jagielski 			(const SfxBoolItem&)rTmpSet.Get( GetWhich( SID_ATTR_PAGE_ON ) );
1274*b1cdbd2cSJim Jagielski 
1275*b1cdbd2cSJim Jagielski 		if ( rOn.GetValue() )
1276*b1cdbd2cSJim Jagielski 		{
1277*b1cdbd2cSJim Jagielski 			nWhich = GetWhich( SID_ATTR_BRUSH );
1278*b1cdbd2cSJim Jagielski 
1279*b1cdbd2cSJim Jagielski 			if ( rTmpSet.GetItemState( nWhich ) == SFX_ITEM_SET )
1280*b1cdbd2cSJim Jagielski 			{
1281*b1cdbd2cSJim Jagielski 				const SvxBrushItem& rItem =
1282*b1cdbd2cSJim Jagielski 					(const SvxBrushItem&)rTmpSet.Get( nWhich );
1283*b1cdbd2cSJim Jagielski 				aBspWin.SetHdColor( rItem.GetColor() );
1284*b1cdbd2cSJim Jagielski 			}
1285*b1cdbd2cSJim Jagielski 			nWhich = GetWhich( SID_ATTR_BORDER_OUTER );
1286*b1cdbd2cSJim Jagielski 
1287*b1cdbd2cSJim Jagielski 			if ( rTmpSet.GetItemState( nWhich ) == SFX_ITEM_SET )
1288*b1cdbd2cSJim Jagielski 			{
1289*b1cdbd2cSJim Jagielski 				const SvxBoxItem& rItem =
1290*b1cdbd2cSJim Jagielski 					(const SvxBoxItem&)rTmpSet.Get( nWhich );
1291*b1cdbd2cSJim Jagielski 				aBspWin.SetHdBorder( rItem );
1292*b1cdbd2cSJim Jagielski 			}
1293*b1cdbd2cSJim Jagielski 		}
1294*b1cdbd2cSJim Jagielski 	}
1295*b1cdbd2cSJim Jagielski 
1296*b1cdbd2cSJim Jagielski 	nWhich = GetWhich( SID_ATTR_PAGE_FOOTERSET );
1297*b1cdbd2cSJim Jagielski 
1298*b1cdbd2cSJim Jagielski 	if ( rSet.GetItemState( nWhich, sal_False ) == SFX_ITEM_SET )
1299*b1cdbd2cSJim Jagielski 	{
1300*b1cdbd2cSJim Jagielski 		const SvxSetItem& rSetItem =
1301*b1cdbd2cSJim Jagielski 			(const SvxSetItem&)rSet.Get( nWhich, sal_False );
1302*b1cdbd2cSJim Jagielski 		const SfxItemSet& rTmpSet = rSetItem.GetItemSet();
1303*b1cdbd2cSJim Jagielski 		const SfxBoolItem& rOn =
1304*b1cdbd2cSJim Jagielski 			(const SfxBoolItem&)rTmpSet.Get( GetWhich( SID_ATTR_PAGE_ON ) );
1305*b1cdbd2cSJim Jagielski 
1306*b1cdbd2cSJim Jagielski 		if ( rOn.GetValue() )
1307*b1cdbd2cSJim Jagielski 		{
1308*b1cdbd2cSJim Jagielski 			nWhich = GetWhich( SID_ATTR_BRUSH );
1309*b1cdbd2cSJim Jagielski 
1310*b1cdbd2cSJim Jagielski 			if ( rTmpSet.GetItemState( nWhich ) == SFX_ITEM_SET )
1311*b1cdbd2cSJim Jagielski 			{
1312*b1cdbd2cSJim Jagielski 				const SvxBrushItem& rItem =
1313*b1cdbd2cSJim Jagielski 					(const SvxBrushItem&)rTmpSet.Get( nWhich );
1314*b1cdbd2cSJim Jagielski 				aBspWin.SetFtColor( rItem.GetColor() );
1315*b1cdbd2cSJim Jagielski 			}
1316*b1cdbd2cSJim Jagielski 			nWhich = GetWhich( SID_ATTR_BORDER_OUTER );
1317*b1cdbd2cSJim Jagielski 
1318*b1cdbd2cSJim Jagielski 			if ( rTmpSet.GetItemState( nWhich ) == SFX_ITEM_SET )
1319*b1cdbd2cSJim Jagielski 			{
1320*b1cdbd2cSJim Jagielski 				const SvxBoxItem& rItem =
1321*b1cdbd2cSJim Jagielski 					(const SvxBoxItem&)rTmpSet.Get( nWhich );
1322*b1cdbd2cSJim Jagielski 				aBspWin.SetFtBorder( rItem );
1323*b1cdbd2cSJim Jagielski 			}
1324*b1cdbd2cSJim Jagielski 		}
1325*b1cdbd2cSJim Jagielski 	}
1326*b1cdbd2cSJim Jagielski 
1327*b1cdbd2cSJim Jagielski 	const SfxPoolItem* pItem = GetItem( rSet, SID_ATTR_BRUSH );
1328*b1cdbd2cSJim Jagielski 
1329*b1cdbd2cSJim Jagielski 	if ( pItem )
1330*b1cdbd2cSJim Jagielski 	{
1331*b1cdbd2cSJim Jagielski 		aBspWin.SetColor( ( (const SvxBrushItem*)pItem )->GetColor() );
1332*b1cdbd2cSJim Jagielski 		const Graphic* pGrf = ( (const SvxBrushItem*)pItem )->GetGraphic();
1333*b1cdbd2cSJim Jagielski 
1334*b1cdbd2cSJim Jagielski 		if ( pGrf )
1335*b1cdbd2cSJim Jagielski 		{
1336*b1cdbd2cSJim Jagielski 			Bitmap aBitmap = pGrf->GetBitmap();
1337*b1cdbd2cSJim Jagielski 			aBspWin.SetBitmap( &aBitmap );
1338*b1cdbd2cSJim Jagielski 		}
1339*b1cdbd2cSJim Jagielski 		else
1340*b1cdbd2cSJim Jagielski 			aBspWin.SetBitmap( NULL );
1341*b1cdbd2cSJim Jagielski 	}
1342*b1cdbd2cSJim Jagielski 
1343*b1cdbd2cSJim Jagielski 	pItem = GetItem( rSet, SID_ATTR_BORDER_OUTER );
1344*b1cdbd2cSJim Jagielski 
1345*b1cdbd2cSJim Jagielski 	if ( pItem )
1346*b1cdbd2cSJim Jagielski 		aBspWin.SetBorder( (SvxBoxItem&)*pItem );
1347*b1cdbd2cSJim Jagielski }
1348*b1cdbd2cSJim Jagielski 
1349*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1350*b1cdbd2cSJim Jagielski 
InitHeadFoot_Impl(const SfxItemSet & rSet)1351*b1cdbd2cSJim Jagielski void SvxPageDescPage::InitHeadFoot_Impl( const SfxItemSet& rSet )
1352*b1cdbd2cSJim Jagielski {
1353*b1cdbd2cSJim Jagielski 	bLandscape = aLandscapeBtn.IsChecked();
1354*b1cdbd2cSJim Jagielski 	const SfxPoolItem* pItem = GetItem( rSet, SID_ATTR_PAGE_SIZE );
1355*b1cdbd2cSJim Jagielski 
1356*b1cdbd2cSJim Jagielski 	if ( pItem )
1357*b1cdbd2cSJim Jagielski 		aBspWin.SetSize( ( (const SvxSizeItem*)pItem )->GetSize() );
1358*b1cdbd2cSJim Jagielski 
1359*b1cdbd2cSJim Jagielski 	const SvxSetItem* pSetItem = 0;
1360*b1cdbd2cSJim Jagielski 
1361*b1cdbd2cSJim Jagielski 	// Kopfzeilen-Attribute auswerten
1362*b1cdbd2cSJim Jagielski 
1363*b1cdbd2cSJim Jagielski 	if ( SFX_ITEM_SET ==
1364*b1cdbd2cSJim Jagielski 		 rSet.GetItemState( GetWhich( SID_ATTR_PAGE_HEADERSET ),
1365*b1cdbd2cSJim Jagielski 							sal_False, (const SfxPoolItem**)&pSetItem ) )
1366*b1cdbd2cSJim Jagielski 	{
1367*b1cdbd2cSJim Jagielski 		const SfxItemSet& rHeaderSet = pSetItem->GetItemSet();
1368*b1cdbd2cSJim Jagielski 		const SfxBoolItem& rHeaderOn =
1369*b1cdbd2cSJim Jagielski 			(const SfxBoolItem&)rHeaderSet.Get( GetWhich( SID_ATTR_PAGE_ON ) );
1370*b1cdbd2cSJim Jagielski 
1371*b1cdbd2cSJim Jagielski 		if ( rHeaderOn.GetValue() )
1372*b1cdbd2cSJim Jagielski 		{
1373*b1cdbd2cSJim Jagielski 			const SvxSizeItem& rSize = (const SvxSizeItem&)
1374*b1cdbd2cSJim Jagielski 				rHeaderSet.Get( GetWhich( SID_ATTR_PAGE_SIZE ) );
1375*b1cdbd2cSJim Jagielski 			const SvxULSpaceItem& rUL = (const SvxULSpaceItem&)
1376*b1cdbd2cSJim Jagielski 				rHeaderSet.Get( GetWhich( SID_ATTR_ULSPACE ) );
1377*b1cdbd2cSJim Jagielski 			long nDist = rUL.GetLower();
1378*b1cdbd2cSJim Jagielski 			aBspWin.SetHdHeight( rSize.GetSize().Height() - nDist );
1379*b1cdbd2cSJim Jagielski 			aBspWin.SetHdDist( nDist );
1380*b1cdbd2cSJim Jagielski 			const SvxLRSpaceItem& rLR = (const SvxLRSpaceItem&)
1381*b1cdbd2cSJim Jagielski 				rHeaderSet.Get( GetWhich( SID_ATTR_LRSPACE ) );
1382*b1cdbd2cSJim Jagielski 			aBspWin.SetHdLeft( rLR.GetLeft() );
1383*b1cdbd2cSJim Jagielski 			aBspWin.SetHdRight( rLR.GetRight() );
1384*b1cdbd2cSJim Jagielski 			aBspWin.SetHeader( sal_True );
1385*b1cdbd2cSJim Jagielski 		}
1386*b1cdbd2cSJim Jagielski 		else
1387*b1cdbd2cSJim Jagielski 			aBspWin.SetHeader( sal_False );
1388*b1cdbd2cSJim Jagielski 
1389*b1cdbd2cSJim Jagielski 		// im Beispiel Hintergrund und Umrandung anzeigen
1390*b1cdbd2cSJim Jagielski 		sal_uInt16 nWhich = GetWhich( SID_ATTR_BRUSH );
1391*b1cdbd2cSJim Jagielski 
1392*b1cdbd2cSJim Jagielski 		if ( rHeaderSet.GetItemState( nWhich ) >= SFX_ITEM_AVAILABLE )
1393*b1cdbd2cSJim Jagielski 		{
1394*b1cdbd2cSJim Jagielski 			const SvxBrushItem& rItem =
1395*b1cdbd2cSJim Jagielski 				(const SvxBrushItem&)rHeaderSet.Get( nWhich );
1396*b1cdbd2cSJim Jagielski 			aBspWin.SetHdColor( rItem.GetColor() );
1397*b1cdbd2cSJim Jagielski 		}
1398*b1cdbd2cSJim Jagielski 		nWhich = GetWhich( SID_ATTR_BORDER_OUTER );
1399*b1cdbd2cSJim Jagielski 
1400*b1cdbd2cSJim Jagielski 		if ( rHeaderSet.GetItemState( nWhich ) >= SFX_ITEM_AVAILABLE )
1401*b1cdbd2cSJim Jagielski 		{
1402*b1cdbd2cSJim Jagielski 			const SvxBoxItem& rItem =
1403*b1cdbd2cSJim Jagielski 				(const SvxBoxItem&)rHeaderSet.Get( nWhich );
1404*b1cdbd2cSJim Jagielski 			aBspWin.SetHdBorder( rItem );
1405*b1cdbd2cSJim Jagielski 		}
1406*b1cdbd2cSJim Jagielski 	}
1407*b1cdbd2cSJim Jagielski 
1408*b1cdbd2cSJim Jagielski 	// Fusszeilen-Attribute auswerten
1409*b1cdbd2cSJim Jagielski 
1410*b1cdbd2cSJim Jagielski 	if ( SFX_ITEM_SET ==
1411*b1cdbd2cSJim Jagielski 		 rSet.GetItemState( GetWhich( SID_ATTR_PAGE_FOOTERSET ),
1412*b1cdbd2cSJim Jagielski 							sal_False, (const SfxPoolItem**)&pSetItem ) )
1413*b1cdbd2cSJim Jagielski 	{
1414*b1cdbd2cSJim Jagielski 		const SfxItemSet& rFooterSet = pSetItem->GetItemSet();
1415*b1cdbd2cSJim Jagielski 		const SfxBoolItem& rFooterOn =
1416*b1cdbd2cSJim Jagielski 			(const SfxBoolItem&)rFooterSet.Get( GetWhich( SID_ATTR_PAGE_ON ) );
1417*b1cdbd2cSJim Jagielski 
1418*b1cdbd2cSJim Jagielski 		if ( rFooterOn.GetValue() )
1419*b1cdbd2cSJim Jagielski 		{
1420*b1cdbd2cSJim Jagielski 			const SvxSizeItem& rSize = (const SvxSizeItem&)
1421*b1cdbd2cSJim Jagielski 				rFooterSet.Get( GetWhich( SID_ATTR_PAGE_SIZE ) );
1422*b1cdbd2cSJim Jagielski 			const SvxULSpaceItem& rUL = (const SvxULSpaceItem&)
1423*b1cdbd2cSJim Jagielski 				rFooterSet.Get( GetWhich( SID_ATTR_ULSPACE ) );
1424*b1cdbd2cSJim Jagielski 			long nDist = rUL.GetUpper();
1425*b1cdbd2cSJim Jagielski 			aBspWin.SetFtHeight( rSize.GetSize().Height() - nDist );
1426*b1cdbd2cSJim Jagielski 			aBspWin.SetFtDist( nDist );
1427*b1cdbd2cSJim Jagielski 			const SvxLRSpaceItem& rLR = (const SvxLRSpaceItem&)
1428*b1cdbd2cSJim Jagielski 				rFooterSet.Get( GetWhich( SID_ATTR_LRSPACE ) );
1429*b1cdbd2cSJim Jagielski 			aBspWin.SetFtLeft( rLR.GetLeft() );
1430*b1cdbd2cSJim Jagielski 			aBspWin.SetFtRight( rLR.GetRight() );
1431*b1cdbd2cSJim Jagielski 			aBspWin.SetFooter( sal_True );
1432*b1cdbd2cSJim Jagielski 		}
1433*b1cdbd2cSJim Jagielski 		else
1434*b1cdbd2cSJim Jagielski 			aBspWin.SetFooter( sal_False );
1435*b1cdbd2cSJim Jagielski 
1436*b1cdbd2cSJim Jagielski 		// im Beispiel Hintergrund und Umrandung anzeigen
1437*b1cdbd2cSJim Jagielski 		sal_uInt16 nWhich = GetWhich( SID_ATTR_BRUSH );
1438*b1cdbd2cSJim Jagielski 
1439*b1cdbd2cSJim Jagielski 		if ( rFooterSet.GetItemState( nWhich ) >= SFX_ITEM_AVAILABLE )
1440*b1cdbd2cSJim Jagielski 		{
1441*b1cdbd2cSJim Jagielski 			const SvxBrushItem& rItem =
1442*b1cdbd2cSJim Jagielski 				(const SvxBrushItem&)rFooterSet.Get( nWhich );
1443*b1cdbd2cSJim Jagielski 			aBspWin.SetFtColor( rItem.GetColor() );
1444*b1cdbd2cSJim Jagielski 		}
1445*b1cdbd2cSJim Jagielski 		nWhich = GetWhich( SID_ATTR_BORDER_OUTER );
1446*b1cdbd2cSJim Jagielski 
1447*b1cdbd2cSJim Jagielski 		if ( rFooterSet.GetItemState( nWhich ) >= SFX_ITEM_AVAILABLE )
1448*b1cdbd2cSJim Jagielski 		{
1449*b1cdbd2cSJim Jagielski 			const SvxBoxItem& rItem =
1450*b1cdbd2cSJim Jagielski 				(const SvxBoxItem&)rFooterSet.Get( nWhich );
1451*b1cdbd2cSJim Jagielski 			aBspWin.SetFtBorder( rItem );
1452*b1cdbd2cSJim Jagielski 		}
1453*b1cdbd2cSJim Jagielski 	}
1454*b1cdbd2cSJim Jagielski }
1455*b1cdbd2cSJim Jagielski 
1456*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1457*b1cdbd2cSJim Jagielski 
ActivatePage(const SfxItemSet & rSet)1458*b1cdbd2cSJim Jagielski void SvxPageDescPage::ActivatePage( const SfxItemSet& rSet )
1459*b1cdbd2cSJim Jagielski {
1460*b1cdbd2cSJim Jagielski 	InitHeadFoot_Impl( rSet );
1461*b1cdbd2cSJim Jagielski 	ResetBackground_Impl( rSet );
1462*b1cdbd2cSJim Jagielski 	RangeHdl_Impl( 0 );
1463*b1cdbd2cSJim Jagielski }
1464*b1cdbd2cSJim Jagielski 
1465*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1466*b1cdbd2cSJim Jagielski 
DeactivatePage(SfxItemSet * _pSet)1467*b1cdbd2cSJim Jagielski int SvxPageDescPage::DeactivatePage( SfxItemSet* _pSet )
1468*b1cdbd2cSJim Jagielski {
1469*b1cdbd2cSJim Jagielski 	// Abfrage, ob die Seitenr"ander ausserhalb des Druckbereichs liegen
1470*b1cdbd2cSJim Jagielski 	// Wenn nicht, dann den Anwender fragen, ob sie "ubernommen werden sollen.
1471*b1cdbd2cSJim Jagielski 	// Wenn nicht, dann auf der TabPage bleiben.
1472*b1cdbd2cSJim Jagielski 	sal_uInt16 nPos = aPaperSizeBox.GetSelectEntryPos();
1473*b1cdbd2cSJim Jagielski 	Paper ePaper = (Paper)(sal_uLong)aPaperSizeBox.GetEntryData( nPos );
1474*b1cdbd2cSJim Jagielski 
1475*b1cdbd2cSJim Jagielski 	if ( ePaper != PAPER_SCREEN && IsMarginOutOfRange() )
1476*b1cdbd2cSJim Jagielski 	{
1477*b1cdbd2cSJim Jagielski 		if ( QueryBox( this, WB_YES_NO | WB_DEF_NO, aPrintRangeQueryText ).Execute() == RET_NO )
1478*b1cdbd2cSJim Jagielski 		{
1479*b1cdbd2cSJim Jagielski 			MetricField* pField = NULL;
1480*b1cdbd2cSJim Jagielski 			if ( IsPrinterRangeOverflow( aLeftMarginEdit, nFirstLeftMargin, nLastLeftMargin, MARGIN_LEFT ) )
1481*b1cdbd2cSJim Jagielski 				pField = &aLeftMarginEdit;
1482*b1cdbd2cSJim Jagielski 			if (	IsPrinterRangeOverflow( aRightMarginEdit, nFirstRightMargin, nLastRightMargin, MARGIN_RIGHT )
1483*b1cdbd2cSJim Jagielski 				 && !pField )
1484*b1cdbd2cSJim Jagielski 				pField = &aRightMarginEdit;
1485*b1cdbd2cSJim Jagielski 			if (	IsPrinterRangeOverflow( aTopMarginEdit, nFirstTopMargin, nLastTopMargin, MARGIN_TOP )
1486*b1cdbd2cSJim Jagielski 				 && !pField )
1487*b1cdbd2cSJim Jagielski 				pField = &aTopMarginEdit;
1488*b1cdbd2cSJim Jagielski 			if (	IsPrinterRangeOverflow( aBottomMarginEdit, nFirstBottomMargin, nLastBottomMargin, MARGIN_BOTTOM )
1489*b1cdbd2cSJim Jagielski 				 && !pField )
1490*b1cdbd2cSJim Jagielski 				pField = &aBottomMarginEdit;
1491*b1cdbd2cSJim Jagielski 			if ( pField )
1492*b1cdbd2cSJim Jagielski 				pField->GrabFocus();
1493*b1cdbd2cSJim Jagielski 			UpdateExample_Impl();
1494*b1cdbd2cSJim Jagielski 			return KEEP_PAGE;
1495*b1cdbd2cSJim Jagielski 		}
1496*b1cdbd2cSJim Jagielski 		else
1497*b1cdbd2cSJim Jagielski 			CheckMarginEdits( false );
1498*b1cdbd2cSJim Jagielski 	}
1499*b1cdbd2cSJim Jagielski 
1500*b1cdbd2cSJim Jagielski     if ( _pSet )
1501*b1cdbd2cSJim Jagielski 	{
1502*b1cdbd2cSJim Jagielski         FillItemSet( *_pSet );
1503*b1cdbd2cSJim Jagielski 
1504*b1cdbd2cSJim Jagielski 		// ggf. hoch/quer putten
1505*b1cdbd2cSJim Jagielski 		sal_uInt16 nWh = GetWhich( SID_ATTR_PAGE_SIZE );
1506*b1cdbd2cSJim Jagielski 		SfxMapUnit eUnit = GetItemSet().GetPool()->GetMetric( nWh );
1507*b1cdbd2cSJim Jagielski 		Size aSize( GetCoreValue( aPaperWidthEdit, eUnit ),
1508*b1cdbd2cSJim Jagielski 					GetCoreValue( aPaperHeightEdit, eUnit ) );
1509*b1cdbd2cSJim Jagielski 
1510*b1cdbd2cSJim Jagielski         // putten, wenn aktuelle Gr"o/se unterschiedlich zum Wert in _pSet
1511*b1cdbd2cSJim Jagielski         const SvxSizeItem* pSize = (const SvxSizeItem*)GetItem( *_pSet, SID_ATTR_PAGE_SIZE );
1512*b1cdbd2cSJim Jagielski 		if ( aSize.Width() && ( !pSize || !IsEqualSize_Impl( pSize, aSize ) ) )
1513*b1cdbd2cSJim Jagielski             _pSet->Put( SvxSizeItem( nWh, aSize ) );
1514*b1cdbd2cSJim Jagielski 	}
1515*b1cdbd2cSJim Jagielski 
1516*b1cdbd2cSJim Jagielski 	return LEAVE_PAGE;
1517*b1cdbd2cSJim Jagielski }
1518*b1cdbd2cSJim Jagielski 
1519*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1520*b1cdbd2cSJim Jagielski 
IMPL_LINK(SvxPageDescPage,RangeHdl_Impl,Edit *,EMPTYARG)1521*b1cdbd2cSJim Jagielski IMPL_LINK( SvxPageDescPage, RangeHdl_Impl, Edit *, EMPTYARG )
1522*b1cdbd2cSJim Jagielski {
1523*b1cdbd2cSJim Jagielski 	// Aktuelle Header-Breite/H"ohe aus dem Bsp
1524*b1cdbd2cSJim Jagielski 	long nHHeight = aBspWin.GetHdHeight();
1525*b1cdbd2cSJim Jagielski 	long nHDist = aBspWin.GetHdDist();
1526*b1cdbd2cSJim Jagielski 
1527*b1cdbd2cSJim Jagielski 	// Aktuelle Footer-Breite/H"ohe aus dem Bsp
1528*b1cdbd2cSJim Jagielski 	long nFHeight = aBspWin.GetFtHeight();
1529*b1cdbd2cSJim Jagielski 	long nFDist = aBspWin.GetFtDist();
1530*b1cdbd2cSJim Jagielski 
1531*b1cdbd2cSJim Jagielski 	// Aktuelle Header/Footer-R"ander aus dem Bsp
1532*b1cdbd2cSJim Jagielski 	long nHFLeft = Max( aBspWin.GetHdLeft(), aBspWin.GetFtLeft() );
1533*b1cdbd2cSJim Jagielski 	long nHFRight = Max( aBspWin.GetHdRight(), aBspWin.GetFtRight() );
1534*b1cdbd2cSJim Jagielski 
1535*b1cdbd2cSJim Jagielski 	// Aktuelle Werte der Seitenr"ander
1536*b1cdbd2cSJim Jagielski 	long nBT = static_cast<long>(aTopMarginEdit.Denormalize(aTopMarginEdit.GetValue(FUNIT_TWIP)));
1537*b1cdbd2cSJim Jagielski 	long nBB = static_cast<long>(aBottomMarginEdit.Denormalize(aBottomMarginEdit.GetValue(FUNIT_TWIP)));
1538*b1cdbd2cSJim Jagielski 	long nBL = static_cast<long>(aLeftMarginEdit.Denormalize(aLeftMarginEdit.GetValue(FUNIT_TWIP)));
1539*b1cdbd2cSJim Jagielski 	long nBR = static_cast<long>(aRightMarginEdit.Denormalize(aRightMarginEdit.GetValue(FUNIT_TWIP)));
1540*b1cdbd2cSJim Jagielski 
1541*b1cdbd2cSJim Jagielski 	// Breite Umrandung der Seite berechnen
1542*b1cdbd2cSJim Jagielski     const SfxItemSet* _pSet = &GetItemSet();
1543*b1cdbd2cSJim Jagielski 	Size aBorder;
1544*b1cdbd2cSJim Jagielski 
1545*b1cdbd2cSJim Jagielski     if ( _pSet->GetItemState( GetWhich(SID_ATTR_BORDER_SHADOW) ) >=
1546*b1cdbd2cSJim Jagielski 			SFX_ITEM_AVAILABLE &&
1547*b1cdbd2cSJim Jagielski          _pSet->GetItemState( GetWhich(SID_ATTR_BORDER_OUTER)  ) >=
1548*b1cdbd2cSJim Jagielski 			SFX_ITEM_AVAILABLE )
1549*b1cdbd2cSJim Jagielski 	{
1550*b1cdbd2cSJim Jagielski 		aBorder = ( GetMinBorderSpace_Impl(
1551*b1cdbd2cSJim Jagielski             (const SvxShadowItem&)_pSet->Get(GetWhich(SID_ATTR_BORDER_SHADOW)),
1552*b1cdbd2cSJim Jagielski             (const SvxBoxItem&)_pSet->Get(GetWhich(SID_ATTR_BORDER_OUTER))));
1553*b1cdbd2cSJim Jagielski 	}
1554*b1cdbd2cSJim Jagielski 
1555*b1cdbd2cSJim Jagielski 	long nH  = static_cast<long>(aPaperHeightEdit.Denormalize(aPaperHeightEdit.GetValue(FUNIT_TWIP)));
1556*b1cdbd2cSJim Jagielski 	long nW  = static_cast<long>(aPaperWidthEdit.Denormalize(aPaperWidthEdit.GetValue(FUNIT_TWIP)));
1557*b1cdbd2cSJim Jagielski 
1558*b1cdbd2cSJim Jagielski 	// Grenzen Papier
1559*b1cdbd2cSJim Jagielski 	// Maximum liegt bei 54cm
1560*b1cdbd2cSJim Jagielski 	//
1561*b1cdbd2cSJim Jagielski 	long nMin = nHHeight + nHDist + nFDist + nFHeight + nBT + nBB +
1562*b1cdbd2cSJim Jagielski 				MINBODY + aBorder.Height();
1563*b1cdbd2cSJim Jagielski 	aPaperHeightEdit.SetMin(aPaperHeightEdit.Normalize(nMin), FUNIT_TWIP);
1564*b1cdbd2cSJim Jagielski 
1565*b1cdbd2cSJim Jagielski 	nMin = MINBODY + nBL + nBR + aBorder.Width();
1566*b1cdbd2cSJim Jagielski 	aPaperWidthEdit.SetMin(aPaperWidthEdit.Normalize(nMin), FUNIT_TWIP);
1567*b1cdbd2cSJim Jagielski 
1568*b1cdbd2cSJim Jagielski 	// Falls sich die Papiergr"o\se ge"adert hat
1569*b1cdbd2cSJim Jagielski 	nH = static_cast<long>(aPaperHeightEdit.Denormalize(aPaperHeightEdit.GetValue(FUNIT_TWIP)));
1570*b1cdbd2cSJim Jagielski 	nW = static_cast<long>(aPaperWidthEdit.Denormalize(aPaperWidthEdit.GetValue(FUNIT_TWIP)));
1571*b1cdbd2cSJim Jagielski 
1572*b1cdbd2cSJim Jagielski 	// Top
1573*b1cdbd2cSJim Jagielski 	long nMax =	nH - nBB - aBorder.Height() - MINBODY -
1574*b1cdbd2cSJim Jagielski 				nFDist - nFHeight -	nHDist - nHHeight;
1575*b1cdbd2cSJim Jagielski 
1576*b1cdbd2cSJim Jagielski 	aTopMarginEdit.SetMax(aTopMarginEdit.Normalize(nMax), FUNIT_TWIP);
1577*b1cdbd2cSJim Jagielski 
1578*b1cdbd2cSJim Jagielski 	// Bottom
1579*b1cdbd2cSJim Jagielski 	nMax = nH - nBT - aBorder.Height() - MINBODY -
1580*b1cdbd2cSJim Jagielski 		   nFDist - nFHeight - nHDist - nHHeight;
1581*b1cdbd2cSJim Jagielski 
1582*b1cdbd2cSJim Jagielski 	aBottomMarginEdit.SetMax(aTopMarginEdit.Normalize(nMax), FUNIT_TWIP);
1583*b1cdbd2cSJim Jagielski 
1584*b1cdbd2cSJim Jagielski 	// Left
1585*b1cdbd2cSJim Jagielski 	nMax = nW - nBR - MINBODY - aBorder.Width() - nHFLeft - nHFRight;
1586*b1cdbd2cSJim Jagielski 	aLeftMarginEdit.SetMax(aLeftMarginEdit.Normalize(nMax), FUNIT_TWIP);
1587*b1cdbd2cSJim Jagielski 
1588*b1cdbd2cSJim Jagielski 	// Right
1589*b1cdbd2cSJim Jagielski 	nMax = nW - nBL - MINBODY - aBorder.Width() - nHFLeft - nHFRight;
1590*b1cdbd2cSJim Jagielski 	aRightMarginEdit.SetMax(aRightMarginEdit.Normalize(nMax), FUNIT_TWIP);
1591*b1cdbd2cSJim Jagielski 	return 0;
1592*b1cdbd2cSJim Jagielski }
1593*b1cdbd2cSJim Jagielski 
1594*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1595*b1cdbd2cSJim Jagielski 
CalcMargin_Impl()1596*b1cdbd2cSJim Jagielski void SvxPageDescPage::CalcMargin_Impl()
1597*b1cdbd2cSJim Jagielski {
1598*b1cdbd2cSJim Jagielski 	// Aktuelle Werte der Seitenr"ander
1599*b1cdbd2cSJim Jagielski 	long nBT = GetCoreValue( aTopMarginEdit, SFX_MAPUNIT_TWIP );
1600*b1cdbd2cSJim Jagielski 	long nBB = GetCoreValue( aBottomMarginEdit, SFX_MAPUNIT_TWIP );
1601*b1cdbd2cSJim Jagielski 
1602*b1cdbd2cSJim Jagielski 	long nBL = GetCoreValue( aLeftMarginEdit, SFX_MAPUNIT_TWIP );
1603*b1cdbd2cSJim Jagielski 	long nBR = GetCoreValue( aRightMarginEdit, SFX_MAPUNIT_TWIP );
1604*b1cdbd2cSJim Jagielski 
1605*b1cdbd2cSJim Jagielski 	long nH  = GetCoreValue( aPaperHeightEdit, SFX_MAPUNIT_TWIP );
1606*b1cdbd2cSJim Jagielski 	long nW  = GetCoreValue( aPaperWidthEdit, SFX_MAPUNIT_TWIP );
1607*b1cdbd2cSJim Jagielski 
1608*b1cdbd2cSJim Jagielski 	long nWidth = nBL + nBR + MINBODY;
1609*b1cdbd2cSJim Jagielski 	long nHeight = nBT + nBB + MINBODY;
1610*b1cdbd2cSJim Jagielski 
1611*b1cdbd2cSJim Jagielski 	if ( nWidth > nW || nHeight > nH )
1612*b1cdbd2cSJim Jagielski 	{
1613*b1cdbd2cSJim Jagielski 		if ( nWidth > nW )
1614*b1cdbd2cSJim Jagielski 		{
1615*b1cdbd2cSJim Jagielski 			long nTmp = nBL <= nBR ? nBR : nBL;
1616*b1cdbd2cSJim Jagielski 			nTmp -= nWidth - nW;
1617*b1cdbd2cSJim Jagielski 
1618*b1cdbd2cSJim Jagielski 			if ( nBL <= nBR )
1619*b1cdbd2cSJim Jagielski 				SetMetricValue( aRightMarginEdit, nTmp, SFX_MAPUNIT_TWIP );
1620*b1cdbd2cSJim Jagielski 			else
1621*b1cdbd2cSJim Jagielski 				SetMetricValue( aLeftMarginEdit, nTmp, SFX_MAPUNIT_TWIP );
1622*b1cdbd2cSJim Jagielski 		}
1623*b1cdbd2cSJim Jagielski 
1624*b1cdbd2cSJim Jagielski 		if ( nHeight > nH )
1625*b1cdbd2cSJim Jagielski 		{
1626*b1cdbd2cSJim Jagielski 			long nTmp = nBT <= nBB ? nBB : nBT;
1627*b1cdbd2cSJim Jagielski 			nTmp -= nHeight - nH;
1628*b1cdbd2cSJim Jagielski 
1629*b1cdbd2cSJim Jagielski 			if ( nBT <= nBB )
1630*b1cdbd2cSJim Jagielski 				SetMetricValue( aBottomMarginEdit, nTmp, SFX_MAPUNIT_TWIP );
1631*b1cdbd2cSJim Jagielski 			else
1632*b1cdbd2cSJim Jagielski 				SetMetricValue( aTopMarginEdit, nTmp, SFX_MAPUNIT_TWIP );
1633*b1cdbd2cSJim Jagielski 		}
1634*b1cdbd2cSJim Jagielski 	}
1635*b1cdbd2cSJim Jagielski }
1636*b1cdbd2cSJim Jagielski 
1637*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1638*b1cdbd2cSJim Jagielski 
IMPL_LINK_INLINE_START(SvxPageDescPage,CenterHdl_Impl,CheckBox *,EMPTYARG)1639*b1cdbd2cSJim Jagielski IMPL_LINK_INLINE_START( SvxPageDescPage, CenterHdl_Impl, CheckBox *, EMPTYARG )
1640*b1cdbd2cSJim Jagielski {
1641*b1cdbd2cSJim Jagielski     aBspWin.SetHorz( aHorzBox.IsChecked() );
1642*b1cdbd2cSJim Jagielski     aBspWin.SetVert( aVertBox.IsChecked() );
1643*b1cdbd2cSJim Jagielski     UpdateExample_Impl();
1644*b1cdbd2cSJim Jagielski 	return 0;
1645*b1cdbd2cSJim Jagielski }
IMPL_LINK_INLINE_END(SvxPageDescPage,CenterHdl_Impl,CheckBox *,EMPTYARG)1646*b1cdbd2cSJim Jagielski IMPL_LINK_INLINE_END( SvxPageDescPage, CenterHdl_Impl, CheckBox *, EMPTYARG )
1647*b1cdbd2cSJim Jagielski 
1648*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1649*b1cdbd2cSJim Jagielski 
1650*b1cdbd2cSJim Jagielski void SvxPageDescPage::SetCollectionList(const List* pList)
1651*b1cdbd2cSJim Jagielski {
1652*b1cdbd2cSJim Jagielski 	sStandardRegister = *(String*)pList->GetObject(0);
1653*b1cdbd2cSJim Jagielski 	for( sal_uInt16 i = 1; i < pList->Count(); i++   )
1654*b1cdbd2cSJim Jagielski 	{
1655*b1cdbd2cSJim Jagielski 		aRegisterLB.InsertEntry(*(String*)pList->GetObject(i));
1656*b1cdbd2cSJim Jagielski 	}
1657*b1cdbd2cSJim Jagielski 
1658*b1cdbd2cSJim Jagielski 	aRegisterCB  .Show();
1659*b1cdbd2cSJim Jagielski 	aRegisterFT  .Show();
1660*b1cdbd2cSJim Jagielski 	aRegisterLB.Show();
1661*b1cdbd2cSJim Jagielski 	aRegisterCB.SetClickHdl(LINK(this, SvxPageDescPage, RegisterModify));
1662*b1cdbd2cSJim Jagielski }
1663*b1cdbd2cSJim Jagielski 
1664*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1665*b1cdbd2cSJim Jagielski 
IMPL_LINK(SvxPageDescPage,RegisterModify,CheckBox *,pBox)1666*b1cdbd2cSJim Jagielski IMPL_LINK( SvxPageDescPage, RegisterModify, CheckBox*, pBox )
1667*b1cdbd2cSJim Jagielski {
1668*b1cdbd2cSJim Jagielski 	sal_Bool bEnable = sal_False;
1669*b1cdbd2cSJim Jagielski 	if(pBox->IsChecked())
1670*b1cdbd2cSJim Jagielski 	{
1671*b1cdbd2cSJim Jagielski 		bEnable = sal_True;
1672*b1cdbd2cSJim Jagielski 		if(USHRT_MAX == aRegisterLB.GetSelectEntryPos())
1673*b1cdbd2cSJim Jagielski 			aRegisterLB.SelectEntry(sStandardRegister);
1674*b1cdbd2cSJim Jagielski 	}
1675*b1cdbd2cSJim Jagielski 	aRegisterFT.Enable( bEnable );
1676*b1cdbd2cSJim Jagielski 	aRegisterLB.Enable( bEnable );
1677*b1cdbd2cSJim Jagielski 	return 0;
1678*b1cdbd2cSJim Jagielski }
1679*b1cdbd2cSJim Jagielski 
1680*b1cdbd2cSJim Jagielski // ----------------------------------------------------------------------------
1681*b1cdbd2cSJim Jagielski 
DisableVerticalPageDir()1682*b1cdbd2cSJim Jagielski void SvxPageDescPage::DisableVerticalPageDir()
1683*b1cdbd2cSJim Jagielski {
1684*b1cdbd2cSJim Jagielski     aTextFlowBox.RemoveEntryValue( FRMDIR_VERT_TOP_RIGHT );
1685*b1cdbd2cSJim Jagielski     aTextFlowBox.RemoveEntryValue( FRMDIR_VERT_TOP_LEFT );
1686*b1cdbd2cSJim Jagielski     if( aTextFlowBox.GetEntryCount() < 2 )
1687*b1cdbd2cSJim Jagielski     {
1688*b1cdbd2cSJim Jagielski         aTextFlowLbl.Hide();
1689*b1cdbd2cSJim Jagielski         aTextFlowBox.Hide();
1690*b1cdbd2cSJim Jagielski         aBspWin.EnableFrameDirection( sal_False );
1691*b1cdbd2cSJim Jagielski     }
1692*b1cdbd2cSJim Jagielski }
1693*b1cdbd2cSJim Jagielski 
IMPL_LINK(SvxPageDescPage,FrameDirectionModify_Impl,ListBox *,EMPTYARG)1694*b1cdbd2cSJim Jagielski IMPL_LINK( SvxPageDescPage, FrameDirectionModify_Impl, ListBox*,  EMPTYARG)
1695*b1cdbd2cSJim Jagielski {
1696*b1cdbd2cSJim Jagielski     aBspWin.SetFrameDirection( (sal_uInt32) aTextFlowBox.GetSelectEntryValue() );
1697*b1cdbd2cSJim Jagielski     aBspWin.Invalidate();
1698*b1cdbd2cSJim Jagielski     return 0;
1699*b1cdbd2cSJim Jagielski }
1700*b1cdbd2cSJim Jagielski 
IsPrinterRangeOverflow(MetricField & rField,long nFirstMargin,long nLastMargin,MarginPosition nPos)1701*b1cdbd2cSJim Jagielski bool SvxPageDescPage::IsPrinterRangeOverflow(
1702*b1cdbd2cSJim Jagielski 	MetricField& rField, long nFirstMargin, long nLastMargin, MarginPosition nPos )
1703*b1cdbd2cSJim Jagielski {
1704*b1cdbd2cSJim Jagielski 	bool bRet = false;
1705*b1cdbd2cSJim Jagielski 	bool bCheck = ( ( pImpl->m_nPos & nPos ) == 0 );
1706*b1cdbd2cSJim Jagielski 	long nValue = static_cast<long>(rField.GetValue());
1707*b1cdbd2cSJim Jagielski 	if ( bCheck &&
1708*b1cdbd2cSJim Jagielski 		 (  nValue < nFirstMargin || nValue > nLastMargin ) &&
1709*b1cdbd2cSJim Jagielski 		 rField.GetText() != rField.GetSavedValue() )
1710*b1cdbd2cSJim Jagielski 	{
1711*b1cdbd2cSJim Jagielski 		rField.SetValue( nValue < nFirstMargin ? nFirstMargin : nLastMargin );
1712*b1cdbd2cSJim Jagielski  		bRet = true;
1713*b1cdbd2cSJim Jagielski 	}
1714*b1cdbd2cSJim Jagielski 
1715*b1cdbd2cSJim Jagielski 	return bRet;
1716*b1cdbd2cSJim Jagielski }
1717*b1cdbd2cSJim Jagielski 
1718*b1cdbd2cSJim Jagielski /** Check if a value of a margin edit is outside the printer paper margins
1719*b1cdbd2cSJim Jagielski 	and save this information.
1720*b1cdbd2cSJim Jagielski */
CheckMarginEdits(bool _bClear)1721*b1cdbd2cSJim Jagielski void SvxPageDescPage::CheckMarginEdits( bool _bClear )
1722*b1cdbd2cSJim Jagielski {
1723*b1cdbd2cSJim Jagielski 	if ( _bClear )
1724*b1cdbd2cSJim Jagielski 		pImpl->m_nPos = 0;
1725*b1cdbd2cSJim Jagielski 
1726*b1cdbd2cSJim Jagielski 	sal_Int64 nValue = aLeftMarginEdit.GetValue();
1727*b1cdbd2cSJim Jagielski 	if (  nValue < nFirstLeftMargin || nValue > nLastLeftMargin )
1728*b1cdbd2cSJim Jagielski 		pImpl->m_nPos |= MARGIN_LEFT;
1729*b1cdbd2cSJim Jagielski 	nValue = aRightMarginEdit.GetValue();
1730*b1cdbd2cSJim Jagielski 	if (  nValue < nFirstRightMargin || nValue > nLastRightMargin )
1731*b1cdbd2cSJim Jagielski 		pImpl->m_nPos |= MARGIN_RIGHT;
1732*b1cdbd2cSJim Jagielski 	nValue = aTopMarginEdit.GetValue();
1733*b1cdbd2cSJim Jagielski 	if (  nValue < nFirstTopMargin || nValue > nLastTopMargin )
1734*b1cdbd2cSJim Jagielski 		pImpl->m_nPos |= MARGIN_TOP;
1735*b1cdbd2cSJim Jagielski 	nValue = aBottomMarginEdit.GetValue();
1736*b1cdbd2cSJim Jagielski 	if (  nValue < nFirstBottomMargin || nValue > nLastBottomMargin )
1737*b1cdbd2cSJim Jagielski 		pImpl->m_nPos |= MARGIN_BOTTOM;
1738*b1cdbd2cSJim Jagielski }
1739*b1cdbd2cSJim Jagielski 
IsMarginOutOfRange()1740*b1cdbd2cSJim Jagielski bool SvxPageDescPage::IsMarginOutOfRange()
1741*b1cdbd2cSJim Jagielski {
1742*b1cdbd2cSJim Jagielski 	bool bRet = ( ( ( !( pImpl->m_nPos & MARGIN_LEFT ) &&
1743*b1cdbd2cSJim Jagielski 					  ( aLeftMarginEdit.GetText() != aLeftMarginEdit.GetSavedValue() ) ) &&
1744*b1cdbd2cSJim Jagielski 					( aLeftMarginEdit.GetValue() < nFirstLeftMargin ||
1745*b1cdbd2cSJim Jagielski 					  aLeftMarginEdit.GetValue() > nLastLeftMargin ) ) ||
1746*b1cdbd2cSJim Jagielski 				  ( ( !( pImpl->m_nPos & MARGIN_RIGHT ) &&
1747*b1cdbd2cSJim Jagielski 					  ( aRightMarginEdit.GetText() != aRightMarginEdit.GetSavedValue() ) ) &&
1748*b1cdbd2cSJim Jagielski 					( aRightMarginEdit.GetValue() < nFirstRightMargin ||
1749*b1cdbd2cSJim Jagielski 					  aRightMarginEdit.GetValue() > nLastRightMargin ) ) ||
1750*b1cdbd2cSJim Jagielski 				  ( ( !( pImpl->m_nPos & MARGIN_TOP ) &&
1751*b1cdbd2cSJim Jagielski 					  ( aTopMarginEdit.GetText() != aTopMarginEdit.GetSavedValue() ) ) &&
1752*b1cdbd2cSJim Jagielski 					( aTopMarginEdit.GetValue() < nFirstTopMargin ||
1753*b1cdbd2cSJim Jagielski 					  aTopMarginEdit.GetValue() > nLastTopMargin ) ) ||
1754*b1cdbd2cSJim Jagielski 				  ( ( !( pImpl->m_nPos & MARGIN_BOTTOM ) &&
1755*b1cdbd2cSJim Jagielski 					  ( aBottomMarginEdit.GetText() != aBottomMarginEdit.GetSavedValue() ) ) &&
1756*b1cdbd2cSJim Jagielski 					( aBottomMarginEdit.GetValue() < nFirstBottomMargin ||
1757*b1cdbd2cSJim Jagielski 					  aBottomMarginEdit.GetValue() > nLastBottomMargin ) ) );
1758*b1cdbd2cSJim Jagielski 	return bRet;
1759*b1cdbd2cSJim Jagielski }
1760*b1cdbd2cSJim Jagielski 
PageCreated(SfxAllItemSet aSet)1761*b1cdbd2cSJim Jagielski void SvxPageDescPage::PageCreated (SfxAllItemSet aSet) //add CHINA001
1762*b1cdbd2cSJim Jagielski {
1763*b1cdbd2cSJim Jagielski 	SFX_ITEMSET_ARG (&aSet,pModeItem,SfxAllEnumItem,SID_ENUM_PAGE_MODE,sal_False);
1764*b1cdbd2cSJim Jagielski 	SFX_ITEMSET_ARG (&aSet,pPaperStartItem,SfxAllEnumItem,SID_PAPER_START,sal_False);
1765*b1cdbd2cSJim Jagielski 	SFX_ITEMSET_ARG (&aSet,pPaperEndItem,SfxAllEnumItem,SID_PAPER_END,sal_False);
1766*b1cdbd2cSJim Jagielski 	SFX_ITEMSET_ARG (&aSet,pCollectListItem,SfxStringListItem,SID_COLLECT_LIST,sal_False);
1767*b1cdbd2cSJim Jagielski 	if (pModeItem)
1768*b1cdbd2cSJim Jagielski 		SetMode((SvxModeType)pModeItem->GetEnumValue());
1769*b1cdbd2cSJim Jagielski 	if (pPaperStartItem && pPaperEndItem)
1770*b1cdbd2cSJim Jagielski 		SetPaperFormatRanges( (Paper)pPaperStartItem->GetEnumValue(), (Paper)pPaperEndItem->GetEnumValue() );
1771*b1cdbd2cSJim Jagielski 	if (pCollectListItem)
1772*b1cdbd2cSJim Jagielski 		SetCollectionList(pCollectListItem->GetList());
1773*b1cdbd2cSJim Jagielski }
1774