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