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