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