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