xref: /AOO41X/main/cui/source/tabpages/measure.cxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir 
28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
29*cdf0e10cSrcweir #include "precompiled_cui.hxx"
30*cdf0e10cSrcweir 
31*cdf0e10cSrcweir // include ---------------------------------------------------------------
32*cdf0e10cSrcweir #include <sfx2/app.hxx>
33*cdf0e10cSrcweir #include <sfx2/module.hxx>
34*cdf0e10cSrcweir #include <tools/shl.hxx>
35*cdf0e10cSrcweir 
36*cdf0e10cSrcweir #include <cuires.hrc>
37*cdf0e10cSrcweir 
38*cdf0e10cSrcweir #define _SVX_MEASURE_CXX
39*cdf0e10cSrcweir 
40*cdf0e10cSrcweir #include <svx/svdomeas.hxx>
41*cdf0e10cSrcweir #include <svx/svdattr.hxx>
42*cdf0e10cSrcweir #include <svx/svdattrx.hxx>
43*cdf0e10cSrcweir #include <svx/svdview.hxx>
44*cdf0e10cSrcweir #include <svx/dialogs.hrc>
45*cdf0e10cSrcweir #include <svx/dialmgr.hxx>
46*cdf0e10cSrcweir #include "svx/measctrl.hxx"
47*cdf0e10cSrcweir #include "measure.hxx"
48*cdf0e10cSrcweir #include "measure.hrc"
49*cdf0e10cSrcweir #include <dialmgr.hxx>
50*cdf0e10cSrcweir #include "svx/dlgutil.hxx"
51*cdf0e10cSrcweir #include <svx/strarray.hxx>
52*cdf0e10cSrcweir #include <sfx2/request.hxx> //add CHINA001
53*cdf0e10cSrcweir #include "svx/ofaitem.hxx" //add CHINA001
54*cdf0e10cSrcweir 
55*cdf0e10cSrcweir static sal_uInt16 pRanges[] =
56*cdf0e10cSrcweir {
57*cdf0e10cSrcweir 	SDRATTR_MEASURE_FIRST,
58*cdf0e10cSrcweir 	SDRATTR_MEASURE_LAST,
59*cdf0e10cSrcweir 	0
60*cdf0e10cSrcweir };
61*cdf0e10cSrcweir 
62*cdf0e10cSrcweir /*************************************************************************
63*cdf0e10cSrcweir |*
64*cdf0e10cSrcweir |* Dialog to change measure-attributes
65*cdf0e10cSrcweir |*
66*cdf0e10cSrcweir \************************************************************************/
67*cdf0e10cSrcweir 
68*cdf0e10cSrcweir SvxMeasureDialog::SvxMeasureDialog( Window* pParent, const SfxItemSet& rInAttrs,
69*cdf0e10cSrcweir 								const SdrView* pSdrView ) :
70*cdf0e10cSrcweir 		SfxSingleTabDialog( pParent, rInAttrs, RID_SVXPAGE_MEASURE )
71*cdf0e10cSrcweir {
72*cdf0e10cSrcweir     SvxMeasurePage* _pPage = new SvxMeasurePage( this, rInAttrs );
73*cdf0e10cSrcweir 
74*cdf0e10cSrcweir     _pPage->SetView( pSdrView );
75*cdf0e10cSrcweir     _pPage->Construct();
76*cdf0e10cSrcweir 
77*cdf0e10cSrcweir     SetTabPage( _pPage );
78*cdf0e10cSrcweir     SetText( _pPage->GetText() );
79*cdf0e10cSrcweir }
80*cdf0e10cSrcweir 
81*cdf0e10cSrcweir /*************************************************************************
82*cdf0e10cSrcweir |*
83*cdf0e10cSrcweir |* Dtor
84*cdf0e10cSrcweir |*
85*cdf0e10cSrcweir \************************************************************************/
86*cdf0e10cSrcweir 
87*cdf0e10cSrcweir SvxMeasureDialog::~SvxMeasureDialog()
88*cdf0e10cSrcweir {
89*cdf0e10cSrcweir }
90*cdf0e10cSrcweir 
91*cdf0e10cSrcweir /*************************************************************************
92*cdf0e10cSrcweir |*
93*cdf0e10cSrcweir |* Tabpage for changing measure-attributes
94*cdf0e10cSrcweir |*
95*cdf0e10cSrcweir \************************************************************************/
96*cdf0e10cSrcweir 
97*cdf0e10cSrcweir SvxMeasurePage::SvxMeasurePage( Window* pWindow, const SfxItemSet& rInAttrs ) :
98*cdf0e10cSrcweir 				SvxTabPage		( pWindow, CUI_RES( RID_SVXPAGE_MEASURE ),
99*cdf0e10cSrcweir 								  rInAttrs ),
100*cdf0e10cSrcweir 
101*cdf0e10cSrcweir         aFlLine                 ( this, CUI_RES( FL_LINE ) ),
102*cdf0e10cSrcweir 		aFtLineDist				( this, CUI_RES( FT_LINE_DIST ) ),
103*cdf0e10cSrcweir 		aMtrFldLineDist			( this, CUI_RES( MTR_LINE_DIST ) ),
104*cdf0e10cSrcweir 		aFtHelplineOverhang		( this, CUI_RES( FT_HELPLINE_OVERHANG ) ),
105*cdf0e10cSrcweir 		aMtrFldHelplineOverhang	( this, CUI_RES( MTR_FLD_HELPLINE_OVERHANG ) ),
106*cdf0e10cSrcweir 		aFtHelplineDist			( this, CUI_RES( FT_HELPLINE_DIST ) ),
107*cdf0e10cSrcweir 		aMtrFldHelplineDist		( this, CUI_RES( MTR_FLD_HELPLINE_DIST ) ),
108*cdf0e10cSrcweir 		aFtHelpline1Len			( this, CUI_RES( FT_HELPLINE1_LEN ) ),
109*cdf0e10cSrcweir 		aMtrFldHelpline1Len		( this, CUI_RES( MTR_FLD_HELPLINE1_LEN ) ),
110*cdf0e10cSrcweir 		aFtHelpline2Len			( this, CUI_RES( FT_HELPLINE2_LEN ) ),
111*cdf0e10cSrcweir 		aMtrFldHelpline2Len		( this, CUI_RES( MTR_FLD_HELPLINE2_LEN ) ),
112*cdf0e10cSrcweir 		aTsbBelowRefEdge		( this, CUI_RES( TSB_BELOW_REF_EDGE ) ),
113*cdf0e10cSrcweir 		aFtDecimalPlaces		( this, CUI_RES( FT_DECIMALPLACES ) ),
114*cdf0e10cSrcweir 		aMtrFldDecimalPlaces	( this, CUI_RES( MTR_FLD_DECIMALPLACES ) ),
115*cdf0e10cSrcweir 
116*cdf0e10cSrcweir 		aFlLabel    			( this, CUI_RES( FL_LABEL ) ),
117*cdf0e10cSrcweir         aFtPosition             ( this, CUI_RES( FT_POSITION ) ),
118*cdf0e10cSrcweir         aCtlPosition            ( this, CUI_RES( CTL_POSITION ) ),
119*cdf0e10cSrcweir         aTsbAutoPosV            ( this, CUI_RES( TSB_AUTOPOSV ) ),
120*cdf0e10cSrcweir         aTsbAutoPosH            ( this, CUI_RES( TSB_AUTOPOSH ) ),
121*cdf0e10cSrcweir         aTsbShowUnit            ( this, CUI_RES( TSB_SHOW_UNIT ) ),
122*cdf0e10cSrcweir         aLbUnit                 ( this, CUI_RES( LB_UNIT ) ),
123*cdf0e10cSrcweir         aTsbParallel            ( this, CUI_RES( TSB_PARALLEL ) ),
124*cdf0e10cSrcweir         aCtlPreview             ( this, CUI_RES( CTL_PREVIEW ), rInAttrs ),
125*cdf0e10cSrcweir 
126*cdf0e10cSrcweir         aFlVert                 ( this, CUI_RES( FL_VERT ) ),
127*cdf0e10cSrcweir         rOutAttrs               ( rInAttrs ),
128*cdf0e10cSrcweir         aAttrSet                ( *rInAttrs.GetPool() ),
129*cdf0e10cSrcweir         pView( 0 ),
130*cdf0e10cSrcweir 
131*cdf0e10cSrcweir         bPositionModified       ( sal_False )
132*cdf0e10cSrcweir {
133*cdf0e10cSrcweir 	aCtlPreview.SetAccessibleName(aCtlPreview.GetHelpText());
134*cdf0e10cSrcweir 	FillUnitLB();
135*cdf0e10cSrcweir 
136*cdf0e10cSrcweir 	FreeResource();
137*cdf0e10cSrcweir 
138*cdf0e10cSrcweir 	const FieldUnit eFUnit = GetModuleFieldUnit( rInAttrs );
139*cdf0e10cSrcweir 	SetFieldUnit( aMtrFldLineDist, eFUnit );
140*cdf0e10cSrcweir 	SetFieldUnit( aMtrFldHelplineOverhang, eFUnit );
141*cdf0e10cSrcweir 	SetFieldUnit( aMtrFldHelplineDist, eFUnit );
142*cdf0e10cSrcweir 	SetFieldUnit( aMtrFldHelpline1Len, eFUnit );
143*cdf0e10cSrcweir 	SetFieldUnit( aMtrFldHelpline2Len, eFUnit );
144*cdf0e10cSrcweir 	if( eFUnit == FUNIT_MM )
145*cdf0e10cSrcweir 	{
146*cdf0e10cSrcweir 		aMtrFldLineDist.SetSpinSize( 50 );
147*cdf0e10cSrcweir 		aMtrFldHelplineOverhang.SetSpinSize( 50 );
148*cdf0e10cSrcweir 		aMtrFldHelplineDist.SetSpinSize( 50 );
149*cdf0e10cSrcweir 		aMtrFldHelpline1Len.SetSpinSize( 50 );
150*cdf0e10cSrcweir 		aMtrFldHelpline2Len.SetSpinSize( 50 );
151*cdf0e10cSrcweir 	}
152*cdf0e10cSrcweir 
153*cdf0e10cSrcweir 	aTsbAutoPosV.SetClickHdl( LINK( this, SvxMeasurePage, ClickAutoPosHdl_Impl ) );
154*cdf0e10cSrcweir 	aTsbAutoPosH.SetClickHdl( LINK( this, SvxMeasurePage, ClickAutoPosHdl_Impl ) );
155*cdf0e10cSrcweir 
156*cdf0e10cSrcweir 	// set background and border of iconchoicectrl
157*cdf0e10cSrcweir 	const StyleSettings& rStyles = Application::GetSettings().GetStyleSettings();
158*cdf0e10cSrcweir 	aCtlPreview.SetBackground ( rStyles.GetWindowColor() );
159*cdf0e10cSrcweir 	aCtlPreview.SetBorderStyle(WINDOW_BORDER_MONO);
160*cdf0e10cSrcweir 
161*cdf0e10cSrcweir 	Link aLink( LINK( this, SvxMeasurePage, ChangeAttrHdl_Impl ) );
162*cdf0e10cSrcweir 	aMtrFldLineDist.SetModifyHdl( aLink );
163*cdf0e10cSrcweir 	aMtrFldHelplineOverhang.SetModifyHdl( aLink );
164*cdf0e10cSrcweir 	aMtrFldHelplineDist.SetModifyHdl( aLink );
165*cdf0e10cSrcweir 	aMtrFldHelpline1Len.SetModifyHdl( aLink );
166*cdf0e10cSrcweir 	aMtrFldHelpline2Len.SetModifyHdl( aLink );
167*cdf0e10cSrcweir 	aMtrFldDecimalPlaces.SetModifyHdl( aLink );
168*cdf0e10cSrcweir 	aTsbBelowRefEdge.SetClickHdl( aLink );
169*cdf0e10cSrcweir 	aTsbParallel.SetClickHdl( aLink );
170*cdf0e10cSrcweir 	aTsbShowUnit.SetClickHdl( aLink );
171*cdf0e10cSrcweir 	aLbUnit.SetSelectHdl( aLink );
172*cdf0e10cSrcweir 	aLbUnit.SetAccessibleName(GetNonMnemonicString(aTsbShowUnit.GetText()));
173*cdf0e10cSrcweir 	aCtlPosition.SetAccessibleRelationMemberOf( &aFlLabel );
174*cdf0e10cSrcweir 	aLbUnit.SetAccessibleRelationLabeledBy( &aTsbShowUnit );
175*cdf0e10cSrcweir }
176*cdf0e10cSrcweir 
177*cdf0e10cSrcweir /*************************************************************************
178*cdf0e10cSrcweir |*
179*cdf0e10cSrcweir |* Dtor
180*cdf0e10cSrcweir |*
181*cdf0e10cSrcweir \************************************************************************/
182*cdf0e10cSrcweir 
183*cdf0e10cSrcweir SvxMeasurePage::~SvxMeasurePage()
184*cdf0e10cSrcweir {
185*cdf0e10cSrcweir }
186*cdf0e10cSrcweir 
187*cdf0e10cSrcweir /*************************************************************************
188*cdf0e10cSrcweir |*
189*cdf0e10cSrcweir |* read the delivered Item-Set
190*cdf0e10cSrcweir |*
191*cdf0e10cSrcweir \************************************************************************/
192*cdf0e10cSrcweir 
193*cdf0e10cSrcweir void __EXPORT SvxMeasurePage::Reset( const SfxItemSet& rAttrs )
194*cdf0e10cSrcweir {
195*cdf0e10cSrcweir 	SfxItemPool* pPool = rAttrs.GetPool();
196*cdf0e10cSrcweir 	DBG_ASSERT( pPool, "Wo ist der Pool" );
197*cdf0e10cSrcweir 	eUnit = pPool->GetMetric( SDRATTR_MEASURELINEDIST );
198*cdf0e10cSrcweir 
199*cdf0e10cSrcweir 	const SfxPoolItem* pItem = GetItem( rAttrs, SDRATTR_MEASURELINEDIST );
200*cdf0e10cSrcweir 
201*cdf0e10cSrcweir 	// SdrMeasureLineDistItem
202*cdf0e10cSrcweir     if( pItem == NULL )
203*cdf0e10cSrcweir         pItem = &pPool->GetDefaultItem( SDRATTR_MEASURELINEDIST );
204*cdf0e10cSrcweir 	if( pItem )
205*cdf0e10cSrcweir 	{
206*cdf0e10cSrcweir 		long nValue = ( ( const SdrMeasureLineDistItem* )pItem )->GetValue();
207*cdf0e10cSrcweir 		SetMetricValue( aMtrFldLineDist, nValue, eUnit );
208*cdf0e10cSrcweir 	}
209*cdf0e10cSrcweir 	else
210*cdf0e10cSrcweir 	{
211*cdf0e10cSrcweir 		aMtrFldLineDist.SetText( String() );
212*cdf0e10cSrcweir 	}
213*cdf0e10cSrcweir 	aMtrFldLineDist.SaveValue();
214*cdf0e10cSrcweir 
215*cdf0e10cSrcweir 	// SdrMeasureHelplineOverhangItem
216*cdf0e10cSrcweir 	pItem = GetItem( rAttrs, SDRATTR_MEASUREHELPLINEOVERHANG );
217*cdf0e10cSrcweir     if( pItem == NULL )
218*cdf0e10cSrcweir         pItem = &pPool->GetDefaultItem( SDRATTR_MEASUREHELPLINEOVERHANG );
219*cdf0e10cSrcweir 	if( pItem )
220*cdf0e10cSrcweir 	{
221*cdf0e10cSrcweir 		long nValue = ( ( const SdrMeasureHelplineOverhangItem* )pItem )->GetValue();
222*cdf0e10cSrcweir 		SetMetricValue( aMtrFldHelplineOverhang, nValue, eUnit );
223*cdf0e10cSrcweir 	}
224*cdf0e10cSrcweir 	else
225*cdf0e10cSrcweir 	{
226*cdf0e10cSrcweir 		aMtrFldHelplineOverhang.SetText( String() );
227*cdf0e10cSrcweir 	}
228*cdf0e10cSrcweir 	aMtrFldHelplineOverhang.SaveValue();
229*cdf0e10cSrcweir 
230*cdf0e10cSrcweir 	// SdrMeasureHelplineDistItem
231*cdf0e10cSrcweir 	pItem = GetItem( rAttrs, SDRATTR_MEASUREHELPLINEDIST );
232*cdf0e10cSrcweir     if( pItem == NULL )
233*cdf0e10cSrcweir         pItem = &pPool->GetDefaultItem( SDRATTR_MEASUREHELPLINEDIST );
234*cdf0e10cSrcweir 	if( pItem )
235*cdf0e10cSrcweir 	{
236*cdf0e10cSrcweir 		long nValue = ( ( const SdrMeasureHelplineDistItem* )pItem )->GetValue();
237*cdf0e10cSrcweir 		SetMetricValue( aMtrFldHelplineDist, nValue, eUnit );
238*cdf0e10cSrcweir 	}
239*cdf0e10cSrcweir 	else
240*cdf0e10cSrcweir 	{
241*cdf0e10cSrcweir 		aMtrFldHelplineDist.SetText( String() );
242*cdf0e10cSrcweir 	}
243*cdf0e10cSrcweir 	aMtrFldHelplineDist.SaveValue();
244*cdf0e10cSrcweir 
245*cdf0e10cSrcweir 	// SdrMeasureHelpline1LenItem
246*cdf0e10cSrcweir 	pItem = GetItem( rAttrs, SDRATTR_MEASUREHELPLINE1LEN );
247*cdf0e10cSrcweir     if( pItem == NULL )
248*cdf0e10cSrcweir         pItem = &pPool->GetDefaultItem( SDRATTR_MEASUREHELPLINE1LEN );
249*cdf0e10cSrcweir 	if( pItem )
250*cdf0e10cSrcweir 	{
251*cdf0e10cSrcweir 		long nValue = ( ( const SdrMeasureHelpline1LenItem* )pItem )->GetValue();
252*cdf0e10cSrcweir 		SetMetricValue( aMtrFldHelpline1Len, nValue, eUnit );
253*cdf0e10cSrcweir 	}
254*cdf0e10cSrcweir 	else
255*cdf0e10cSrcweir 	{
256*cdf0e10cSrcweir 		aMtrFldHelpline1Len.SetText( String() );
257*cdf0e10cSrcweir 	}
258*cdf0e10cSrcweir 	aMtrFldHelpline1Len.SaveValue();
259*cdf0e10cSrcweir 
260*cdf0e10cSrcweir 	// SdrMeasureHelpline2LenItem
261*cdf0e10cSrcweir 	pItem = GetItem( rAttrs, SDRATTR_MEASUREHELPLINE2LEN );
262*cdf0e10cSrcweir     if( pItem == NULL )
263*cdf0e10cSrcweir         pItem = &pPool->GetDefaultItem( SDRATTR_MEASUREHELPLINE2LEN );
264*cdf0e10cSrcweir 	if( pItem )
265*cdf0e10cSrcweir 	{
266*cdf0e10cSrcweir 		long nValue = ( ( const SdrMeasureHelpline2LenItem* )pItem )->GetValue();
267*cdf0e10cSrcweir 		SetMetricValue( aMtrFldHelpline2Len, nValue, eUnit );
268*cdf0e10cSrcweir 	}
269*cdf0e10cSrcweir 	else
270*cdf0e10cSrcweir 	{
271*cdf0e10cSrcweir 		aMtrFldHelpline2Len.SetText( String() );
272*cdf0e10cSrcweir 	}
273*cdf0e10cSrcweir 	aMtrFldHelpline2Len.SaveValue();
274*cdf0e10cSrcweir 
275*cdf0e10cSrcweir 	// SdrMeasureBelowRefEdgeItem
276*cdf0e10cSrcweir 	if( rAttrs.GetItemState( SDRATTR_MEASUREBELOWREFEDGE ) != SFX_ITEM_DONTCARE )
277*cdf0e10cSrcweir 	{
278*cdf0e10cSrcweir 		aTsbBelowRefEdge.SetState( ( ( const SdrMeasureBelowRefEdgeItem& )rAttrs.Get( SDRATTR_MEASUREBELOWREFEDGE ) ).
279*cdf0e10cSrcweir 						GetValue() ? STATE_CHECK : STATE_NOCHECK );
280*cdf0e10cSrcweir 		aTsbBelowRefEdge.EnableTriState( sal_False );
281*cdf0e10cSrcweir 	}
282*cdf0e10cSrcweir 	else
283*cdf0e10cSrcweir 	{
284*cdf0e10cSrcweir 		aTsbBelowRefEdge.SetState( STATE_DONTKNOW );
285*cdf0e10cSrcweir 	}
286*cdf0e10cSrcweir 	aTsbBelowRefEdge.SaveValue();
287*cdf0e10cSrcweir 
288*cdf0e10cSrcweir 	// SdrMeasureDecimalPlacesItem
289*cdf0e10cSrcweir 	pItem = GetItem( rAttrs, SDRATTR_MEASUREDECIMALPLACES );
290*cdf0e10cSrcweir     if( pItem == NULL )
291*cdf0e10cSrcweir         pItem = &pPool->GetDefaultItem( SDRATTR_MEASUREDECIMALPLACES );
292*cdf0e10cSrcweir 	if( pItem )
293*cdf0e10cSrcweir 	{
294*cdf0e10cSrcweir 		sal_Int16 nValue = ( ( const SdrMeasureDecimalPlacesItem* )pItem )->GetValue();
295*cdf0e10cSrcweir 		aMtrFldDecimalPlaces.SetValue( nValue );
296*cdf0e10cSrcweir 	}
297*cdf0e10cSrcweir 	else
298*cdf0e10cSrcweir 	{
299*cdf0e10cSrcweir 		aMtrFldDecimalPlaces.SetText( String() );
300*cdf0e10cSrcweir 	}
301*cdf0e10cSrcweir 	aMtrFldDecimalPlaces.SaveValue();
302*cdf0e10cSrcweir 
303*cdf0e10cSrcweir 	// SdrMeasureTextRota90Item
304*cdf0e10cSrcweir 	// Attention: negate !
305*cdf0e10cSrcweir 	if( rAttrs.GetItemState( SDRATTR_MEASURETEXTROTA90 ) != SFX_ITEM_DONTCARE )
306*cdf0e10cSrcweir 	{
307*cdf0e10cSrcweir 		aTsbParallel.SetState( ( ( const SdrMeasureTextRota90Item& )rAttrs.Get( SDRATTR_MEASURETEXTROTA90 ) ).
308*cdf0e10cSrcweir 						GetValue() ? STATE_NOCHECK : STATE_CHECK );
309*cdf0e10cSrcweir 		aTsbParallel.EnableTriState( sal_False );
310*cdf0e10cSrcweir 	}
311*cdf0e10cSrcweir 	else
312*cdf0e10cSrcweir 	{
313*cdf0e10cSrcweir 		aTsbParallel.SetState( STATE_DONTKNOW );
314*cdf0e10cSrcweir 	}
315*cdf0e10cSrcweir 	aTsbParallel.SaveValue();
316*cdf0e10cSrcweir 
317*cdf0e10cSrcweir 	// SdrMeasureShowUnitItem
318*cdf0e10cSrcweir 	if( rAttrs.GetItemState( SDRATTR_MEASURESHOWUNIT ) != SFX_ITEM_DONTCARE )
319*cdf0e10cSrcweir 	{
320*cdf0e10cSrcweir 		aTsbShowUnit.SetState( ( ( const SdrMeasureShowUnitItem& )rAttrs.Get( SDRATTR_MEASURESHOWUNIT ) ).
321*cdf0e10cSrcweir 						GetValue() ? STATE_CHECK : STATE_NOCHECK );
322*cdf0e10cSrcweir 		aTsbShowUnit.EnableTriState( sal_False );
323*cdf0e10cSrcweir 	}
324*cdf0e10cSrcweir 	else
325*cdf0e10cSrcweir 	{
326*cdf0e10cSrcweir 		aTsbShowUnit.SetState( STATE_DONTKNOW );
327*cdf0e10cSrcweir 	}
328*cdf0e10cSrcweir 	aTsbShowUnit.SaveValue();
329*cdf0e10cSrcweir 
330*cdf0e10cSrcweir 	// SdrMeasureUnitItem
331*cdf0e10cSrcweir 	if( rAttrs.GetItemState( SDRATTR_MEASUREUNIT ) != SFX_ITEM_DONTCARE )
332*cdf0e10cSrcweir 	{
333*cdf0e10cSrcweir 		long nFieldUnit = (long) ( ( const SdrMeasureUnitItem& )rAttrs.
334*cdf0e10cSrcweir 									Get( SDRATTR_MEASUREUNIT ) ).GetValue();
335*cdf0e10cSrcweir 
336*cdf0e10cSrcweir 		for( sal_uInt16 i = 0; i < aLbUnit.GetEntryCount(); ++i )
337*cdf0e10cSrcweir 		{
338*cdf0e10cSrcweir 			if ( (long)aLbUnit.GetEntryData( i ) == nFieldUnit )
339*cdf0e10cSrcweir 			{
340*cdf0e10cSrcweir 				aLbUnit.SelectEntryPos( i );
341*cdf0e10cSrcweir 				break;
342*cdf0e10cSrcweir 			}
343*cdf0e10cSrcweir 		}
344*cdf0e10cSrcweir 	}
345*cdf0e10cSrcweir 	else
346*cdf0e10cSrcweir 	{
347*cdf0e10cSrcweir 		aLbUnit.SetNoSelection();
348*cdf0e10cSrcweir 	}
349*cdf0e10cSrcweir 	aLbUnit.SaveValue();
350*cdf0e10cSrcweir 
351*cdf0e10cSrcweir 	// Position
352*cdf0e10cSrcweir 	if ( rAttrs.GetItemState( SDRATTR_MEASURETEXTVPOS ) != SFX_ITEM_DONTCARE )
353*cdf0e10cSrcweir 	{
354*cdf0e10cSrcweir 		SdrMeasureTextVPos eVPos = (SdrMeasureTextVPos)
355*cdf0e10cSrcweir 					( ( const SdrMeasureTextVPosItem& )rAttrs.Get( SDRATTR_MEASURETEXTVPOS ) ).GetValue();
356*cdf0e10cSrcweir 		{
357*cdf0e10cSrcweir 			if ( rAttrs.GetItemState( SDRATTR_MEASURETEXTHPOS ) != SFX_ITEM_DONTCARE )
358*cdf0e10cSrcweir 			{
359*cdf0e10cSrcweir 				aTsbAutoPosV.EnableTriState( sal_False );
360*cdf0e10cSrcweir 				aTsbAutoPosH.EnableTriState( sal_False );
361*cdf0e10cSrcweir 
362*cdf0e10cSrcweir 				SdrMeasureTextHPos eHPos = (SdrMeasureTextHPos)
363*cdf0e10cSrcweir 							( ( const SdrMeasureTextHPosItem& )rAttrs.Get( SDRATTR_MEASURETEXTHPOS ) ).GetValue();
364*cdf0e10cSrcweir 				RECT_POINT eRP = RP_MM;
365*cdf0e10cSrcweir 				switch( eVPos )
366*cdf0e10cSrcweir 				{
367*cdf0e10cSrcweir 				case SDRMEASURE_ABOVE:
368*cdf0e10cSrcweir 					switch( eHPos )
369*cdf0e10cSrcweir 					{
370*cdf0e10cSrcweir 					case SDRMEASURE_TEXTLEFTOUTSIDE:	eRP = RP_LT; break;
371*cdf0e10cSrcweir 					case SDRMEASURE_TEXTINSIDE:			eRP = RP_MT; break;
372*cdf0e10cSrcweir 					case SDRMEASURE_TEXTRIGHTOUTSIDE:	eRP = RP_RT; break;
373*cdf0e10cSrcweir 					case SDRMEASURE_TEXTHAUTO:			eRP = RP_MT; break;
374*cdf0e10cSrcweir 					}
375*cdf0e10cSrcweir 					break;
376*cdf0e10cSrcweir 				case SDRMEASURETEXT_VERTICALCENTERED:
377*cdf0e10cSrcweir 					switch( eHPos )
378*cdf0e10cSrcweir 					{
379*cdf0e10cSrcweir 					case SDRMEASURE_TEXTLEFTOUTSIDE:	eRP = RP_LM; break;
380*cdf0e10cSrcweir 					case SDRMEASURE_TEXTINSIDE:			eRP = RP_MM; break;
381*cdf0e10cSrcweir 					case SDRMEASURE_TEXTRIGHTOUTSIDE:	eRP = RP_RM; break;
382*cdf0e10cSrcweir 					case SDRMEASURE_TEXTHAUTO:			eRP = RP_MM; break;
383*cdf0e10cSrcweir 					}
384*cdf0e10cSrcweir 					break;
385*cdf0e10cSrcweir 				case SDRMEASURE_BELOW:
386*cdf0e10cSrcweir 					switch( eHPos )
387*cdf0e10cSrcweir 					{
388*cdf0e10cSrcweir 					case SDRMEASURE_TEXTLEFTOUTSIDE:	eRP = RP_LB; break;
389*cdf0e10cSrcweir 					case SDRMEASURE_TEXTINSIDE:			eRP = RP_MB; break;
390*cdf0e10cSrcweir 					case SDRMEASURE_TEXTRIGHTOUTSIDE:	eRP = RP_RB; break;
391*cdf0e10cSrcweir 					case SDRMEASURE_TEXTHAUTO:			eRP = RP_MB; break;
392*cdf0e10cSrcweir 					}
393*cdf0e10cSrcweir 					break;
394*cdf0e10cSrcweir 				case SDRMEASURE_TEXTVAUTO:
395*cdf0e10cSrcweir 					switch( eHPos )
396*cdf0e10cSrcweir 					{
397*cdf0e10cSrcweir 					case SDRMEASURE_TEXTLEFTOUTSIDE:	eRP = RP_LM; break;
398*cdf0e10cSrcweir 					case SDRMEASURE_TEXTINSIDE:			eRP = RP_MM; break;
399*cdf0e10cSrcweir 					case SDRMEASURE_TEXTRIGHTOUTSIDE:	eRP = RP_RM; break;
400*cdf0e10cSrcweir 					case SDRMEASURE_TEXTHAUTO:			eRP = RP_MM; break;
401*cdf0e10cSrcweir 					}
402*cdf0e10cSrcweir 					break;
403*cdf0e10cSrcweir                  default: ;//prevent warning
404*cdf0e10cSrcweir 				}
405*cdf0e10cSrcweir 
406*cdf0e10cSrcweir 				CTL_STATE nState = 0;
407*cdf0e10cSrcweir 
408*cdf0e10cSrcweir 				if( eHPos == SDRMEASURE_TEXTHAUTO )
409*cdf0e10cSrcweir 				{
410*cdf0e10cSrcweir 					aTsbAutoPosH.SetState( STATE_CHECK );
411*cdf0e10cSrcweir 					nState = CS_NOHORZ;
412*cdf0e10cSrcweir 				}
413*cdf0e10cSrcweir 
414*cdf0e10cSrcweir 				if( eVPos == SDRMEASURE_TEXTVAUTO )
415*cdf0e10cSrcweir 				{
416*cdf0e10cSrcweir 					aTsbAutoPosV.SetState( STATE_CHECK );
417*cdf0e10cSrcweir 					nState |= CS_NOVERT;
418*cdf0e10cSrcweir 				}
419*cdf0e10cSrcweir 
420*cdf0e10cSrcweir 				aCtlPosition.SetState( nState );
421*cdf0e10cSrcweir 				aCtlPosition.SetActualRP( eRP );
422*cdf0e10cSrcweir 			}
423*cdf0e10cSrcweir 		}
424*cdf0e10cSrcweir 	}
425*cdf0e10cSrcweir 	else
426*cdf0e10cSrcweir 	{
427*cdf0e10cSrcweir 		aCtlPosition.Reset();
428*cdf0e10cSrcweir 		aTsbAutoPosV.SetState( STATE_DONTKNOW );
429*cdf0e10cSrcweir 		aTsbAutoPosH.SetState( STATE_DONTKNOW );
430*cdf0e10cSrcweir 	}
431*cdf0e10cSrcweir 
432*cdf0e10cSrcweir 	// put the attributes to the preview-control,
433*cdf0e10cSrcweir 	// otherwise the control don't know about
434*cdf0e10cSrcweir 	// the settings of the dialog (#67930)
435*cdf0e10cSrcweir 	ChangeAttrHdl_Impl( &aTsbShowUnit );
436*cdf0e10cSrcweir 	aCtlPreview.SetAttributes( rAttrs );
437*cdf0e10cSrcweir 
438*cdf0e10cSrcweir 	bPositionModified = sal_False;
439*cdf0e10cSrcweir }
440*cdf0e10cSrcweir 
441*cdf0e10cSrcweir /*************************************************************************
442*cdf0e10cSrcweir |*
443*cdf0e10cSrcweir |* Fill the delivered Item-Set with dialogbox-attributes
444*cdf0e10cSrcweir |*
445*cdf0e10cSrcweir \************************************************************************/
446*cdf0e10cSrcweir 
447*cdf0e10cSrcweir sal_Bool SvxMeasurePage::FillItemSet( SfxItemSet& rAttrs)
448*cdf0e10cSrcweir {
449*cdf0e10cSrcweir 	sal_Bool	 bModified = sal_False;
450*cdf0e10cSrcweir 	sal_Int32	 nValue;
451*cdf0e10cSrcweir 	TriState eState;
452*cdf0e10cSrcweir 
453*cdf0e10cSrcweir 	if( aMtrFldLineDist.GetText() != aMtrFldLineDist.GetSavedValue() )
454*cdf0e10cSrcweir 	{
455*cdf0e10cSrcweir 		nValue = GetCoreValue( aMtrFldLineDist, eUnit );
456*cdf0e10cSrcweir 		rAttrs.Put( SdrMeasureLineDistItem( nValue ) );
457*cdf0e10cSrcweir 		bModified = sal_True;
458*cdf0e10cSrcweir 	}
459*cdf0e10cSrcweir 
460*cdf0e10cSrcweir 	if( aMtrFldHelplineOverhang.GetText() != aMtrFldHelplineOverhang.GetSavedValue() )
461*cdf0e10cSrcweir 	{
462*cdf0e10cSrcweir 		nValue = GetCoreValue( aMtrFldHelplineOverhang, eUnit );
463*cdf0e10cSrcweir 		rAttrs.Put( SdrMeasureHelplineOverhangItem( nValue ) );
464*cdf0e10cSrcweir 		bModified = sal_True;
465*cdf0e10cSrcweir 	}
466*cdf0e10cSrcweir 
467*cdf0e10cSrcweir 	if( aMtrFldHelplineDist.GetText() != aMtrFldHelplineDist.GetSavedValue() )
468*cdf0e10cSrcweir 	{
469*cdf0e10cSrcweir 		nValue = GetCoreValue( aMtrFldHelplineDist, eUnit );
470*cdf0e10cSrcweir 		rAttrs.Put( SdrMeasureHelplineDistItem( nValue ) );
471*cdf0e10cSrcweir 		bModified = sal_True;
472*cdf0e10cSrcweir 	}
473*cdf0e10cSrcweir 
474*cdf0e10cSrcweir 	if( aMtrFldHelpline1Len.GetText() != aMtrFldHelpline1Len.GetSavedValue() )
475*cdf0e10cSrcweir 	{
476*cdf0e10cSrcweir 		nValue = GetCoreValue( aMtrFldHelpline1Len, eUnit );
477*cdf0e10cSrcweir 		rAttrs.Put( SdrMeasureHelpline1LenItem( nValue ) );
478*cdf0e10cSrcweir 		bModified = sal_True;
479*cdf0e10cSrcweir 	}
480*cdf0e10cSrcweir 
481*cdf0e10cSrcweir 	if( aMtrFldHelpline2Len.GetText() != aMtrFldHelpline2Len.GetSavedValue() )
482*cdf0e10cSrcweir 	{
483*cdf0e10cSrcweir 		nValue = GetCoreValue( aMtrFldHelpline2Len, eUnit );
484*cdf0e10cSrcweir 		rAttrs.Put( SdrMeasureHelpline2LenItem( nValue ) );
485*cdf0e10cSrcweir 		bModified = sal_True;
486*cdf0e10cSrcweir 	}
487*cdf0e10cSrcweir 
488*cdf0e10cSrcweir 	eState = aTsbBelowRefEdge.GetState();
489*cdf0e10cSrcweir 	if( eState != aTsbBelowRefEdge.GetSavedValue() )
490*cdf0e10cSrcweir 	{
491*cdf0e10cSrcweir 		rAttrs.Put( SdrMeasureBelowRefEdgeItem( (sal_Bool) STATE_CHECK == eState ) );
492*cdf0e10cSrcweir 		bModified = sal_True;
493*cdf0e10cSrcweir 	}
494*cdf0e10cSrcweir 
495*cdf0e10cSrcweir 	if( aMtrFldDecimalPlaces.GetText() != aMtrFldDecimalPlaces.GetSavedValue() )
496*cdf0e10cSrcweir 	{
497*cdf0e10cSrcweir 		nValue = static_cast<sal_Int32>(aMtrFldDecimalPlaces.GetValue());
498*cdf0e10cSrcweir 		rAttrs.Put(
499*cdf0e10cSrcweir             SdrMeasureDecimalPlacesItem(
500*cdf0e10cSrcweir                 sal::static_int_cast< sal_Int16 >( nValue ) ) );
501*cdf0e10cSrcweir 		bModified = sal_True;
502*cdf0e10cSrcweir 	}
503*cdf0e10cSrcweir 
504*cdf0e10cSrcweir 	eState = aTsbParallel.GetState();
505*cdf0e10cSrcweir 	if( eState != aTsbParallel.GetSavedValue() )
506*cdf0e10cSrcweir 	{
507*cdf0e10cSrcweir 		rAttrs.Put( SdrMeasureTextRota90Item( (sal_Bool) STATE_NOCHECK == eState ) );
508*cdf0e10cSrcweir 		bModified = sal_True;
509*cdf0e10cSrcweir 	}
510*cdf0e10cSrcweir 
511*cdf0e10cSrcweir 	eState = aTsbShowUnit.GetState();
512*cdf0e10cSrcweir 	if( eState != aTsbShowUnit.GetSavedValue() )
513*cdf0e10cSrcweir 	{
514*cdf0e10cSrcweir 		rAttrs.Put( SdrMeasureShowUnitItem( (sal_Bool) STATE_CHECK == eState ) );
515*cdf0e10cSrcweir 		bModified = sal_True;
516*cdf0e10cSrcweir 	}
517*cdf0e10cSrcweir 
518*cdf0e10cSrcweir 	sal_uInt16 nPos = aLbUnit.GetSelectEntryPos();
519*cdf0e10cSrcweir 	if( nPos != aLbUnit.GetSavedValue() )
520*cdf0e10cSrcweir 	{
521*cdf0e10cSrcweir 		if( nPos != LISTBOX_ENTRY_NOTFOUND )
522*cdf0e10cSrcweir 		{
523*cdf0e10cSrcweir 			sal_uInt16 nFieldUnit = (sal_uInt16)(long)aLbUnit.GetEntryData( nPos );
524*cdf0e10cSrcweir             FieldUnit _eUnit = (FieldUnit) nFieldUnit;
525*cdf0e10cSrcweir             rAttrs.Put( SdrMeasureUnitItem( _eUnit ) );
526*cdf0e10cSrcweir 			bModified = sal_True;
527*cdf0e10cSrcweir 		}
528*cdf0e10cSrcweir 	}
529*cdf0e10cSrcweir 
530*cdf0e10cSrcweir //enum SdrMeasureTextHPos {SDRMEASURE_TEXTHAUTO,SDRMEASURE_TEXTLEFTOUTSIDE,SDRMEASURE_TEXTINSIDE,SDRMEASURE_TEXTRIGHTOUTSIDE};
531*cdf0e10cSrcweir //enum SdrMeasureTextVPos {SDRMEASURE_TEXTVAUTO,SDRMEASURE_ABOVE,SDRMEASURETEXT_VERTICALCENTERED,SDRMEASURE_BELOW};
532*cdf0e10cSrcweir 
533*cdf0e10cSrcweir 	if( bPositionModified )
534*cdf0e10cSrcweir 	{
535*cdf0e10cSrcweir 		// Position
536*cdf0e10cSrcweir 		SdrMeasureTextVPos eVPos, eOldVPos;
537*cdf0e10cSrcweir 		SdrMeasureTextHPos eHPos, eOldHPos;
538*cdf0e10cSrcweir 
539*cdf0e10cSrcweir 		RECT_POINT eRP = aCtlPosition.GetActualRP();
540*cdf0e10cSrcweir 		switch( eRP )
541*cdf0e10cSrcweir 		{
542*cdf0e10cSrcweir 			default:
543*cdf0e10cSrcweir 			case RP_LT: eVPos = SDRMEASURE_ABOVE;
544*cdf0e10cSrcweir 						eHPos = SDRMEASURE_TEXTLEFTOUTSIDE; break;
545*cdf0e10cSrcweir 			case RP_LM: eVPos = SDRMEASURETEXT_VERTICALCENTERED;
546*cdf0e10cSrcweir 						eHPos = SDRMEASURE_TEXTLEFTOUTSIDE; break;
547*cdf0e10cSrcweir 			case RP_LB: eVPos = SDRMEASURE_BELOW;
548*cdf0e10cSrcweir 						eHPos = SDRMEASURE_TEXTLEFTOUTSIDE; break;
549*cdf0e10cSrcweir 			case RP_MT: eVPos = SDRMEASURE_ABOVE;
550*cdf0e10cSrcweir 						eHPos = SDRMEASURE_TEXTINSIDE; break;
551*cdf0e10cSrcweir 			case RP_MM: eVPos = SDRMEASURETEXT_VERTICALCENTERED;
552*cdf0e10cSrcweir 						eHPos = SDRMEASURE_TEXTINSIDE; break;
553*cdf0e10cSrcweir 			case RP_MB: eVPos = SDRMEASURE_BELOW;
554*cdf0e10cSrcweir 						eHPos = SDRMEASURE_TEXTINSIDE; break;
555*cdf0e10cSrcweir 			case RP_RT: eVPos = SDRMEASURE_ABOVE;
556*cdf0e10cSrcweir 						eHPos = SDRMEASURE_TEXTRIGHTOUTSIDE; break;
557*cdf0e10cSrcweir 			case RP_RM: eVPos = SDRMEASURETEXT_VERTICALCENTERED;
558*cdf0e10cSrcweir 						eHPos = SDRMEASURE_TEXTRIGHTOUTSIDE; break;
559*cdf0e10cSrcweir 			case RP_RB: eVPos = SDRMEASURE_BELOW;
560*cdf0e10cSrcweir 						eHPos = SDRMEASURE_TEXTRIGHTOUTSIDE; break;
561*cdf0e10cSrcweir 		}
562*cdf0e10cSrcweir 		if( aTsbAutoPosH.GetState() == STATE_CHECK )
563*cdf0e10cSrcweir 			eHPos = SDRMEASURE_TEXTHAUTO;
564*cdf0e10cSrcweir 
565*cdf0e10cSrcweir 		if( aTsbAutoPosV.GetState() == STATE_CHECK )
566*cdf0e10cSrcweir 			eVPos = SDRMEASURE_TEXTVAUTO;
567*cdf0e10cSrcweir 
568*cdf0e10cSrcweir 		if ( rAttrs.GetItemState( SDRATTR_MEASURETEXTVPOS ) != SFX_ITEM_DONTCARE )
569*cdf0e10cSrcweir 		{
570*cdf0e10cSrcweir 			eOldVPos = (SdrMeasureTextVPos)
571*cdf0e10cSrcweir 						( ( const SdrMeasureTextVPosItem& )rOutAttrs.Get( SDRATTR_MEASURETEXTVPOS ) ).GetValue();
572*cdf0e10cSrcweir 			if( eOldVPos != eVPos )
573*cdf0e10cSrcweir 			{
574*cdf0e10cSrcweir 				rAttrs.Put( SdrMeasureTextVPosItem( eVPos ) );
575*cdf0e10cSrcweir 				bModified = sal_True;
576*cdf0e10cSrcweir 			}
577*cdf0e10cSrcweir 		}
578*cdf0e10cSrcweir 		else
579*cdf0e10cSrcweir 		{
580*cdf0e10cSrcweir 			rAttrs.Put( SdrMeasureTextVPosItem( eVPos ) );
581*cdf0e10cSrcweir 			bModified = sal_True;
582*cdf0e10cSrcweir 		}
583*cdf0e10cSrcweir 
584*cdf0e10cSrcweir 		if ( rAttrs.GetItemState( SDRATTR_MEASURETEXTHPOS ) != SFX_ITEM_DONTCARE )
585*cdf0e10cSrcweir 		{
586*cdf0e10cSrcweir 			eOldHPos = (SdrMeasureTextHPos)
587*cdf0e10cSrcweir 						( ( const SdrMeasureTextHPosItem& )rOutAttrs.Get( SDRATTR_MEASURETEXTHPOS ) ).GetValue();
588*cdf0e10cSrcweir 			if( eOldHPos != eHPos )
589*cdf0e10cSrcweir 			{
590*cdf0e10cSrcweir 				rAttrs.Put( SdrMeasureTextHPosItem( eHPos ) );
591*cdf0e10cSrcweir 				bModified = sal_True;
592*cdf0e10cSrcweir 			}
593*cdf0e10cSrcweir 		}
594*cdf0e10cSrcweir 		else
595*cdf0e10cSrcweir 		{
596*cdf0e10cSrcweir 			rAttrs.Put( SdrMeasureTextHPosItem( eHPos ) );
597*cdf0e10cSrcweir 			bModified = sal_True;
598*cdf0e10cSrcweir 		}
599*cdf0e10cSrcweir 	}
600*cdf0e10cSrcweir 
601*cdf0e10cSrcweir 	return( bModified );
602*cdf0e10cSrcweir }
603*cdf0e10cSrcweir 
604*cdf0e10cSrcweir /*************************************************************************
605*cdf0e10cSrcweir |*
606*cdf0e10cSrcweir |* The View have to set at the measure-object to be able to notify
607*cdf0e10cSrcweir |* unit and floatingpoint-values
608*cdf0e10cSrcweir |*
609*cdf0e10cSrcweir \************************************************************************/
610*cdf0e10cSrcweir 
611*cdf0e10cSrcweir void SvxMeasurePage::Construct()
612*cdf0e10cSrcweir {
613*cdf0e10cSrcweir 	DBG_ASSERT( pView, "Keine gueltige View Uebergeben!" );
614*cdf0e10cSrcweir 
615*cdf0e10cSrcweir 	aCtlPreview.pMeasureObj->SetModel( pView->GetModel() );
616*cdf0e10cSrcweir 	aCtlPreview.Invalidate();
617*cdf0e10cSrcweir }
618*cdf0e10cSrcweir 
619*cdf0e10cSrcweir /*************************************************************************
620*cdf0e10cSrcweir |*
621*cdf0e10cSrcweir |* create the tabpage
622*cdf0e10cSrcweir |*
623*cdf0e10cSrcweir \************************************************************************/
624*cdf0e10cSrcweir 
625*cdf0e10cSrcweir SfxTabPage* SvxMeasurePage::Create( Window* pWindow,
626*cdf0e10cSrcweir 				const SfxItemSet& rAttrs )
627*cdf0e10cSrcweir {
628*cdf0e10cSrcweir 	return( new SvxMeasurePage( pWindow, rAttrs ) );
629*cdf0e10cSrcweir }
630*cdf0e10cSrcweir 
631*cdf0e10cSrcweir /*************************************************************************
632*cdf0e10cSrcweir |*
633*cdf0e10cSrcweir |*
634*cdf0e10cSrcweir |*
635*cdf0e10cSrcweir \************************************************************************/
636*cdf0e10cSrcweir 
637*cdf0e10cSrcweir sal_uInt16*	SvxMeasurePage::GetRanges()
638*cdf0e10cSrcweir {
639*cdf0e10cSrcweir 	return( pRanges );
640*cdf0e10cSrcweir }
641*cdf0e10cSrcweir 
642*cdf0e10cSrcweir /*************************************************************************
643*cdf0e10cSrcweir |*
644*cdf0e10cSrcweir |*
645*cdf0e10cSrcweir |*
646*cdf0e10cSrcweir \************************************************************************/
647*cdf0e10cSrcweir 
648*cdf0e10cSrcweir void SvxMeasurePage::PointChanged( Window* pWindow, RECT_POINT /*eRP*/ )
649*cdf0e10cSrcweir {
650*cdf0e10cSrcweir 	ChangeAttrHdl_Impl( pWindow );
651*cdf0e10cSrcweir }
652*cdf0e10cSrcweir 
653*cdf0e10cSrcweir /*************************************************************************
654*cdf0e10cSrcweir |*
655*cdf0e10cSrcweir |*
656*cdf0e10cSrcweir |*
657*cdf0e10cSrcweir \************************************************************************/
658*cdf0e10cSrcweir 
659*cdf0e10cSrcweir IMPL_LINK( SvxMeasurePage, ClickAutoPosHdl_Impl, void *, p )
660*cdf0e10cSrcweir {
661*cdf0e10cSrcweir 	if( aTsbAutoPosH.GetState() == STATE_CHECK )
662*cdf0e10cSrcweir 	{
663*cdf0e10cSrcweir 		switch( aCtlPosition.GetActualRP() )
664*cdf0e10cSrcweir 		{
665*cdf0e10cSrcweir 			case RP_LT:
666*cdf0e10cSrcweir 			case RP_RT:
667*cdf0e10cSrcweir 				aCtlPosition.SetActualRP( RP_MT );
668*cdf0e10cSrcweir 			break;
669*cdf0e10cSrcweir 
670*cdf0e10cSrcweir 			case RP_LM:
671*cdf0e10cSrcweir 			case RP_RM:
672*cdf0e10cSrcweir 				aCtlPosition.SetActualRP( RP_MM );
673*cdf0e10cSrcweir 			break;
674*cdf0e10cSrcweir 
675*cdf0e10cSrcweir 			case RP_LB:
676*cdf0e10cSrcweir 			case RP_RB:
677*cdf0e10cSrcweir 				aCtlPosition.SetActualRP( RP_MB );
678*cdf0e10cSrcweir 			break;
679*cdf0e10cSrcweir             default: ;//prevent warning
680*cdf0e10cSrcweir 		}
681*cdf0e10cSrcweir 	}
682*cdf0e10cSrcweir 	if( aTsbAutoPosV.GetState() == STATE_CHECK )
683*cdf0e10cSrcweir 	{
684*cdf0e10cSrcweir 		switch( aCtlPosition.GetActualRP() )
685*cdf0e10cSrcweir 		{
686*cdf0e10cSrcweir 			case RP_LT:
687*cdf0e10cSrcweir 			case RP_LB:
688*cdf0e10cSrcweir 				aCtlPosition.SetActualRP( RP_LM );
689*cdf0e10cSrcweir 			break;
690*cdf0e10cSrcweir 
691*cdf0e10cSrcweir 			case RP_MT:
692*cdf0e10cSrcweir 			case RP_MB:
693*cdf0e10cSrcweir 				aCtlPosition.SetActualRP( RP_MM );
694*cdf0e10cSrcweir 			break;
695*cdf0e10cSrcweir 
696*cdf0e10cSrcweir 			case RP_RT:
697*cdf0e10cSrcweir 			case RP_RB:
698*cdf0e10cSrcweir 				aCtlPosition.SetActualRP( RP_RM );
699*cdf0e10cSrcweir 			break;
700*cdf0e10cSrcweir             default: ;//prevent warning
701*cdf0e10cSrcweir 		}
702*cdf0e10cSrcweir 	}
703*cdf0e10cSrcweir 	ChangeAttrHdl_Impl( p );
704*cdf0e10cSrcweir 
705*cdf0e10cSrcweir 	return( 0L );
706*cdf0e10cSrcweir }
707*cdf0e10cSrcweir 
708*cdf0e10cSrcweir /*************************************************************************
709*cdf0e10cSrcweir |*
710*cdf0e10cSrcweir |*
711*cdf0e10cSrcweir |*
712*cdf0e10cSrcweir \************************************************************************/
713*cdf0e10cSrcweir 
714*cdf0e10cSrcweir IMPL_LINK( SvxMeasurePage, ChangeAttrHdl_Impl, void *, p )
715*cdf0e10cSrcweir {
716*cdf0e10cSrcweir 
717*cdf0e10cSrcweir 	if( p == &aMtrFldLineDist )
718*cdf0e10cSrcweir 	{
719*cdf0e10cSrcweir 		sal_Int32 nValue = GetCoreValue( aMtrFldLineDist, eUnit );
720*cdf0e10cSrcweir 		aAttrSet.Put( SdrMeasureLineDistItem( nValue ) );
721*cdf0e10cSrcweir 	}
722*cdf0e10cSrcweir 
723*cdf0e10cSrcweir 	if( p == &aMtrFldHelplineOverhang )
724*cdf0e10cSrcweir 	{
725*cdf0e10cSrcweir 		sal_Int32 nValue = GetCoreValue( aMtrFldHelplineOverhang, eUnit );
726*cdf0e10cSrcweir 		aAttrSet.Put( SdrMeasureHelplineOverhangItem( nValue) );
727*cdf0e10cSrcweir 	}
728*cdf0e10cSrcweir 
729*cdf0e10cSrcweir 	if( p == &aMtrFldHelplineDist )
730*cdf0e10cSrcweir 	{
731*cdf0e10cSrcweir 		sal_Int32 nValue = GetCoreValue( aMtrFldHelplineDist, eUnit );
732*cdf0e10cSrcweir 		aAttrSet.Put( SdrMeasureHelplineDistItem( nValue) );
733*cdf0e10cSrcweir 	}
734*cdf0e10cSrcweir 
735*cdf0e10cSrcweir 	if( p == &aMtrFldHelpline1Len )
736*cdf0e10cSrcweir 	{
737*cdf0e10cSrcweir 		sal_Int32 nValue = GetCoreValue( aMtrFldHelpline1Len, eUnit );
738*cdf0e10cSrcweir 		aAttrSet.Put( SdrMeasureHelpline1LenItem( nValue ) );
739*cdf0e10cSrcweir 	}
740*cdf0e10cSrcweir 
741*cdf0e10cSrcweir 	if( p == &aMtrFldHelpline2Len )
742*cdf0e10cSrcweir 	{
743*cdf0e10cSrcweir 		sal_Int32 nValue = GetCoreValue( aMtrFldHelpline2Len, eUnit );
744*cdf0e10cSrcweir 		aAttrSet.Put( SdrMeasureHelpline2LenItem( nValue ) );
745*cdf0e10cSrcweir 	}
746*cdf0e10cSrcweir 
747*cdf0e10cSrcweir 	if( p == &aTsbBelowRefEdge )
748*cdf0e10cSrcweir 	{
749*cdf0e10cSrcweir 		TriState eState = aTsbBelowRefEdge.GetState();
750*cdf0e10cSrcweir 		if( eState != STATE_DONTKNOW )
751*cdf0e10cSrcweir 			aAttrSet.Put( SdrMeasureBelowRefEdgeItem( (sal_Bool) STATE_CHECK == eState ) );
752*cdf0e10cSrcweir 	}
753*cdf0e10cSrcweir 
754*cdf0e10cSrcweir 	if( p == &aMtrFldDecimalPlaces )
755*cdf0e10cSrcweir 	{
756*cdf0e10cSrcweir 		sal_Int16 nValue = sal::static_int_cast< sal_Int16 >(
757*cdf0e10cSrcweir             aMtrFldDecimalPlaces.GetValue() );
758*cdf0e10cSrcweir 		aAttrSet.Put( SdrMeasureDecimalPlacesItem( nValue ) );
759*cdf0e10cSrcweir 	}
760*cdf0e10cSrcweir 
761*cdf0e10cSrcweir 	if( p == &aTsbParallel )
762*cdf0e10cSrcweir 	{
763*cdf0e10cSrcweir 		TriState eState = aTsbParallel.GetState();
764*cdf0e10cSrcweir 		if( eState != STATE_DONTKNOW )
765*cdf0e10cSrcweir 			aAttrSet.Put( SdrMeasureTextRota90Item( (sal_Bool) !STATE_CHECK == eState ) );
766*cdf0e10cSrcweir 	}
767*cdf0e10cSrcweir 
768*cdf0e10cSrcweir 	if( p == &aTsbShowUnit )
769*cdf0e10cSrcweir 	{
770*cdf0e10cSrcweir 		TriState eState = aTsbShowUnit.GetState();
771*cdf0e10cSrcweir 		if( eState != STATE_DONTKNOW )
772*cdf0e10cSrcweir 			aAttrSet.Put( SdrMeasureShowUnitItem( (sal_Bool) STATE_CHECK == eState ) );
773*cdf0e10cSrcweir 	}
774*cdf0e10cSrcweir 
775*cdf0e10cSrcweir 	if( p == &aLbUnit )
776*cdf0e10cSrcweir 	{
777*cdf0e10cSrcweir 		sal_uInt16 nPos = aLbUnit.GetSelectEntryPos();
778*cdf0e10cSrcweir 		if( nPos != LISTBOX_ENTRY_NOTFOUND )
779*cdf0e10cSrcweir 		{
780*cdf0e10cSrcweir 			sal_uInt16 nFieldUnit = (sal_uInt16)(long)aLbUnit.GetEntryData( nPos );
781*cdf0e10cSrcweir             FieldUnit _eUnit = (FieldUnit) nFieldUnit;
782*cdf0e10cSrcweir             aAttrSet.Put( SdrMeasureUnitItem( _eUnit ) );
783*cdf0e10cSrcweir 		}
784*cdf0e10cSrcweir 	}
785*cdf0e10cSrcweir 
786*cdf0e10cSrcweir 	if( p == &aTsbAutoPosV || p == &aTsbAutoPosH || p == &aCtlPosition )
787*cdf0e10cSrcweir 	{
788*cdf0e10cSrcweir 		bPositionModified = sal_True;
789*cdf0e10cSrcweir 
790*cdf0e10cSrcweir 		// Position
791*cdf0e10cSrcweir 		RECT_POINT eRP = aCtlPosition.GetActualRP();
792*cdf0e10cSrcweir 		SdrMeasureTextVPos eVPos;
793*cdf0e10cSrcweir 		SdrMeasureTextHPos eHPos;
794*cdf0e10cSrcweir 
795*cdf0e10cSrcweir 		switch( eRP )
796*cdf0e10cSrcweir 		{
797*cdf0e10cSrcweir 			default:
798*cdf0e10cSrcweir 			case RP_LT: eVPos = SDRMEASURE_ABOVE;
799*cdf0e10cSrcweir 						eHPos = SDRMEASURE_TEXTLEFTOUTSIDE; break;
800*cdf0e10cSrcweir 			case RP_LM: eVPos = SDRMEASURETEXT_VERTICALCENTERED;
801*cdf0e10cSrcweir 						eHPos = SDRMEASURE_TEXTLEFTOUTSIDE; break;
802*cdf0e10cSrcweir 			case RP_LB: eVPos = SDRMEASURE_BELOW;
803*cdf0e10cSrcweir 						eHPos = SDRMEASURE_TEXTLEFTOUTSIDE; break;
804*cdf0e10cSrcweir 			case RP_MT: eVPos = SDRMEASURE_ABOVE;
805*cdf0e10cSrcweir 						eHPos = SDRMEASURE_TEXTINSIDE; break;
806*cdf0e10cSrcweir 			case RP_MM: eVPos = SDRMEASURETEXT_VERTICALCENTERED;
807*cdf0e10cSrcweir 						eHPos = SDRMEASURE_TEXTINSIDE; break;
808*cdf0e10cSrcweir 			case RP_MB: eVPos = SDRMEASURE_BELOW;
809*cdf0e10cSrcweir 						eHPos = SDRMEASURE_TEXTINSIDE; break;
810*cdf0e10cSrcweir 			case RP_RT: eVPos = SDRMEASURE_ABOVE;
811*cdf0e10cSrcweir 						eHPos = SDRMEASURE_TEXTRIGHTOUTSIDE; break;
812*cdf0e10cSrcweir 			case RP_RM: eVPos = SDRMEASURETEXT_VERTICALCENTERED;
813*cdf0e10cSrcweir 						eHPos = SDRMEASURE_TEXTRIGHTOUTSIDE; break;
814*cdf0e10cSrcweir 			case RP_RB: eVPos = SDRMEASURE_BELOW;
815*cdf0e10cSrcweir 						eHPos = SDRMEASURE_TEXTRIGHTOUTSIDE; break;
816*cdf0e10cSrcweir 		}
817*cdf0e10cSrcweir 
818*cdf0e10cSrcweir 		CTL_STATE nState = 0;
819*cdf0e10cSrcweir 
820*cdf0e10cSrcweir 		if( aTsbAutoPosH.GetState() == STATE_CHECK )
821*cdf0e10cSrcweir 		{
822*cdf0e10cSrcweir 			eHPos = SDRMEASURE_TEXTHAUTO;
823*cdf0e10cSrcweir 			nState = CS_NOHORZ;
824*cdf0e10cSrcweir 		}
825*cdf0e10cSrcweir 
826*cdf0e10cSrcweir 		if( aTsbAutoPosV.GetState() == STATE_CHECK )
827*cdf0e10cSrcweir 		{
828*cdf0e10cSrcweir 			eVPos = SDRMEASURE_TEXTVAUTO;
829*cdf0e10cSrcweir 			nState |= CS_NOVERT;
830*cdf0e10cSrcweir 		}
831*cdf0e10cSrcweir 
832*cdf0e10cSrcweir 		if( p == &aTsbAutoPosV || p == &aTsbAutoPosH )
833*cdf0e10cSrcweir 			aCtlPosition.SetState( nState );
834*cdf0e10cSrcweir 
835*cdf0e10cSrcweir 		aAttrSet.Put( SdrMeasureTextVPosItem( eVPos ) );
836*cdf0e10cSrcweir 		aAttrSet.Put( SdrMeasureTextHPosItem( eHPos ) );
837*cdf0e10cSrcweir 	}
838*cdf0e10cSrcweir 
839*cdf0e10cSrcweir 	aCtlPreview.SetAttributes( aAttrSet );
840*cdf0e10cSrcweir 	aCtlPreview.Invalidate();
841*cdf0e10cSrcweir 
842*cdf0e10cSrcweir 	return( 0L );
843*cdf0e10cSrcweir }
844*cdf0e10cSrcweir 
845*cdf0e10cSrcweir /*************************************************************************
846*cdf0e10cSrcweir |*
847*cdf0e10cSrcweir |*
848*cdf0e10cSrcweir |*
849*cdf0e10cSrcweir \************************************************************************/
850*cdf0e10cSrcweir 
851*cdf0e10cSrcweir void SvxMeasurePage::FillUnitLB()
852*cdf0e10cSrcweir {
853*cdf0e10cSrcweir 	// fill ListBox with metrics
854*cdf0e10cSrcweir 	SvxStringArray aMetricArr( SVX_RES( RID_SVXSTR_FIELDUNIT_TABLE ) );
855*cdf0e10cSrcweir 
856*cdf0e10cSrcweir 	long nUnit = FUNIT_NONE;
857*cdf0e10cSrcweir 	String aStrMetric( CUI_RES( STR_MEASURE_AUTOMATIC ) );
858*cdf0e10cSrcweir 	sal_uInt16 nPos = aLbUnit.InsertEntry( aStrMetric );
859*cdf0e10cSrcweir 	aLbUnit.SetEntryData( nPos, (void*)nUnit );
860*cdf0e10cSrcweir 
861*cdf0e10cSrcweir 	for( sal_uInt16 i = 0; i < aMetricArr.Count(); ++i )
862*cdf0e10cSrcweir 	{
863*cdf0e10cSrcweir 		aStrMetric = aMetricArr.GetStringByPos( i );
864*cdf0e10cSrcweir 		nUnit = aMetricArr.GetValue( i );
865*cdf0e10cSrcweir 		nPos = aLbUnit.InsertEntry( aStrMetric );
866*cdf0e10cSrcweir 		aLbUnit.SetEntryData( nPos, (void*)nUnit );
867*cdf0e10cSrcweir 	}
868*cdf0e10cSrcweir }
869*cdf0e10cSrcweir void SvxMeasurePage::PageCreated (SfxAllItemSet aSet) //add CHINA001
870*cdf0e10cSrcweir {
871*cdf0e10cSrcweir 	SFX_ITEMSET_ARG (&aSet,pOfaPtrItem,OfaPtrItem,SID_OBJECT_LIST,sal_False);
872*cdf0e10cSrcweir 
873*cdf0e10cSrcweir 	if (pOfaPtrItem)
874*cdf0e10cSrcweir 		SetView( static_cast<SdrView *>(pOfaPtrItem->GetValue()));
875*cdf0e10cSrcweir 
876*cdf0e10cSrcweir 	Construct();
877*cdf0e10cSrcweir }
878*cdf0e10cSrcweir 
879