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