xref: /aoo4110/main/sc/source/ui/pagedlg/tptable.cxx (revision b1cdbd2c)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_sc.hxx"
26 
27 #undef SC_DLLIMPLEMENTATION
28 
29 
30 
31 //------------------------------------------------------------------
32 
33 #include "scitems.hxx"
34 
35 #include "tptable.hxx"
36 #include "global.hxx"
37 #include "attrib.hxx"
38 #include "scresid.hxx"
39 #include "sc.hrc"
40 #include "pagedlg.hrc"
41 
42 // =======================================================================
43 
Modify()44 void EmptyNumericField::Modify()
45 {
46     if( GetText().Len() )
47         NumericField::Modify();
48     else
49         SetEmptyFieldValue();
50 }
51 
SetValue(sal_Int64 nValue)52 void EmptyNumericField::SetValue( sal_Int64 nValue )
53 {
54     if( nValue == 0 )
55         SetEmptyFieldValue();
56     else
57         NumericField::SetValue( nValue );
58 }
59 
GetValue() const60 sal_Int64 EmptyNumericField::GetValue() const
61 {
62     return IsEmptyFieldValue() ? 0 : NumericField::GetValue();
63 }
64 
65 // =======================================================================
66 
67 // STATIC DATA -----------------------------------------------------------
68 
69 static sal_uInt16 pPageTableRanges[] =
70 {
71 	ATTR_PAGE_NOTES, ATTR_PAGE_FIRSTPAGENO,
72 	0
73 };
74 
75 sal_Bool lcl_PutVObjModeItem( sal_uInt16			nWhich,
76 						  SfxItemSet&		rCoreSet,
77 						  const SfxItemSet&	rOldSet,
78 						  const CheckBox&	rBtn );
79 
80 sal_Bool lcl_PutScaleItem( sal_uInt16				nWhich,
81 					   SfxItemSet&			rCoreSet,
82 					   const SfxItemSet&	rOldSet,
83                        const ListBox&       rListBox,
84                        sal_uInt16               nLBEntry,
85                        const SpinField&     rEd,
86                        sal_uInt16               nValue );
87 
88 sal_Bool lcl_PutScaleItem2( sal_uInt16               nWhich,
89                        SfxItemSet&          rCoreSet,
90                        const SfxItemSet&    rOldSet,
91                        const ListBox&       rListBox,
92                        sal_uInt16               nLBEntry,
93                        const NumericField&  rEd1,
94                        const NumericField&  rEd2 );
95 
96 sal_Bool lcl_PutBoolItem( sal_uInt16			nWhich,
97 					  SfxItemSet&		rCoreSet,
98 					  const SfxItemSet&	rOldSet,
99 					  sal_Bool				bIsChecked,
100 					  sal_Bool				bSavedValue );
101 
102 //------------------------------------------------------------------------
103 
104 #define PAGENO_HDL 			LINK(this,ScTablePage,PageNoHdl)
105 #define PAGEDIR_HDL 		LINK(this,ScTablePage,PageDirHdl)
106 #define SCALE_HDL			LINK(this,ScTablePage,ScaleHdl)
107 
108 #define WAS_DEFAULT(w,s)    (SFX_ITEM_DEFAULT==(s).GetItemState((w),sal_True))
109 #define GET_BOOL(sid,set)	((const SfxBoolItem&)((set).Get(GetWhich((sid))))).GetValue()
110 #define GET_USHORT(sid,set)	(sal_uInt16)((const SfxUInt16Item&)((set).Get(GetWhich((sid))))).GetValue()
111 #define GET_SHOW(sid,set) 	( ScVObjMode( ((const ScViewObjectModeItem&)((set).Get(GetWhich((sid))))).GetValue() ) \
112 							  == VOBJ_MODE_SHOW )
113 
114 //========================================================================
115 
ScTablePage(Window * pParent,const SfxItemSet & rCoreAttrs)116 ScTablePage::ScTablePage( Window* pParent, const SfxItemSet& rCoreAttrs ) :
117 
118         SfxTabPage( pParent, ScResId( RID_SCPAGE_TABLE ), rCoreAttrs ),
119 
120         aFlPageDir          ( this, ScResId( FL_PAGEDIR ) ),
121 		aBtnTopDown 		( this, ScResId( BTN_TOPDOWN ) ),
122 		aBtnLeftRight		( this, ScResId( BTN_LEFTRIGHT ) ),
123 		aBmpPageDir 		( this, ScResId( BMP_PAGEDIR ) ),
124 		aImgLeftRight		( ScResId( IMG_LEFTRIGHT ) ),
125 		aImgTopDown 		( ScResId( IMG_TOPDOWN ) ),
126         aImgLeftRightHC     ( ScResId( IMG_LEFTRIGHT_H ) ),
127         aImgTopDownHC       ( ScResId( IMG_TOPDOWN_H ) ),
128 		aBtnPageNo			( this, ScResId( BTN_PAGENO ) ),
129 		aEdPageNo			( this, ScResId( ED_PAGENO ) ),
130         aFlPrint            ( this, ScResId( FL_PRINT ) ),
131 		aBtnHeaders 		( this, ScResId( BTN_HEADER ) ),
132 		aBtnGrid			( this, ScResId( BTN_GRID ) ),
133 		aBtnNotes			( this, ScResId( BTN_NOTES ) ),
134 		aBtnObjects 		( this, ScResId( BTN_OBJECTS ) ),
135 		aBtnCharts			( this, ScResId( BTN_CHARTS ) ),
136 		aBtnDrawings		( this, ScResId( BTN_DRAWINGS ) ),
137 		aBtnFormulas		( this, ScResId( BTN_FORMULAS ) ),
138 		aBtnNullVals		( this, ScResId( BTN_NULLVALS ) ),
139         aFlScale            ( this, ScResId( FL_SCALE ) ),
140         aFtScaleMode        ( this, ScResId( FT_SCALEMODE ) ),
141         aLbScaleMode        ( this, ScResId( LB_SCALEMODE ) ),
142         aFtScaleAll         ( this, ScResId( FT_SCALEFACTOR ) ),
143 		aEdScaleAll 		( this, ScResId( ED_SCALEALL ) ),
144         aFtScalePageWidth   ( this, ScResId( FT_SCALEPAGEWIDTH ) ),
145         aEdScalePageWidth   ( this, ScResId( ED_SCALEPAGEWIDTH ) ),
146         aFtScalePageHeight  ( this, ScResId( FT_SCALEPAGEHEIGHT ) ),
147         aEdScalePageHeight  ( this, ScResId( ED_SCALEPAGEHEIGHT ) ),
148         aFtScalePageNum     ( this, ScResId( FT_SCALEPAGENUM ) ),
149         aEdScalePageNum     ( this, ScResId( ED_SCALEPAGENUM ) )
150 {
151 	SetExchangeSupport();
152     aBtnPageNo.SetClickHdl( PAGENO_HDL );
153     aBtnTopDown.SetClickHdl( PAGEDIR_HDL );
154     aBtnLeftRight.SetClickHdl( PAGEDIR_HDL );
155     aLbScaleMode.SetSelectHdl( SCALE_HDL );
156 
157     Size aBmpSize = Image( ScResId( IMG_LEFTRIGHT ) ).GetSizePixel();
158     aBmpPageDir.SetOutputSizePixel( aBmpSize );
159 
160 	FreeResource();
161 
162 	aEdPageNo.SetAccessibleName(aBtnPageNo.GetText());
163 	aEdPageNo.SetAccessibleRelationLabeledBy(&aBtnPageNo);
164 }
165 
166 // -----------------------------------------------------------------------
167 
ShowImage()168 void ScTablePage::ShowImage()
169 {
170     bool bHC = GetSettings().GetStyleSettings().GetHighContrastMode();
171     bool bLeftRight = aBtnLeftRight.IsChecked();
172     aBmpPageDir.SetImage( bHC ?
173         (bLeftRight ? aImgLeftRightHC : aImgTopDownHC) :
174         (bLeftRight ? aImgLeftRight : aImgTopDown) );
175 }
176 
177 // -----------------------------------------------------------------------
178 
~ScTablePage()179 ScTablePage::~ScTablePage()
180 {
181 }
182 
183 //------------------------------------------------------------------------
184 
GetRanges()185 sal_uInt16* ScTablePage::GetRanges()
186 {
187 	return pPageTableRanges;
188 }
189 
190 // -----------------------------------------------------------------------
191 
Create(Window * pParent,const SfxItemSet & rCoreSet)192 SfxTabPage* ScTablePage::Create( Window* pParent, const SfxItemSet& rCoreSet )
193 {
194 	return ( new ScTablePage( pParent, rCoreSet ) );
195 }
196 
197 // -----------------------------------------------------------------------
198 
Reset(const SfxItemSet & rCoreSet)199 void ScTablePage::Reset( const SfxItemSet& rCoreSet )
200 {
201 	sal_Bool	bTopDown = GET_BOOL( SID_SCATTR_PAGE_TOPDOWN, rCoreSet );
202 	sal_uInt16	nWhich   = 0;
203 
204 	//-----------
205 	// sal_Bool-Flags
206 	//-----------
207 	aBtnNotes		.Check( GET_BOOL(SID_SCATTR_PAGE_NOTES,rCoreSet) );
208 	aBtnGrid		.Check( GET_BOOL(SID_SCATTR_PAGE_GRID,rCoreSet) );
209 	aBtnHeaders 	.Check( GET_BOOL(SID_SCATTR_PAGE_HEADERS,rCoreSet) );
210 	aBtnFormulas	.Check( GET_BOOL(SID_SCATTR_PAGE_FORMULAS,rCoreSet) );
211 	aBtnNullVals	.Check( GET_BOOL(SID_SCATTR_PAGE_NULLVALS,rCoreSet) );
212 	aBtnTopDown 	.Check( bTopDown );
213 	aBtnLeftRight	.Check( !bTopDown );
214 
215 	//------------------
216 	// Erste Druckseite:
217 	//------------------
218 	sal_uInt16 nPage = GET_USHORT(SID_SCATTR_PAGE_FIRSTPAGENO,rCoreSet);
219 	aBtnPageNo.Check( nPage != 0 );
220 	aEdPageNo.SetValue( (nPage != 0) ? nPage : 1 );
221 	PageNoHdl( NULL );
222 
223 	//-------------------
224 	// Objektdarstellung:
225 	//-------------------
226 	aBtnCharts		.Check( GET_SHOW( SID_SCATTR_PAGE_CHARTS, rCoreSet ) );
227 	aBtnObjects 	.Check( GET_SHOW( SID_SCATTR_PAGE_OBJECTS, rCoreSet ) );
228 	aBtnDrawings	.Check( GET_SHOW( SID_SCATTR_PAGE_DRAWINGS, rCoreSet ) );
229 
230 	//------------
231 	// Skalierung:
232 	//------------
233 
234 	nWhich = GetWhich(SID_SCATTR_PAGE_SCALE);
235 	if ( rCoreSet.GetItemState( nWhich, sal_True ) >= SFX_ITEM_AVAILABLE )
236 	{
237 		sal_uInt16 nScale = ((const SfxUInt16Item&)rCoreSet.Get(nWhich)).GetValue();
238         if( nScale > 0 )
239             aLbScaleMode.SelectEntryPos( SC_TPTABLE_SCALE_PERCENT );
240         aEdScaleAll.SetValue( (nScale > 0) ? nScale : 100 );
241 	}
242 
243     nWhich = GetWhich(SID_SCATTR_PAGE_SCALETO);
244     if ( rCoreSet.GetItemState( nWhich, sal_True ) >= SFX_ITEM_AVAILABLE )
245     {
246         const ScPageScaleToItem& rItem = static_cast< const ScPageScaleToItem& >( rCoreSet.Get( nWhich ) );
247         sal_uInt16 nWidth = rItem.GetWidth();
248         sal_uInt16 nHeight = rItem.GetHeight();
249 
250         /*  width==0 and height==0 is invalid state, used as "not selected".
251             Dialog shows width=height=1 then. */
252         bool bValid = nWidth || nHeight;
253         if( bValid )
254             aLbScaleMode.SelectEntryPos( SC_TPTABLE_SCALE_TO );
255         aEdScalePageWidth.SetValue( bValid ? nWidth : 1 );
256         aEdScalePageHeight.SetValue( bValid ? nHeight : 1 );
257     }
258 
259 	nWhich = GetWhich(SID_SCATTR_PAGE_SCALETOPAGES);
260 	if ( rCoreSet.GetItemState( nWhich, sal_True ) >= SFX_ITEM_AVAILABLE )
261 	{
262 		sal_uInt16 nPages = ((const SfxUInt16Item&)rCoreSet.Get(nWhich)).GetValue();
263         if( nPages > 0 )
264             aLbScaleMode.SelectEntryPos( SC_TPTABLE_SCALE_TO_PAGES );
265         aEdScalePageNum.SetValue( (nPages > 0) ? nPages : 1 );
266 	}
267 
268     if( aLbScaleMode.GetSelectEntryCount() == 0 )
269     {
270         // fall back to 100%
271         DBG_ERRORFILE( "ScTablePage::Reset - missing scaling item" );
272         aLbScaleMode.SelectEntryPos( SC_TPTABLE_SCALE_PERCENT );
273         aEdScaleAll.SetValue( 100 );
274     }
275 
276 	PageDirHdl( NULL );
277 	ScaleHdl( NULL );
278 
279 	// merken fuer FillItemSet
280 	aBtnFormulas	.SaveValue();
281 	aBtnNullVals	.SaveValue();
282 	aBtnNotes		.SaveValue();
283 	aBtnGrid		.SaveValue();
284 	aBtnHeaders 	.SaveValue();
285 	aBtnTopDown 	.SaveValue();
286 	aBtnLeftRight	.SaveValue();
287     aLbScaleMode    .SaveValue();
288 	aBtnCharts		.SaveValue();
289 	aBtnObjects 	.SaveValue();
290 	aBtnDrawings	.SaveValue();
291 	aBtnPageNo		.SaveValue();
292 	aEdPageNo		.SaveValue();
293 	aEdScaleAll		.SaveValue();
294     aEdScalePageWidth.SaveValue();
295     aEdScalePageHeight.SaveValue();
296 	aEdScalePageNum	.SaveValue();
297 }
298 
299 // -----------------------------------------------------------------------
300 
FillItemSet(SfxItemSet & rCoreSet)301 sal_Bool ScTablePage::FillItemSet( SfxItemSet& rCoreSet )
302 {
303 	const SfxItemSet&	rOldSet		 = GetItemSet();
304 	sal_uInt16				nWhichPageNo = GetWhich(SID_SCATTR_PAGE_FIRSTPAGENO);
305 	sal_Bool				bDataChanged = sal_False;
306 
307 	//-----------
308 	// sal_Bool-Flags
309 	//-----------
310 
311 	bDataChanged |= lcl_PutBoolItem( GetWhich(SID_SCATTR_PAGE_NOTES),
312 									 rCoreSet, rOldSet,
313 									 aBtnNotes.IsChecked(),
314                                      aBtnNotes.GetSavedValue() != STATE_NOCHECK );
315 
316 	bDataChanged |= lcl_PutBoolItem( GetWhich(SID_SCATTR_PAGE_GRID),
317 									 rCoreSet, rOldSet,
318 									 aBtnGrid.IsChecked(),
319                                      aBtnGrid.GetSavedValue() != STATE_NOCHECK );
320 
321 	bDataChanged |= lcl_PutBoolItem( GetWhich(SID_SCATTR_PAGE_HEADERS),
322 									 rCoreSet, rOldSet,
323 									 aBtnHeaders.IsChecked(),
324                                      aBtnHeaders.GetSavedValue() != STATE_NOCHECK );
325 
326 	bDataChanged |= lcl_PutBoolItem( GetWhich(SID_SCATTR_PAGE_TOPDOWN),
327 									 rCoreSet, rOldSet,
328 									 aBtnTopDown.IsChecked(),
329 									 aBtnTopDown.GetSavedValue() );
330 
331 	bDataChanged |= lcl_PutBoolItem( GetWhich(SID_SCATTR_PAGE_FORMULAS),
332 									 rCoreSet, rOldSet,
333 									 aBtnFormulas.IsChecked(),
334                                      aBtnFormulas.GetSavedValue() != STATE_NOCHECK );
335 
336 	bDataChanged |= lcl_PutBoolItem( GetWhich(SID_SCATTR_PAGE_NULLVALS),
337 									 rCoreSet, rOldSet,
338 									 aBtnNullVals.IsChecked(),
339                                      aBtnNullVals.GetSavedValue() != STATE_NOCHECK );
340 
341 	//------------------
342 	// Erste Druckseite:
343 	//------------------
344 	sal_Bool bUseValue = aBtnPageNo.IsChecked();
345 
346 	if (   WAS_DEFAULT(nWhichPageNo,rOldSet)
347 		&& (	(!bUseValue && bUseValue == aBtnPageNo.GetSavedValue())
348 			|| (   bUseValue && bUseValue == aBtnPageNo.GetSavedValue()
349 				&& aEdPageNo.GetText() == aEdPageNo.GetSavedValue() ) ) )
350 	{
351 			rCoreSet.ClearItem( nWhichPageNo );
352 	}
353 	else
354 	{
355 		sal_uInt16 nPage = (sal_uInt16)( aBtnPageNo.IsChecked()
356 									? aEdPageNo.GetValue()
357 									: 0 );
358 
359 		rCoreSet.Put( SfxUInt16Item( nWhichPageNo, nPage ) );
360 		bDataChanged = sal_True;
361 	}
362 
363 	//-------------------
364 	// Objektdarstellung:
365 	//-------------------
366 
367 	bDataChanged |= lcl_PutVObjModeItem( GetWhich(SID_SCATTR_PAGE_CHARTS),
368 										 rCoreSet, rOldSet, aBtnCharts );
369 
370 	bDataChanged |= lcl_PutVObjModeItem( GetWhich(SID_SCATTR_PAGE_OBJECTS),
371 										 rCoreSet, rOldSet, aBtnObjects );
372 
373 	bDataChanged |= lcl_PutVObjModeItem( GetWhich(SID_SCATTR_PAGE_DRAWINGS),
374 										 rCoreSet, rOldSet, aBtnDrawings );
375 
376 	//------------
377 	// Skalierung:
378 	//------------
379 
380     if( !aEdScalePageWidth.GetValue() && !aEdScalePageHeight.GetValue() )
381     {
382         aLbScaleMode.SelectEntryPos( SC_TPTABLE_SCALE_PERCENT );
383         aEdScaleAll.SetValue( 100 );
384     }
385 
386 	bDataChanged |= lcl_PutScaleItem( GetWhich(SID_SCATTR_PAGE_SCALE),
387 									  rCoreSet, rOldSet,
388                                       aLbScaleMode, SC_TPTABLE_SCALE_PERCENT,
389                                       aEdScaleAll, (sal_uInt16)aEdScaleAll.GetValue() );
390 
391     bDataChanged |= lcl_PutScaleItem2( GetWhich(SID_SCATTR_PAGE_SCALETO),
392                                       rCoreSet, rOldSet,
393                                       aLbScaleMode, SC_TPTABLE_SCALE_TO,
394                                       aEdScalePageWidth, aEdScalePageHeight );
395 
396 	bDataChanged |= lcl_PutScaleItem( GetWhich(SID_SCATTR_PAGE_SCALETOPAGES),
397 									  rCoreSet, rOldSet,
398                                       aLbScaleMode, SC_TPTABLE_SCALE_TO_PAGES,
399                                       aEdScalePageNum, (sal_uInt16)aEdScalePageNum.GetValue() );
400 
401 	return bDataChanged;
402 }
403 
404 //------------------------------------------------------------------------
405 
DeactivatePage(SfxItemSet * pSetP)406 int ScTablePage::DeactivatePage( SfxItemSet* pSetP )
407 {
408     if ( pSetP )
409         FillItemSet( *pSetP );
410 
411 	return LEAVE_PAGE;
412 }
413 
414 //------------------------------------------------------------------------
415 
DataChanged(const DataChangedEvent & rDCEvt)416 void ScTablePage::DataChanged( const DataChangedEvent& rDCEvt )
417 {
418     if( (rDCEvt.GetType() == DATACHANGED_SETTINGS) && (rDCEvt.GetFlags() & SETTINGS_STYLE) )
419         ShowImage();
420     SfxTabPage::DataChanged( rDCEvt );
421 }
422 
423 //------------------------------------------------------------------------
424 // Handler:
425 //------------------------------------------------------------------------
426 
IMPL_LINK(ScTablePage,PageDirHdl,RadioButton *,EMPTYARG)427 IMPL_LINK( ScTablePage, PageDirHdl, RadioButton*, EMPTYARG )
428 {
429     ShowImage();
430 	return 0;
431 }
432 
433 //------------------------------------------------------------------------
434 
IMPL_LINK(ScTablePage,PageNoHdl,CheckBox *,pBtn)435 IMPL_LINK( ScTablePage, PageNoHdl, CheckBox*, pBtn )
436 {
437 	if ( aBtnPageNo.IsChecked() )
438 	{
439 		aEdPageNo.Enable();
440 		if ( pBtn )
441 			aEdPageNo.GrabFocus();
442 	}
443 	else
444 		aEdPageNo.Disable();
445 
446 	return 0;
447 }
448 
449 //------------------------------------------------------------------------
450 
IMPL_LINK(ScTablePage,ScaleHdl,ListBox *,EMPTYARG)451 IMPL_LINK( ScTablePage, ScaleHdl, ListBox*, EMPTYARG )
452 {
453     // controls for "Reduce/enlarge"
454     bool bPercent = (aLbScaleMode.GetSelectEntryPos() == SC_TPTABLE_SCALE_PERCENT);
455     aFtScaleAll.Show( bPercent );
456     aEdScaleAll.Show( bPercent );
457 
458     // controls for "Scale to width/height"
459     bool bScaleTo = (aLbScaleMode.GetSelectEntryPos() == SC_TPTABLE_SCALE_TO);
460     aFtScalePageWidth.Show( bScaleTo );
461     aEdScalePageWidth.Show( bScaleTo );
462     aFtScalePageHeight.Show( bScaleTo );
463     aEdScalePageHeight.Show( bScaleTo );
464 
465     // controls for "Scale to pages"
466     bool bScalePages = (aLbScaleMode.GetSelectEntryPos() == SC_TPTABLE_SCALE_TO_PAGES);
467     aFtScalePageNum.Show( bScalePages );
468     aEdScalePageNum.Show( bScalePages );
469 
470 	return 0;
471 }
472 
473 //========================================================================
474 // Hilfsfunktionen fuer FillItemSet:
475 //========================================================================
476 
lcl_PutBoolItem(sal_uInt16 nWhich,SfxItemSet & rCoreSet,const SfxItemSet & rOldSet,sal_Bool bIsChecked,sal_Bool bSavedValue)477 sal_Bool lcl_PutBoolItem( sal_uInt16			nWhich,
478 					 SfxItemSet&		rCoreSet,
479 					 const SfxItemSet&	rOldSet,
480 					 sal_Bool				bIsChecked,
481 					 sal_Bool				bSavedValue )
482 {
483 	sal_Bool bDataChanged = (   bSavedValue == bIsChecked
484 						 && WAS_DEFAULT(nWhich,rOldSet) );
485 
486 	if ( bDataChanged )
487 		rCoreSet.ClearItem(nWhich);
488 	else
489 		rCoreSet.Put( SfxBoolItem( nWhich, bIsChecked ) );
490 
491 	return bDataChanged;
492 }
493 
494 //------------------------------------------------------------------------
495 
lcl_PutVObjModeItem(sal_uInt16 nWhich,SfxItemSet & rCoreSet,const SfxItemSet & rOldSet,const CheckBox & rBtn)496 sal_Bool lcl_PutVObjModeItem( sal_uInt16			nWhich,
497 						 SfxItemSet&		rCoreSet,
498 						 const SfxItemSet&	rOldSet,
499 						 const CheckBox&	rBtn )
500 {
501 	sal_Bool bIsChecked   = rBtn.IsChecked();
502 	sal_Bool bDataChanged = (   rBtn.GetSavedValue() == bIsChecked
503 						 && WAS_DEFAULT(nWhich,rOldSet) );
504 
505 	if ( bDataChanged )
506 		rCoreSet.ClearItem( nWhich );
507 
508 	else
509 		rCoreSet.Put( ScViewObjectModeItem( nWhich, bIsChecked
510 													? VOBJ_MODE_SHOW
511 													: VOBJ_MODE_HIDE ) );
512 	return bDataChanged;
513 }
514 
515 //------------------------------------------------------------------------
516 
lcl_PutScaleItem(sal_uInt16 nWhich,SfxItemSet & rCoreSet,const SfxItemSet & rOldSet,const ListBox & rListBox,sal_uInt16 nLBEntry,const SpinField & rEd,sal_uInt16 nValue)517 sal_Bool lcl_PutScaleItem( sal_uInt16				nWhich,
518 					  SfxItemSet&			rCoreSet,
519 					  const SfxItemSet&		rOldSet,
520                       const ListBox&        rListBox,
521                       sal_uInt16                nLBEntry,
522                       const SpinField&      rEd,
523                       sal_uInt16                nValue )
524 {
525     sal_Bool bIsSel = (rListBox.GetSelectEntryPos() == nLBEntry);
526     sal_Bool bDataChanged = (rListBox.GetSavedValue() != nLBEntry) ||
527                         (rEd.GetSavedValue() != rEd.GetText()) ||
528                         !WAS_DEFAULT( nWhich, rOldSet );
529 
530     if( bDataChanged )
531         rCoreSet.Put( SfxUInt16Item( nWhich, bIsSel ? nValue : 0 ) );
532     else
533         rCoreSet.ClearItem( nWhich );
534 
535 	return bDataChanged;
536 }
537 
538 
lcl_PutScaleItem2(sal_uInt16 nWhich,SfxItemSet & rCoreSet,const SfxItemSet & rOldSet,const ListBox & rListBox,sal_uInt16 nLBEntry,const NumericField & rEd1,const NumericField & rEd2)539 sal_Bool lcl_PutScaleItem2( sal_uInt16               nWhich,
540                       SfxItemSet&           rCoreSet,
541                       const SfxItemSet&     rOldSet,
542                       const ListBox&        rListBox,
543                       sal_uInt16                nLBEntry,
544                       const NumericField&   rEd1,
545                       const NumericField&   rEd2 )
546 {
547     sal_uInt16 nValue1 = (sal_uInt16)rEd1.GetValue();
548     sal_uInt16 nValue2 = (sal_uInt16)rEd2.GetValue();
549     sal_Bool bIsSel = (rListBox.GetSelectEntryPos() == nLBEntry);
550     sal_Bool bDataChanged = (rListBox.GetSavedValue() != nLBEntry) ||
551                         (rEd1.GetSavedValue() != rEd1.GetText()) ||
552                         (rEd2.GetSavedValue() != rEd2.GetText()) ||
553                         !WAS_DEFAULT( nWhich, rOldSet );
554 
555     if( bDataChanged )
556     {
557         ScPageScaleToItem aItem;
558         if( bIsSel )
559             aItem.Set( nValue1, nValue2 );
560         rCoreSet.Put( aItem );
561     }
562     else
563         rCoreSet.ClearItem( nWhich );
564 
565     return bDataChanged;
566 }
567 
568 
569 
570