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_cui.hxx" 30 31 // include --------------------------------------------------------------- 32 #include <tools/shl.hxx> 33 #include <tools/urlobj.hxx> 34 #include <sfx2/app.hxx> 35 #include <sfx2/module.hxx> 36 #include <svx/dialogs.hrc> 37 38 #define _SVX_TPAREA_CXX 39 40 #if defined (UNX) || defined (WTC) || defined (ICC) || defined(WNT) 41 #include <stdlib.h> 42 #endif 43 44 #include "svx/xattr.hxx" 45 #include <svx/xpool.hxx> 46 #include <cuires.hrc> 47 #include "tabarea.hrc" 48 //#include "dlgname.hrc" 49 #include <svx/xflbckit.hxx> 50 #include <svx/svdattr.hxx> 51 #include <svx/xtable.hxx> 52 #include <svx/xlineit0.hxx> 53 #include "svx/drawitem.hxx" 54 #include "cuitabarea.hxx" 55 #include "dlgname.hxx" 56 #include <dialmgr.hxx> 57 #include "svx/dlgutil.hxx" 58 #include <svl/intitem.hxx> //add CHINA001 59 #include <sfx2/request.hxx>//add CHINA001 60 #include "paragrph.hrc" 61 #define DLGWIN this->GetParent()->GetParent() 62 63 // static ---------------------------------------------------------------- 64 65 static sal_uInt16 pAreaRanges[] = 66 { 67 XATTR_GRADIENTSTEPCOUNT, 68 XATTR_GRADIENTSTEPCOUNT, 69 SID_ATTR_FILL_STYLE, 70 SID_ATTR_FILL_BITMAP, 71 0 72 }; 73 74 static sal_uInt16 pTransparenceRanges[] = 75 { 76 XATTR_FILLTRANSPARENCE, 77 XATTR_FILLTRANSPARENCE, 78 SDRATTR_SHADOWTRANSPARENCE, 79 SDRATTR_SHADOWTRANSPARENCE, 80 XATTR_FILLFLOATTRANSPARENCE, 81 XATTR_FILLFLOATTRANSPARENCE, 82 0 83 }; 84 85 /************************************************************************* 86 |* 87 |* Dialog for transparence 88 |* 89 \************************************************************************/ 90 91 IMPL_LINK(SvxTransparenceTabPage, ClickTransOffHdl_Impl, void *, EMPTYARG) 92 { 93 // disable all other controls 94 ActivateLinear(sal_False); 95 ActivateGradient(sal_False); 96 97 // Preview 98 rXFSet.ClearItem (XATTR_FILLTRANSPARENCE); 99 rXFSet.ClearItem (XATTR_FILLFLOATTRANSPARENCE); 100 aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() ); 101 aCtlBitmapPreview.SetAttributes( aXFillAttr.GetItemSet() ); 102 103 InvalidatePreview( sal_False ); 104 105 return( 0L ); 106 } 107 108 IMPL_LINK(SvxTransparenceTabPage, ClickTransLinearHdl_Impl, void *, EMPTYARG) 109 { 110 // enable linear, disable other 111 ActivateLinear(sal_True); 112 ActivateGradient(sal_False); 113 114 // preview 115 rXFSet.ClearItem (XATTR_FILLFLOATTRANSPARENCE); 116 ModifyTransparentHdl_Impl (NULL); 117 118 return( 0L ); 119 } 120 121 IMPL_LINK(SvxTransparenceTabPage, ClickTransGradientHdl_Impl, void *, EMPTYARG) 122 { 123 // enable gradient, disable other 124 ActivateLinear(sal_False); 125 ActivateGradient(sal_True); 126 127 // preview 128 rXFSet.ClearItem (XATTR_FILLTRANSPARENCE); 129 ModifiedTrgrHdl_Impl (NULL); 130 131 return( 0L ); 132 } 133 134 void SvxTransparenceTabPage::ActivateLinear(sal_Bool bActivate) 135 { 136 aMtrTransparent.Enable(bActivate); 137 } 138 139 IMPL_LINK(SvxTransparenceTabPage, ModifyTransparentHdl_Impl, void*, EMPTYARG) 140 { 141 sal_uInt16 nPos = (sal_uInt16)aMtrTransparent.GetValue(); 142 XFillTransparenceItem aItem(nPos); 143 rXFSet.Put(XFillTransparenceItem(aItem)); 144 145 // preview 146 InvalidatePreview(); 147 148 return 0L; 149 } 150 151 IMPL_LINK(SvxTransparenceTabPage, ModifiedTrgrHdl_Impl, void *, pControl) 152 { 153 if(pControl == &aLbTrgrGradientType || pControl == this) 154 { 155 XGradientStyle eXGS = (XGradientStyle)aLbTrgrGradientType.GetSelectEntryPos(); 156 SetControlState_Impl( eXGS ); 157 } 158 159 // preview 160 sal_uInt8 nStartCol = (sal_uInt8)(((sal_uInt16)aMtrTrgrStartValue.GetValue() * 255) / 100); 161 sal_uInt8 nEndCol = (sal_uInt8)(((sal_uInt16)aMtrTrgrEndValue.GetValue() * 255) / 100); 162 XGradient aTmpGradient( 163 Color(nStartCol, nStartCol, nStartCol), 164 Color(nEndCol, nEndCol, nEndCol), 165 (XGradientStyle)aLbTrgrGradientType.GetSelectEntryPos(), 166 (sal_uInt16)aMtrTrgrAngle.GetValue() * 10, 167 (sal_uInt16)aMtrTrgrCenterX.GetValue(), 168 (sal_uInt16)aMtrTrgrCenterY.GetValue(), 169 (sal_uInt16)aMtrTrgrBorder.GetValue(), 170 100, 100); 171 172 String aString; 173 XFillFloatTransparenceItem aItem( rXFSet.GetPool()/*aString*/, aTmpGradient); 174 rXFSet.Put ( aItem ); 175 176 InvalidatePreview(); 177 178 return( 0L ); 179 } 180 181 void SvxTransparenceTabPage::ActivateGradient(sal_Bool bActivate) 182 { 183 aFtTrgrType.Enable(bActivate); 184 aLbTrgrGradientType.Enable(bActivate); 185 aFtTrgrCenterX.Enable(bActivate); 186 aMtrTrgrCenterX.Enable(bActivate); 187 aFtTrgrCenterY.Enable(bActivate); 188 aMtrTrgrCenterY.Enable(bActivate); 189 aFtTrgrAngle.Enable(bActivate); 190 aMtrTrgrAngle.Enable(bActivate); 191 aFtTrgrBorder.Enable(bActivate); 192 aMtrTrgrBorder.Enable(bActivate); 193 aFtTrgrStartValue.Enable(bActivate); 194 aMtrTrgrStartValue.Enable(bActivate); 195 aFtTrgrEndValue.Enable(bActivate); 196 aMtrTrgrEndValue.Enable(bActivate); 197 198 if(bActivate) 199 { 200 XGradientStyle eXGS = (XGradientStyle)aLbTrgrGradientType.GetSelectEntryPos(); 201 SetControlState_Impl( eXGS ); 202 } 203 } 204 205 IMPL_LINK(SvxTransparenceTabPage, ChangeTrgrTypeHdl_Impl, void *, EMPTYARG) 206 { 207 return( 0L ); 208 } 209 210 void SvxTransparenceTabPage::SetControlState_Impl(XGradientStyle eXGS) 211 { 212 switch(eXGS) 213 { 214 case XGRAD_LINEAR: 215 case XGRAD_AXIAL: 216 aFtTrgrCenterX.Disable(); 217 aMtrTrgrCenterX.Disable(); 218 aFtTrgrCenterY.Disable(); 219 aMtrTrgrCenterY.Disable(); 220 aFtTrgrAngle.Enable(); 221 aMtrTrgrAngle.Enable(); 222 break; 223 224 case XGRAD_RADIAL: 225 aFtTrgrCenterX.Enable(); 226 aMtrTrgrCenterX.Enable(); 227 aFtTrgrCenterY.Enable(); 228 aMtrTrgrCenterY.Enable(); 229 aFtTrgrAngle.Disable(); 230 aMtrTrgrAngle.Disable(); 231 break; 232 233 case XGRAD_ELLIPTICAL: 234 aFtTrgrCenterX.Enable(); 235 aMtrTrgrCenterX.Enable(); 236 aFtTrgrCenterY.Enable(); 237 aMtrTrgrCenterY.Enable(); 238 aFtTrgrAngle.Enable(); 239 aMtrTrgrAngle.Enable(); 240 break; 241 242 case XGRAD_SQUARE: 243 case XGRAD_RECT: 244 aFtTrgrCenterX.Enable(); 245 aMtrTrgrCenterX.Enable(); 246 aFtTrgrCenterY.Enable(); 247 aMtrTrgrCenterY.Enable(); 248 aFtTrgrAngle.Enable(); 249 aMtrTrgrAngle.Enable(); 250 break; 251 } 252 } 253 254 SvxTransparenceTabPage::SvxTransparenceTabPage(Window* pParent, const SfxItemSet& rInAttrs) 255 : SvxTabPage ( pParent, CUI_RES( RID_SVXPAGE_TRANSPARENCE ), rInAttrs), 256 rOutAttrs ( rInAttrs ), 257 nPageType(0), 258 nDlgType(0), 259 260 aFlProp ( this, CUI_RES( FL_PROP ) ), 261 aRbtTransOff ( this, CUI_RES( RBT_TRANS_OFF ) ), 262 aRbtTransLinear ( this, CUI_RES( RBT_TRANS_LINEAR ) ), 263 aRbtTransGradient ( this, CUI_RES( RBT_TRANS_GRADIENT ) ), 264 265 aMtrTransparent ( this, CUI_RES( MTR_TRANSPARENT ) ), 266 267 aFtTrgrType ( this, CUI_RES( FT_TRGR_TYPE ) ), 268 aLbTrgrGradientType ( this, CUI_RES( LB_TRGR_GRADIENT_TYPES ) ), 269 aFtTrgrCenterX ( this, CUI_RES( FT_TRGR_CENTER_X ) ), 270 aMtrTrgrCenterX ( this, CUI_RES( MTR_TRGR_CENTER_X ) ), 271 aFtTrgrCenterY ( this, CUI_RES( FT_TRGR_CENTER_Y ) ), 272 aMtrTrgrCenterY ( this, CUI_RES( MTR_TRGR_CENTER_Y ) ), 273 aFtTrgrAngle ( this, CUI_RES( FT_TRGR_ANGLE ) ), 274 aMtrTrgrAngle ( this, CUI_RES( MTR_TRGR_ANGLE ) ), 275 aFtTrgrBorder ( this, CUI_RES( FT_TRGR_BORDER ) ), 276 aMtrTrgrBorder ( this, CUI_RES( MTR_TRGR_BORDER ) ), 277 aFtTrgrStartValue ( this, CUI_RES( FT_TRGR_START_VALUE ) ), 278 aMtrTrgrStartValue ( this, CUI_RES( MTR_TRGR_START_VALUE ) ), 279 aFtTrgrEndValue ( this, CUI_RES( FT_TRGR_END_VALUE ) ), 280 aMtrTrgrEndValue ( this, CUI_RES( MTR_TRGR_END_VALUE ) ), 281 282 aCtlBitmapPreview ( this, CUI_RES( CTL_BITMAP_PREVIEW ) ), 283 aCtlXRectPreview ( this, CUI_RES( CTL_TRANS_PREVIEW ) ), 284 bBitmap ( sal_False ), 285 pXPool ( (XOutdevItemPool*) rInAttrs.GetPool() ), 286 aXFillAttr ( pXPool ), 287 rXFSet ( aXFillAttr.GetItemSet() ) 288 { 289 FreeResource(); 290 291 String accName = String(CUI_RES(STR_EXAMPLE)); 292 aCtlBitmapPreview.SetAccessibleName(accName); 293 aCtlXRectPreview.SetAccessibleName(accName); 294 aMtrTransparent.SetAccessibleRelationLabeledBy( &aRbtTransLinear ); 295 296 // main selection 297 aRbtTransOff.SetClickHdl(LINK(this, SvxTransparenceTabPage, ClickTransOffHdl_Impl)); 298 aRbtTransLinear.SetClickHdl(LINK(this, SvxTransparenceTabPage, ClickTransLinearHdl_Impl)); 299 aRbtTransGradient.SetClickHdl(LINK(this, SvxTransparenceTabPage, ClickTransGradientHdl_Impl)); 300 301 // linear transparency 302 aMtrTransparent.SetValue( 50 ); 303 aMtrTransparent.SetModifyHdl(LINK(this, SvxTransparenceTabPage, ModifyTransparentHdl_Impl)); 304 305 // gradient transparency 306 aMtrTrgrEndValue.SetValue( 100 ); 307 aMtrTrgrStartValue.SetValue( 0 ); 308 aLbTrgrGradientType.SetSelectHdl(LINK(this, SvxTransparenceTabPage, ChangeTrgrTypeHdl_Impl)); 309 Link aLink = LINK( this, SvxTransparenceTabPage, ModifiedTrgrHdl_Impl); 310 aLbTrgrGradientType.SetSelectHdl( aLink ); 311 aMtrTrgrCenterX.SetModifyHdl( aLink ); 312 aMtrTrgrCenterY.SetModifyHdl( aLink ); 313 aMtrTrgrAngle.SetModifyHdl( aLink ); 314 aMtrTrgrBorder.SetModifyHdl( aLink ); 315 aMtrTrgrStartValue.SetModifyHdl( aLink ); 316 aMtrTrgrEndValue.SetModifyHdl( aLink ); 317 318 // this page needs ExchangeSupport 319 SetExchangeSupport(); 320 } 321 322 void SvxTransparenceTabPage::Construct() 323 { 324 } 325 326 SfxTabPage* SvxTransparenceTabPage::Create(Window* pWindow, const SfxItemSet& rAttrs) 327 { 328 return(new SvxTransparenceTabPage(pWindow, rAttrs)); 329 } 330 331 sal_uInt16* SvxTransparenceTabPage::GetRanges() 332 { 333 return(pTransparenceRanges); 334 } 335 336 sal_Bool SvxTransparenceTabPage::FillItemSet(SfxItemSet& rAttrs) 337 { 338 const SfxPoolItem* pGradientItem = NULL; 339 const SfxPoolItem* pLinearItem = NULL; 340 SfxItemState eStateGradient(rOutAttrs.GetItemState(XATTR_FILLFLOATTRANSPARENCE, sal_True, &pGradientItem)); 341 SfxItemState eStateLinear(rOutAttrs.GetItemState(XATTR_FILLTRANSPARENCE, sal_True, &pLinearItem)); 342 sal_Bool bGradActive = (eStateGradient == SFX_ITEM_SET && ((XFillFloatTransparenceItem*)pGradientItem)->IsEnabled()); 343 sal_Bool bLinearActive = (eStateLinear == SFX_ITEM_SET && ((XFillTransparenceItem*)pLinearItem)->GetValue() != 0); 344 345 // #103765# 346 sal_Bool bGradUsed = (eStateGradient == SFX_ITEM_DONTCARE); 347 sal_Bool bLinearUsed = (eStateLinear == SFX_ITEM_DONTCARE); 348 349 sal_Bool bModified(sal_False); 350 sal_Bool bSwitchOffLinear(sal_False); 351 sal_Bool bSwitchOffGradient(sal_False); 352 353 if(aMtrTransparent.IsEnabled()) 354 { 355 // linear transparence 356 sal_uInt16 nPos = (sal_uInt16)aMtrTransparent.GetValue(); 357 if(nPos != (sal_uInt16)aMtrTransparent.GetSavedValue().ToInt32() || !bLinearActive) 358 { 359 XFillTransparenceItem aItem(nPos); 360 SdrShadowTransparenceItem aShadowItem(nPos); 361 const SfxPoolItem* pOld = GetOldItem(rAttrs, XATTR_FILLTRANSPARENCE); 362 if(!pOld || !(*(const XFillTransparenceItem*)pOld == aItem) || !bLinearActive) 363 { 364 rAttrs.Put(aItem); 365 rAttrs.Put(aShadowItem); 366 bModified = sal_True; 367 bSwitchOffGradient = sal_True; 368 } 369 } 370 } 371 else if(aLbTrgrGradientType.IsEnabled()) 372 { 373 // transparence gradient, fill ItemSet from values 374 if(!bGradActive 375 || (XGradientStyle)aLbTrgrGradientType.GetSelectEntryPos() != (XGradientStyle)aLbTrgrGradientType.GetSavedValue() 376 || (sal_uInt16)aMtrTrgrAngle.GetValue() != (sal_uInt16)aMtrTrgrAngle.GetSavedValue().ToInt32() 377 || (sal_uInt16)aMtrTrgrCenterX.GetValue() != (sal_uInt16)aMtrTrgrCenterX.GetSavedValue().ToInt32() 378 || (sal_uInt16)aMtrTrgrCenterY.GetValue() != (sal_uInt16)aMtrTrgrCenterY.GetSavedValue().ToInt32() 379 || (sal_uInt16)aMtrTrgrBorder.GetValue() != (sal_uInt16)aMtrTrgrBorder.GetSavedValue().ToInt32() 380 || (sal_uInt16)aMtrTrgrStartValue.GetValue() != (sal_uInt16)aMtrTrgrStartValue.GetSavedValue().ToInt32() 381 || (sal_uInt16)aMtrTrgrEndValue.GetValue() != (sal_uInt16)aMtrTrgrEndValue.GetSavedValue().ToInt32() ) 382 { 383 sal_uInt8 nStartCol = (sal_uInt8)(((sal_uInt16)aMtrTrgrStartValue.GetValue() * 255) / 100); 384 sal_uInt8 nEndCol = (sal_uInt8)(((sal_uInt16)aMtrTrgrEndValue.GetValue() * 255) / 100); 385 XGradient aTmpGradient( 386 Color(nStartCol, nStartCol, nStartCol), 387 Color(nEndCol, nEndCol, nEndCol), 388 (XGradientStyle)aLbTrgrGradientType.GetSelectEntryPos(), 389 (sal_uInt16)aMtrTrgrAngle.GetValue() * 10, 390 (sal_uInt16)aMtrTrgrCenterX.GetValue(), 391 (sal_uInt16)aMtrTrgrCenterY.GetValue(), 392 (sal_uInt16)aMtrTrgrBorder.GetValue(), 393 100, 100); 394 395 String aString; 396 XFillFloatTransparenceItem aItem( rXFSet.GetPool()/*aString*/, aTmpGradient); 397 const SfxPoolItem* pOld = GetOldItem(rAttrs, XATTR_FILLFLOATTRANSPARENCE); 398 399 if(!pOld || !(*(const XFillFloatTransparenceItem*)pOld == aItem) || !bGradActive) 400 { 401 rAttrs.Put(aItem); 402 bModified = sal_True; 403 bSwitchOffLinear = sal_True; 404 } 405 } 406 } 407 else 408 { 409 // no transparence 410 bSwitchOffGradient = sal_True; 411 bSwitchOffLinear = sal_True; 412 } 413 414 // disable unused XFillFloatTransparenceItem 415 if(bSwitchOffGradient && (bGradActive || bGradUsed)) 416 { 417 Color aColor(COL_BLACK); 418 XGradient aGrad(aColor, Color(COL_WHITE)); 419 aGrad.SetStartIntens(100); 420 aGrad.SetEndIntens(100); 421 String aString; 422 XFillFloatTransparenceItem aItem( rXFSet.GetPool()/*aString*/, aGrad); 423 aItem.SetEnabled(sal_False); 424 rAttrs.Put(aItem); 425 bModified = sal_True; 426 } 427 428 // disable unused XFillFloatTransparenceItem 429 if(bSwitchOffLinear && (bLinearActive || bLinearUsed)) 430 { 431 XFillTransparenceItem aItem(0); 432 SdrShadowTransparenceItem aShadowItem(0); 433 rAttrs.Put(aItem); 434 rAttrs.Put(aShadowItem); 435 bModified = sal_True; 436 } 437 //add CHINA001 begin 438 rAttrs.Put (CntUInt16Item(SID_PAGE_TYPE,nPageType)); 439 //add CHINA001 end 440 return bModified; 441 } 442 443 void SvxTransparenceTabPage::Reset(const SfxItemSet& rAttrs) 444 { 445 const SfxPoolItem* pGradientItem = NULL; 446 SfxItemState eStateGradient(rAttrs.GetItemState(XATTR_FILLFLOATTRANSPARENCE, sal_True, &pGradientItem)); 447 if(!pGradientItem) 448 pGradientItem = &rAttrs.Get(XATTR_FILLFLOATTRANSPARENCE); 449 sal_Bool bGradActive = (eStateGradient == SFX_ITEM_SET && ((XFillFloatTransparenceItem*)pGradientItem)->IsEnabled()); 450 451 const SfxPoolItem* pLinearItem = NULL; 452 SfxItemState eStateLinear(rAttrs.GetItemState(XATTR_FILLTRANSPARENCE, sal_True, &pLinearItem)); 453 if(!pLinearItem) 454 pLinearItem = &rAttrs.Get(XATTR_FILLTRANSPARENCE); 455 sal_Bool bLinearActive = (eStateLinear == SFX_ITEM_SET && ((XFillTransparenceItem*)pLinearItem)->GetValue() != 0); 456 457 // transparence gradient 458 const XGradient& rGradient = ((XFillFloatTransparenceItem*)pGradientItem)->GetGradientValue(); 459 XGradientStyle eXGS(rGradient.GetGradientStyle()); 460 aLbTrgrGradientType.SelectEntryPos(sal::static_int_cast< sal_uInt16 >(eXGS)); 461 aMtrTrgrAngle.SetValue(rGradient.GetAngle() / 10); 462 aMtrTrgrBorder.SetValue(rGradient.GetBorder()); 463 aMtrTrgrCenterX.SetValue(rGradient.GetXOffset()); 464 aMtrTrgrCenterY.SetValue(rGradient.GetYOffset()); 465 aMtrTrgrStartValue.SetValue((sal_uInt16)((((sal_uInt16)rGradient.GetStartColor().GetRed() + 1) * 100) / 255)); 466 aMtrTrgrEndValue.SetValue((sal_uInt16)((((sal_uInt16)rGradient.GetEndColor().GetRed() + 1) * 100) / 255)); 467 468 // linear transparence 469 sal_uInt16 nTransp = ((XFillTransparenceItem*)pLinearItem)->GetValue(); 470 aMtrTransparent.SetValue(bLinearActive ? nTransp : 50); 471 ModifyTransparentHdl_Impl(NULL); 472 473 // select the correct radio button 474 if(bGradActive) 475 { 476 // transparence gradient, set controls appropriate to item 477 aRbtTransGradient.Check(); 478 ClickTransGradientHdl_Impl(NULL); 479 } 480 else if(bLinearActive) 481 { 482 // linear transparence 483 aRbtTransLinear.Check(); 484 ClickTransLinearHdl_Impl(NULL); 485 } 486 else 487 { 488 // no transparence 489 aRbtTransOff.Check(); 490 ClickTransOffHdl_Impl(NULL); 491 ModifiedTrgrHdl_Impl(NULL); 492 } 493 494 // save values 495 aMtrTransparent.SaveValue(); 496 aLbTrgrGradientType.SaveValue(); 497 aMtrTrgrCenterX.SaveValue(); 498 aMtrTrgrCenterY.SaveValue(); 499 aMtrTrgrAngle.SaveValue(); 500 aMtrTrgrBorder.SaveValue(); 501 aMtrTrgrStartValue.SaveValue(); 502 aMtrTrgrEndValue.SaveValue(); 503 504 sal_Bool bActive = InitPreview ( rAttrs ); 505 InvalidatePreview ( bActive ); 506 } 507 508 void SvxTransparenceTabPage::ActivatePage(const SfxItemSet& rSet) 509 { 510 //add CHINA001 Begin 511 SFX_ITEMSET_ARG (&rSet,pPageTypeItem,CntUInt16Item,SID_PAGE_TYPE,sal_False); 512 if (pPageTypeItem) 513 SetPageType(pPageTypeItem->GetValue()); 514 //add CHINA001 end 515 //CHINA001 if(*pDlgType == 0) // Flaechen-Dialog 516 //CHINA001 *pPageType = PT_TRANSPARENCE; 517 if(nDlgType == 0) //add CHINA001 // Flaechen-Dialog 518 nPageType = PT_TRANSPARENCE; //add CHINA001 519 520 InitPreview ( rSet ); 521 } 522 523 int SvxTransparenceTabPage::DeactivatePage(SfxItemSet* _pSet) 524 { 525 if( _pSet ) 526 FillItemSet( *_pSet ); 527 return(LEAVE_PAGE); 528 } 529 530 void SvxTransparenceTabPage::PointChanged(Window* , RECT_POINT eRcPt) 531 { 532 eRP = eRcPt; 533 } 534 535 // 536 // Preview-Methods 537 // 538 sal_Bool SvxTransparenceTabPage::InitPreview ( const SfxItemSet& rSet ) 539 { 540 // set transparencetyp for preview 541 if ( aRbtTransOff.IsChecked() ) 542 { 543 ClickTransOffHdl_Impl(NULL); 544 } else if ( aRbtTransLinear.IsChecked() ) 545 { 546 ClickTransLinearHdl_Impl(NULL); 547 } else if ( aRbtTransGradient.IsChecked() ) 548 { 549 ClickTransGradientHdl_Impl(NULL); 550 } 551 552 // Get fillstyle for preview 553 rXFSet.Put ( ( XFillStyleItem& ) rSet.Get(XATTR_FILLSTYLE) ); 554 rXFSet.Put ( ( XFillColorItem& ) rSet.Get(XATTR_FILLCOLOR) ); 555 rXFSet.Put ( ( XFillGradientItem& ) rSet.Get(XATTR_FILLGRADIENT) ); 556 rXFSet.Put ( ( XFillHatchItem& ) rSet.Get(XATTR_FILLHATCH) ); 557 rXFSet.Put ( ( XFillBackgroundItem&)rSet.Get(XATTR_FILLBACKGROUND) ); 558 rXFSet.Put ( ( XFillBitmapItem& ) rSet.Get(XATTR_FILLBITMAP) ); 559 560 aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() ); 561 aCtlBitmapPreview.SetAttributes( aXFillAttr.GetItemSet() ); 562 563 bBitmap = ( ( ( XFillStyleItem& )rSet.Get(XATTR_FILLSTYLE) ).GetValue() == XFILL_BITMAP ); 564 565 // show the right preview window 566 if ( bBitmap ) 567 { 568 aCtlBitmapPreview.Show(); 569 aCtlXRectPreview.Hide(); 570 } 571 else 572 { 573 aCtlBitmapPreview.Hide(); 574 aCtlXRectPreview.Show(); 575 } 576 577 return !aRbtTransOff.IsChecked(); 578 } 579 580 void SvxTransparenceTabPage::InvalidatePreview (sal_Bool bEnable) 581 { 582 if ( bBitmap ) 583 { 584 if ( bEnable ) 585 { 586 aCtlBitmapPreview.Enable(); 587 aCtlBitmapPreview.SetAttributes( aXFillAttr.GetItemSet() ); 588 } 589 else 590 aCtlBitmapPreview.Disable(); 591 aCtlBitmapPreview.Invalidate(); 592 } 593 else 594 { 595 if ( bEnable ) 596 { 597 aCtlXRectPreview.Enable(); 598 aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() ); 599 } 600 else 601 aCtlXRectPreview.Disable(); 602 aCtlXRectPreview.Invalidate(); 603 } 604 } 605 606 void SvxTransparenceTabPage::PageCreated (SfxAllItemSet aSet) //add CHINA001 607 { 608 SFX_ITEMSET_ARG (&aSet,pPageTypeItem,SfxUInt16Item,SID_PAGE_TYPE,sal_False); 609 SFX_ITEMSET_ARG (&aSet,pDlgTypeItem,SfxUInt16Item,SID_DLG_TYPE,sal_False); 610 611 if (pPageTypeItem) 612 SetPageType(pPageTypeItem->GetValue()); 613 if (pDlgTypeItem) 614 SetDlgType(pDlgTypeItem->GetValue()); 615 Construct(); 616 } 617 /************************************************************************* 618 |* 619 |* Dialog to modify fill-attributes 620 |* 621 \************************************************************************/ 622 623 SvxAreaTabPage::SvxAreaTabPage( Window* pParent, const SfxItemSet& rInAttrs ) : 624 625 SvxTabPage ( pParent, CUI_RES( RID_SVXPAGE_AREA ), rInAttrs ), 626 627 aFlProp ( this, CUI_RES( FL_PROP ) ), 628 aTypeLB ( this, CUI_RES( LB_AREA_TYPE ) ), 629 630 aLbColor ( this, CUI_RES( LB_COLOR ) ), 631 aLbGradient ( this, CUI_RES( LB_GRADIENT ) ), 632 aLbHatching ( this, CUI_RES( LB_HATCHING ) ), 633 aLbBitmap ( this, CUI_RES( LB_BITMAP ) ), 634 aCtlBitmapPreview ( this, CUI_RES( CTL_BITMAP_PREVIEW ) ), 635 636 aTsbStepCount ( this, CUI_RES( TSB_STEPCOUNT ) ), 637 aFlStepCount ( this, CUI_RES( FL_STEPCOUNT ) ), 638 aNumFldStepCount ( this, CUI_RES( NUM_FLD_STEPCOUNT ) ), 639 640 aCbxHatchBckgrd ( this, CUI_RES( CB_HATCHBCKGRD ) ), 641 aLbHatchBckgrdColor ( this, CUI_RES( LB_HATCHBCKGRDCOLOR ) ), 642 643 aFlSize ( this, CUI_RES( FL_SIZE ) ), 644 aTsbOriginal ( this, CUI_RES( TSB_ORIGINAL ) ), 645 aTsbScale ( this, CUI_RES( TSB_SCALE ) ), 646 aFtXSize ( this, CUI_RES( FT_X_SIZE ) ), 647 aMtrFldXSize ( this, CUI_RES( MTR_FLD_X_SIZE ) ), 648 aFtYSize ( this, CUI_RES( FT_Y_SIZE ) ), 649 aMtrFldYSize ( this, CUI_RES( MTR_FLD_Y_SIZE ) ), 650 aFlPosition ( this, CUI_RES( FL_POSITION ) ), 651 aCtlPosition ( this, CUI_RES( CTL_POSITION ), RP_RM, 110, 80, CS_RECT ), 652 aFtXOffset ( this, CUI_RES( FT_X_OFFSET ) ), 653 aMtrFldXOffset ( this, CUI_RES( MTR_FLD_X_OFFSET ) ), 654 aFtYOffset ( this, CUI_RES( FT_Y_OFFSET ) ), 655 aMtrFldYOffset ( this, CUI_RES( MTR_FLD_Y_OFFSET ) ), 656 aTsbTile ( this, CUI_RES( TSB_TILE ) ), 657 aTsbStretch ( this, CUI_RES( TSB_STRETCH ) ), 658 aFlOffset ( this, CUI_RES( FL_OFFSET ) ), 659 aRbtRow ( this, CUI_RES( RBT_ROW ) ), 660 aRbtColumn ( this, CUI_RES( RBT_COLUMN ) ), 661 aMtrFldOffset ( this, CUI_RES( MTR_FLD_OFFSET ) ), 662 663 aCtlXRectPreview ( this, CUI_RES( CTL_COLOR_PREVIEW ) ), 664 665 rOutAttrs ( rInAttrs ), 666 667 pColorTab( NULL ), 668 pGradientList( NULL ), 669 pHatchingList( NULL ), 670 pBitmapList( NULL ), 671 672 pXPool ( (XOutdevItemPool*) rInAttrs.GetPool() ), 673 aXFillAttr ( pXPool ), 674 rXFSet ( aXFillAttr.GetItemSet() ) 675 { 676 FreeResource(); 677 678 String accName = String(CUI_RES(STR_EXAMPLE)); 679 aCtlXRectPreview.SetAccessibleName(accName); 680 aCtlBitmapPreview.SetAccessibleName(accName); 681 682 // Gruppen, die sich ueberlagern 683 aLbBitmap.Hide(); 684 aCtlBitmapPreview.Hide(); 685 686 aFlStepCount.Hide(); 687 aTsbStepCount.Hide(); 688 aNumFldStepCount.Hide(); 689 690 aTsbTile.Hide(); 691 aTsbStretch.Hide(); 692 aTsbScale.Hide(); 693 aTsbOriginal.Hide(); 694 aFtXSize.Hide(); 695 aMtrFldXSize.Hide(); 696 aFtYSize.Hide(); 697 aMtrFldYSize.Hide(); 698 aFlSize.Hide(); 699 aRbtRow.Hide(); 700 aRbtColumn.Hide(); 701 aMtrFldOffset.Hide(); 702 aFlOffset.Hide(); 703 aCtlPosition.Hide(); 704 aFtXOffset.Hide(); 705 aMtrFldXOffset.Hide(); 706 aFtYOffset.Hide(); 707 aMtrFldYOffset.Hide(); 708 aFlPosition.Hide(); 709 // Controls for Hatch-Background 710 aCbxHatchBckgrd.Hide(); 711 aLbHatchBckgrdColor.Hide(); 712 713 714 aTsbOriginal.EnableTriState( sal_False ); 715 716 717 // this page needs ExchangeSupport 718 SetExchangeSupport(); 719 720 // set Metrics 721 eFUnit = GetModuleFieldUnit( rInAttrs ); 722 723 switch ( eFUnit ) 724 { 725 case FUNIT_M: 726 case FUNIT_KM: 727 eFUnit = FUNIT_MM; 728 break; 729 default: ;//prevent warning 730 } 731 SetFieldUnit( aMtrFldXSize, eFUnit, sal_True ); 732 SetFieldUnit( aMtrFldYSize, eFUnit, sal_True ); 733 734 // get PoolUnit 735 SfxItemPool* pPool = rOutAttrs.GetPool(); 736 DBG_ASSERT( pPool, "Wo ist der Pool?" ); 737 ePoolUnit = pPool->GetMetric( XATTR_FILLBMP_SIZEX ); 738 739 // Setzen Output-Devices 740 rXFSet.Put( XFillStyleItem( XFILL_SOLID ) ); 741 rXFSet.Put( XFillColorItem( String(), COL_BLACK ) ); 742 aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() ); 743 aCtlBitmapPreview.SetAttributes( aXFillAttr.GetItemSet() ); 744 745 aLbColor.SetSelectHdl( LINK( this, SvxAreaTabPage, ModifyColorHdl_Impl ) ); 746 aLbHatchBckgrdColor.SetSelectHdl( LINK( this, SvxAreaTabPage, ModifyHatchBckgrdColorHdl_Impl ) ); 747 aCbxHatchBckgrd.SetToggleHdl( LINK( this, SvxAreaTabPage, ToggleHatchBckgrdColorHdl_Impl ) ); 748 749 aLbGradient.SetSelectHdl( 750 LINK( this, SvxAreaTabPage, ModifyGradientHdl_Impl ) ); 751 aLbHatching.SetSelectHdl( 752 LINK( this, SvxAreaTabPage, ModifyHatchingHdl_Impl ) ); 753 aLbBitmap.SetSelectHdl( 754 LINK( this, SvxAreaTabPage, ModifyBitmapHdl_Impl ) ); 755 756 aTsbStepCount.SetClickHdl( 757 LINK( this, SvxAreaTabPage, ModifyStepCountHdl_Impl ) ); 758 aNumFldStepCount.SetModifyHdl( 759 LINK( this, SvxAreaTabPage, ModifyStepCountHdl_Impl ) ); 760 761 Link aLink( LINK( this, SvxAreaTabPage, ModifyTileHdl_Impl ) ); 762 aTsbTile.SetClickHdl( aLink ); 763 aTsbStretch.SetClickHdl( aLink ); 764 aTsbOriginal.SetClickHdl( aLink ); 765 aMtrFldXSize.SetModifyHdl( aLink ); 766 aMtrFldYSize.SetModifyHdl( aLink ); 767 aRbtRow.SetClickHdl( aLink ); 768 aRbtColumn.SetClickHdl( aLink ); 769 aMtrFldOffset.SetModifyHdl( aLink ); 770 aMtrFldXOffset.SetModifyHdl( aLink ); 771 aMtrFldYOffset.SetModifyHdl( aLink ); 772 aTsbScale.SetClickHdl( LINK( this, SvxAreaTabPage, ClickScaleHdl_Impl ) ); 773 774 aTypeLB.SetSelectHdl( LINK( this, SvxAreaTabPage, SelectDialogTypeHdl_Impl ) ); 775 776 // #i76307# always paint the preview in LTR, because this is what the document does 777 aCtlXRectPreview.EnableRTL(sal_False); 778 779 aNumFldStepCount.SetAccessibleRelationLabeledBy( &aTsbStepCount ); 780 aCtlPosition.SetAccessibleRelationMemberOf( &aFlPosition ); 781 aLbHatchBckgrdColor.SetAccessibleRelationLabeledBy( &aCbxHatchBckgrd ); 782 aLbHatchBckgrdColor.SetAccessibleName(aCbxHatchBckgrd.GetText()); 783 784 aLbColor.SetAccessibleRelationMemberOf( &aFlProp ); 785 aMtrFldOffset.SetAccessibleRelationLabeledBy(&aFlOffset); 786 aMtrFldOffset.SetAccessibleName(aFlOffset.GetText()); 787 } 788 789 // ----------------------------------------------------------------------- 790 791 void SvxAreaTabPage::Construct() 792 { 793 // fill colortables / lists 794 aLbColor.Fill( pColorTab ); 795 aLbHatchBckgrdColor.Fill ( pColorTab ); 796 797 aLbGradient.Fill( pGradientList ); 798 aLbHatching.Fill( pHatchingList ); 799 aLbBitmap.Fill( pBitmapList ); 800 } 801 802 // ----------------------------------------------------------------------- 803 804 void SvxAreaTabPage::ActivatePage( const SfxItemSet& rSet ) 805 { 806 sal_uInt16 _nPos = 0; 807 sal_uInt16 nCount; 808 //add CHINA001 Begin 809 SFX_ITEMSET_ARG (&rSet,pPageTypeItem,SfxUInt16Item,SID_PAGE_TYPE,sal_False); 810 SFX_ITEMSET_ARG (&rSet,pPosItem,SfxUInt16Item,SID_TABPAGE_POS,sal_False); 811 if (pPageTypeItem) 812 SetPageType(pPageTypeItem->GetValue()); 813 if (pPosItem) 814 SetPos(pPosItem->GetValue()); 815 //add CHINA001 end 816 if( nDlgType == 0 )//CHINA001 if( *pDlgType == 0 ) // Flaechen-Dialog 817 { 818 *pbAreaTP = sal_True; 819 820 if( pColorTab ) 821 { 822 // Bitmapliste 823 if( *pnBitmapListState ) 824 { 825 if( *pnBitmapListState & CT_CHANGED ) 826 pBitmapList = ( (SvxAreaTabDialog*) DLGWIN )-> 827 GetNewBitmapList(); 828 829 _nPos = aLbBitmap.GetSelectEntryPos(); 830 831 aLbBitmap.Clear(); 832 aLbBitmap.Fill( pBitmapList ); 833 nCount = aLbBitmap.GetEntryCount(); 834 if( nCount == 0 ) 835 ; // This case should never occur 836 else if( nCount <= _nPos ) 837 aLbBitmap.SelectEntryPos( 0 ); 838 else 839 aLbBitmap.SelectEntryPos( _nPos ); 840 ModifyBitmapHdl_Impl( this ); 841 } 842 // hatch-liste 843 if( *pnHatchingListState ) 844 { 845 if( *pnHatchingListState & CT_CHANGED ) 846 pHatchingList = ( (SvxAreaTabDialog*) DLGWIN )-> 847 GetNewHatchingList(); 848 849 _nPos = aLbHatching.GetSelectEntryPos(); 850 851 aLbHatching.Clear(); 852 aLbHatching.Fill( pHatchingList ); 853 nCount = aLbHatching.GetEntryCount(); 854 if( nCount == 0 ) 855 ; // This case should never occur 856 else if( nCount <= _nPos ) 857 aLbHatching.SelectEntryPos( 0 ); 858 else 859 aLbHatching.SelectEntryPos( _nPos ); 860 ModifyHatchingHdl_Impl( this ); 861 862 ModifyHatchBckgrdColorHdl_Impl( this ); 863 } 864 // gradient-liste 865 if( *pnGradientListState ) 866 { 867 if( *pnGradientListState & CT_CHANGED ) 868 pGradientList = ( (SvxAreaTabDialog*) DLGWIN )-> 869 GetNewGradientList(); 870 871 _nPos = aLbGradient.GetSelectEntryPos(); 872 873 aLbGradient.Clear(); 874 aLbGradient.Fill( pGradientList ); 875 nCount = aLbGradient.GetEntryCount(); 876 if( nCount == 0 ) 877 ; // This case should never occur 878 else if( nCount <= _nPos ) 879 aLbGradient.SelectEntryPos( 0 ); 880 else 881 aLbGradient.SelectEntryPos( _nPos ); 882 ModifyGradientHdl_Impl( this ); 883 } 884 // ColorTable 885 if( *pnColorTableState ) 886 { 887 if( *pnColorTableState & CT_CHANGED ) 888 pColorTab = ( (SvxAreaTabDialog*) DLGWIN )-> 889 GetNewColorTable(); 890 // aLbColor 891 _nPos = aLbColor.GetSelectEntryPos(); 892 aLbColor.Clear(); 893 aLbColor.Fill( pColorTab ); 894 nCount = aLbColor.GetEntryCount(); 895 if( nCount == 0 ) 896 ; // This case should never occur 897 else if( nCount <= _nPos ) 898 aLbColor.SelectEntryPos( 0 ); 899 else 900 aLbColor.SelectEntryPos( _nPos ); 901 902 ModifyColorHdl_Impl( this ); 903 904 // Backgroundcolor of hatch 905 _nPos = aLbHatchBckgrdColor.GetSelectEntryPos(); 906 aLbHatchBckgrdColor.Clear(); 907 aLbHatchBckgrdColor.Fill( pColorTab ); 908 nCount = aLbHatchBckgrdColor.GetEntryCount(); 909 if( nCount == 0 ) 910 ; // This case should never occur 911 else if( nCount <= _nPos ) 912 aLbHatchBckgrdColor.SelectEntryPos( 0 ); 913 else 914 aLbHatchBckgrdColor.SelectEntryPos( _nPos ); 915 916 ModifyHatchBckgrdColorHdl_Impl( this ); 917 } 918 919 // evaluate if any other Tabpage set another filltype 920 if( aTypeLB.GetSelectEntryPos() > XFILL_NONE) 921 { 922 switch( nPageType )//CHINA001 switch( *pPageType ) 923 { 924 case PT_GRADIENT: 925 aTypeLB.SelectEntryPos( XFILL_GRADIENT ); 926 aLbGradient.SelectEntryPos( _nPos );//CHINA001 aLbGradient.SelectEntryPos( *pPos ); 927 ClickGradientHdl_Impl( this ); 928 break; 929 930 case PT_HATCH: 931 aTypeLB.SelectEntryPos( XFILL_HATCH ); 932 aLbHatching.SelectEntryPos( _nPos );//CHINA001 aLbHatching.SelectEntryPos( *pPos ); 933 ClickHatchingHdl_Impl( this ); 934 break; 935 936 case PT_BITMAP: 937 aTypeLB.SelectEntryPos( XFILL_BITMAP ); 938 aLbBitmap.SelectEntryPos( _nPos );//CHINA001 aLbBitmap.SelectEntryPos( *pPos ); 939 ClickBitmapHdl_Impl( this ); 940 break; 941 942 case PT_COLOR: 943 aTypeLB.SelectEntryPos( XFILL_SOLID ); 944 aLbColor.SelectEntryPos( _nPos );//CHINA001 aLbColor.SelectEntryPos( *pPos ); 945 aLbHatchBckgrdColor.SelectEntryPos( _nPos ); //CHINA001 aLbHatchBckgrdColor.SelectEntryPos( *pPos ); 946 ClickColorHdl_Impl( this ); 947 break; 948 } 949 } 950 nPageType = PT_AREA;//CHINA001 *pPageType = PT_AREA; 951 } 952 } 953 } 954 955 // ----------------------------------------------------------------------- 956 957 int SvxAreaTabPage::DeactivatePage( SfxItemSet* _pSet ) 958 { 959 if( nDlgType == 0 ) // Flaechen-Dialog//CHINA001 if( *pDlgType == 0 ) // Flaechen-Dialog 960 { 961 XFillStyle eStyle = (XFillStyle) aTypeLB.GetSelectEntryPos(); 962 switch( eStyle ) 963 { 964 case XFILL_GRADIENT: 965 { 966 nPageType = PT_GRADIENT;//CHINA001 *pPageType = PT_GRADIENT; 967 nPos = aLbGradient.GetSelectEntryPos();//CHINA001 *pPos = aLbGradient.GetSelectEntryPos(); 968 } 969 break; 970 case XFILL_HATCH: 971 { 972 nPageType = PT_HATCH;//CHINA001 *pPageType = PT_HATCH; 973 nPos = aLbHatching.GetSelectEntryPos();//CHINA001 *pPos = aLbHatching.GetSelectEntryPos(); 974 } 975 break; 976 case XFILL_BITMAP: 977 { 978 nPageType = PT_BITMAP;//CHINA001 *pPageType = PT_BITMAP; 979 nPos = aLbBitmap.GetSelectEntryPos();//CHINA001 *pPos = aLbBitmap.GetSelectEntryPos(); 980 } 981 break; 982 case XFILL_SOLID: 983 { 984 nPageType = PT_COLOR;//CHINA001 *pPageType = PT_COLOR; 985 nPos = aLbColor.GetSelectEntryPos();//CHINA001 *pPos = aLbColor.GetSelectEntryPos(); 986 } 987 break; 988 default: ;//prevent warning 989 } 990 } 991 992 if( _pSet ) 993 FillItemSet( *_pSet ); 994 995 return( LEAVE_PAGE ); 996 } 997 998 // ----------------------------------------------------------------------- 999 1000 sal_Bool SvxAreaTabPage::FillItemSet( SfxItemSet& rAttrs ) 1001 { 1002 const SfxPoolItem* pOld = NULL; 1003 sal_uInt16 _nPos; 1004 sal_Bool bModified = sal_False; 1005 1006 if( nDlgType != 0 || *pbAreaTP )//CHINA001 if( *pDlgType != 0 || *pbAreaTP ) 1007 { 1008 XFillStyle eStyle = (XFillStyle) aTypeLB.GetSelectEntryPos(); 1009 XFillStyle eSavedStyle = (XFillStyle) aTypeLB.GetSavedValue(); 1010 switch( eStyle ) 1011 { 1012 case XFILL_NONE: 1013 { 1014 if( eSavedStyle != eStyle ) 1015 { 1016 XFillStyleItem aStyleItem( XFILL_NONE ); 1017 pOld = GetOldItem( rAttrs, XATTR_FILLSTYLE ); 1018 if ( !pOld || !( *(const XFillStyleItem*)pOld == aStyleItem ) ) 1019 { 1020 rAttrs.Put( aStyleItem ); 1021 bModified = sal_True; 1022 } 1023 } 1024 } 1025 break; 1026 case XFILL_SOLID: 1027 { 1028 _nPos = aLbColor.GetSelectEntryPos(); 1029 if( _nPos != LISTBOX_ENTRY_NOTFOUND && 1030 _nPos != aLbColor.GetSavedValue() ) 1031 { 1032 XFillColorItem aItem( aLbColor.GetSelectEntry(), 1033 aLbColor.GetSelectEntryColor() ); 1034 pOld = GetOldItem( rAttrs, XATTR_FILLCOLOR ); 1035 if ( !pOld || !( *(const XFillColorItem*)pOld == aItem ) ) 1036 { 1037 rAttrs.Put( aItem ); 1038 bModified = sal_True; 1039 } 1040 } 1041 // NEU 1042 if( (eSavedStyle != eStyle) && 1043 ( bModified || 1044 SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLCOLOR ), sal_True ) ) ) 1045 { 1046 XFillStyleItem aStyleItem( XFILL_SOLID ); 1047 pOld = GetOldItem( rAttrs, XATTR_FILLSTYLE ); 1048 if ( !pOld || !( *(const XFillStyleItem*)pOld == aStyleItem ) ) 1049 { 1050 rAttrs.Put( aStyleItem ); 1051 bModified = sal_True; 1052 } 1053 } 1054 } 1055 break; 1056 case XFILL_GRADIENT: 1057 { 1058 _nPos = aLbGradient.GetSelectEntryPos(); 1059 if( _nPos != LISTBOX_ENTRY_NOTFOUND && 1060 _nPos != aLbGradient.GetSavedValue() ) 1061 { 1062 XGradient aGradient = pGradientList->GetGradient( _nPos )->GetGradient(); 1063 String aString = aLbGradient.GetSelectEntry(); 1064 XFillGradientItem aItem( aString, aGradient ); 1065 pOld = GetOldItem( rAttrs, XATTR_FILLGRADIENT ); 1066 if ( !pOld || !( *(const XFillGradientItem*)pOld == aItem ) ) 1067 { 1068 rAttrs.Put( aItem ); 1069 bModified = sal_True; 1070 } 1071 } 1072 // NEU 1073 if( (eSavedStyle != eStyle) && 1074 ( bModified || 1075 SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLGRADIENT ), sal_True ) ) ) 1076 { 1077 XFillStyleItem aStyleItem( XFILL_GRADIENT ); 1078 pOld = GetOldItem( rAttrs, XATTR_FILLSTYLE ); 1079 if ( !pOld || !( *(const XFillStyleItem*)pOld == aStyleItem ) ) 1080 { 1081 rAttrs.Put( aStyleItem ); 1082 bModified = sal_True; 1083 } 1084 } 1085 } 1086 break; 1087 case XFILL_HATCH: 1088 { 1089 _nPos = aLbHatching.GetSelectEntryPos(); 1090 if( _nPos != LISTBOX_ENTRY_NOTFOUND && 1091 _nPos != aLbHatching.GetSavedValue() ) 1092 { 1093 XHatch aHatching = pHatchingList->GetHatch( _nPos )->GetHatch(); 1094 String aString = aLbHatching.GetSelectEntry(); 1095 XFillHatchItem aItem( aString, aHatching ); 1096 pOld = GetOldItem( rAttrs, XATTR_FILLHATCH ); 1097 if ( !pOld || !( *(const XFillHatchItem*)pOld == aItem ) ) 1098 { 1099 rAttrs.Put( aItem ); 1100 bModified = sal_True; 1101 } 1102 } 1103 XFillBackgroundItem aItem ( aCbxHatchBckgrd.IsChecked() ); 1104 rAttrs.Put( aItem ); 1105 nPos = aLbHatchBckgrdColor.GetSelectEntryPos(); 1106 if( nPos != LISTBOX_ENTRY_NOTFOUND && 1107 nPos != aLbHatchBckgrdColor.GetSavedValue() ) 1108 { 1109 XFillColorItem aFillColorItem( aLbHatchBckgrdColor.GetSelectEntry(), 1110 aLbHatchBckgrdColor.GetSelectEntryColor() ); 1111 pOld = GetOldItem( rAttrs, XATTR_FILLCOLOR ); 1112 if ( !pOld || !( *(const XFillColorItem*)pOld == aFillColorItem ) ) 1113 { 1114 rAttrs.Put( aFillColorItem ); 1115 bModified = sal_True; 1116 } 1117 } 1118 // NEU 1119 if( (eSavedStyle != eStyle) && 1120 ( bModified || 1121 SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLHATCH ), sal_True ) ) ) 1122 { 1123 XFillStyleItem aStyleItem( XFILL_HATCH ); 1124 pOld = GetOldItem( rAttrs, XATTR_FILLSTYLE ); 1125 if ( !pOld || !( *(const XFillStyleItem*)pOld == aStyleItem ) ) 1126 { 1127 rAttrs.Put( aStyleItem ); 1128 bModified = sal_True; 1129 } 1130 } 1131 } 1132 break; 1133 case XFILL_BITMAP: 1134 { 1135 nPos = aLbBitmap.GetSelectEntryPos(); 1136 if( nPos != LISTBOX_ENTRY_NOTFOUND && 1137 nPos != aLbBitmap.GetSavedValue() ) 1138 { 1139 XOBitmap aXOBitmap = pBitmapList->GetBitmap( nPos )->GetXBitmap(); 1140 String aString = aLbBitmap.GetSelectEntry(); 1141 XFillBitmapItem aFillBitmapItem( aString, aXOBitmap ); 1142 pOld = GetOldItem( rAttrs, XATTR_FILLBITMAP ); 1143 if ( !pOld || !( *(const XFillBitmapItem*)pOld == aFillBitmapItem ) ) 1144 { 1145 rAttrs.Put( aFillBitmapItem ); 1146 bModified = sal_True; 1147 } 1148 } 1149 // NEU 1150 if( (eSavedStyle != eStyle) && 1151 ( bModified || 1152 SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLBITMAP ), sal_True ) ) ) 1153 { 1154 XFillStyleItem aStyleItem( XFILL_BITMAP ); 1155 pOld = GetOldItem( rAttrs, XATTR_FILLSTYLE ); 1156 if ( !pOld || !( *(const XFillStyleItem*)pOld == aStyleItem ) ) 1157 { 1158 rAttrs.Put( aStyleItem ); 1159 bModified = sal_True; 1160 } 1161 } 1162 } 1163 break; 1164 } 1165 1166 // Schrittweite 1167 if( aTsbStepCount.IsEnabled() ) 1168 { 1169 sal_uInt16 nValue = 0; 1170 sal_Bool bValueModified = sal_False; 1171 TriState eState = aTsbStepCount.GetState(); 1172 if( eState == STATE_CHECK ) 1173 { 1174 if( eState != aTsbStepCount.GetSavedValue() ) 1175 bValueModified = sal_True; 1176 } 1177 else 1178 { 1179 // Zustand != Disabled ? 1180 if( aNumFldStepCount.GetText().Len() > 0 ) 1181 { 1182 nValue = (sal_uInt16) aNumFldStepCount.GetValue(); 1183 if( nValue != (sal_uInt16) aNumFldStepCount.GetSavedValue().ToInt32() ) 1184 bValueModified = sal_True; 1185 } 1186 } 1187 if( bValueModified ) 1188 { 1189 XGradientStepCountItem aFillBitmapItem( nValue ); 1190 pOld = GetOldItem( rAttrs, XATTR_GRADIENTSTEPCOUNT ); 1191 if ( !pOld || !( *(const XGradientStepCountItem*)pOld == aFillBitmapItem ) ) 1192 { 1193 rAttrs.Put( aFillBitmapItem ); 1194 bModified = sal_True; 1195 } 1196 } 1197 } 1198 1199 // Kacheln 1200 if( aTsbTile.IsEnabled() ) 1201 { 1202 TriState eState = aTsbTile.GetState(); 1203 if( eState != aTsbTile.GetSavedValue() ) 1204 { 1205 XFillBmpTileItem aFillBmpTileItem( 1206 sal::static_int_cast< sal_Bool >( eState ) ); 1207 pOld = GetOldItem( rAttrs, XATTR_FILLBMP_TILE ); 1208 if ( !pOld || !( *(const XFillBmpTileItem*)pOld == aFillBmpTileItem ) ) 1209 { 1210 rAttrs.Put( aFillBmpTileItem ); 1211 bModified = sal_True; 1212 } 1213 } 1214 } 1215 // Stretchen 1216 if( aTsbStretch.IsEnabled() ) 1217 { 1218 TriState eState = aTsbStretch.GetState(); 1219 if( eState != aTsbStretch.GetSavedValue() ) 1220 { 1221 XFillBmpStretchItem aFillBmpStretchItem( 1222 sal::static_int_cast< sal_Bool >( eState ) ); 1223 pOld = GetOldItem( rAttrs, XATTR_FILLBMP_STRETCH ); 1224 if ( !pOld || !( *(const XFillBmpStretchItem*)pOld == aFillBmpStretchItem ) ) 1225 { 1226 rAttrs.Put( aFillBmpStretchItem ); 1227 bModified = sal_True; 1228 } 1229 } 1230 } 1231 1232 // Originalgroesse (im UI) wird wie folgt benutzt: 1233 // Controls sind disabled, muessen aber gesetzt werden. 1234 // SizeX = 0; SizeY = 0; Log = sal_True 1235 1236 //aTsbScale 1237 TriState eState = aTsbScale.GetState(); 1238 if( eState != aTsbScale.GetSavedValue() || 1239 ( !aTsbScale.IsEnabled() && 1240 aTsbOriginal.IsEnabled() && 1241 aTsbScale.GetSavedValue() != STATE_CHECK ) ) 1242 { 1243 XFillBmpSizeLogItem* pItem = NULL; 1244 if( aTsbScale.IsEnabled() ) 1245 pItem = new XFillBmpSizeLogItem( eState == STATE_NOCHECK ); 1246 else if( aTsbOriginal.IsEnabled() && aTsbOriginal.GetState() == STATE_CHECK ) 1247 pItem = new XFillBmpSizeLogItem( sal_True ); 1248 1249 if( pItem ) 1250 { 1251 pOld = GetOldItem( rAttrs, XATTR_FILLBMP_SIZELOG ); 1252 if ( !pOld || !( *(const XFillBmpSizeLogItem*)pOld == *pItem ) ) 1253 { 1254 rAttrs.Put( *pItem ); 1255 bModified = sal_True; 1256 } 1257 delete pItem; 1258 } 1259 } 1260 1261 //aMtrFldXSize 1262 String aStr = aMtrFldXSize.GetText(); 1263 { 1264 XFillBmpSizeXItem* pItem = NULL; 1265 TriState eScaleState = aTsbScale.GetState(); 1266 1267 if( aMtrFldXSize.IsEnabled() && 1268 aStr.Len() > 0 && 1269 aStr != aMtrFldXSize.GetSavedValue() ) 1270 { 1271 if( eScaleState == STATE_NOCHECK ) 1272 pItem = new XFillBmpSizeXItem( GetCoreValue( aMtrFldXSize, ePoolUnit ) ); 1273 else 1274 { 1275 // Prozentwerte werden negativ gesetzt, damit 1276 // diese nicht skaliert werden; dieses wird 1277 // im Item beruecksichtigt ( KA05.11.96 ) 1278 pItem = new XFillBmpSizeXItem( -labs( static_cast<long>(aMtrFldXSize.GetValue()) ) ); 1279 } 1280 } 1281 else if( aTsbOriginal.IsEnabled() && 1282 aTsbOriginal.GetState() == STATE_CHECK && 1283 aMtrFldXSize.GetSavedValue().Len() > 0 ) 1284 pItem = new XFillBmpSizeXItem( 0 ); 1285 1286 if( pItem ) 1287 { 1288 pOld = GetOldItem( rAttrs, XATTR_FILLBMP_SIZEX ); 1289 if ( !pOld || !( *(const XFillBmpSizeXItem*)pOld == *pItem ) ) 1290 { 1291 rAttrs.Put( *pItem ); 1292 bModified = sal_True; 1293 } 1294 delete pItem; 1295 } 1296 } 1297 1298 //aMtrFldYSize 1299 aStr = aMtrFldYSize.GetText(); 1300 { 1301 XFillBmpSizeYItem* pItem = NULL; 1302 TriState eScaleState = aTsbScale.GetState(); 1303 1304 if( aMtrFldYSize.IsEnabled() && 1305 aStr.Len() > 0 && 1306 aStr != aMtrFldYSize.GetSavedValue() ) 1307 { 1308 if( eScaleState == STATE_NOCHECK ) 1309 pItem = new XFillBmpSizeYItem( GetCoreValue( aMtrFldYSize, ePoolUnit ) ); 1310 else 1311 { 1312 // Prozentwerte werden negativ gesetzt, damit 1313 // diese vom MetricItem nicht skaliert werden; 1314 // dieses wird im Item beruecksichtigt ( KA05.11.96 ) 1315 pItem = new XFillBmpSizeYItem( -labs( static_cast<long>(aMtrFldYSize.GetValue()) ) ); 1316 } 1317 } 1318 else if( aTsbOriginal.IsEnabled() && 1319 aTsbOriginal.GetState() == STATE_CHECK && 1320 aMtrFldYSize.GetSavedValue().Len() > 0 ) 1321 pItem = new XFillBmpSizeYItem( 0 ); 1322 1323 if( pItem ) 1324 { 1325 pOld = GetOldItem( rAttrs, XATTR_FILLBMP_SIZEY ); 1326 if ( !pOld || !( *(const XFillBmpSizeYItem*)pOld == *pItem ) ) 1327 { 1328 rAttrs.Put( *pItem ); 1329 bModified = sal_True; 1330 } 1331 delete pItem; 1332 } 1333 } 1334 1335 //aRbtRow 1336 //aRbtColumn 1337 //aMtrFldOffset 1338 if( aMtrFldOffset.IsEnabled() ) 1339 { 1340 String aMtrString = aMtrFldOffset.GetText(); 1341 if( ( aMtrString.Len() > 0 && 1342 aMtrString != aMtrFldOffset.GetSavedValue() ) || 1343 aRbtRow.GetSavedValue() != aRbtRow.IsChecked() || 1344 aRbtColumn.GetSavedValue() != aRbtColumn.IsChecked() ) 1345 { 1346 if( aRbtRow.IsChecked() ) 1347 { 1348 XFillBmpTileOffsetXItem aFillBmpTileOffsetXItem( (sal_uInt16) aMtrFldOffset.GetValue() ); 1349 pOld = GetOldItem( rAttrs, XATTR_FILLBMP_TILEOFFSETX ); 1350 if ( !pOld || !( *(const XFillBmpTileOffsetXItem*)pOld == aFillBmpTileOffsetXItem ) ) 1351 { 1352 rAttrs.Put( aFillBmpTileOffsetXItem ); 1353 rAttrs.Put( XFillBmpTileOffsetYItem( 0 ) ); 1354 bModified = sal_True; 1355 } 1356 } 1357 else if( aRbtColumn.IsChecked() ) 1358 { 1359 XFillBmpTileOffsetYItem aFillBmpTileOffsetYItem( (sal_uInt16) aMtrFldOffset.GetValue() ); 1360 pOld = GetOldItem( rAttrs, XATTR_FILLBMP_TILEOFFSETY ); 1361 if ( !pOld || !( *(const XFillBmpTileOffsetYItem*)pOld == aFillBmpTileOffsetYItem ) ) 1362 { 1363 rAttrs.Put( aFillBmpTileOffsetYItem ); 1364 rAttrs.Put( XFillBmpTileOffsetXItem( 0 ) ); 1365 bModified = sal_True; 1366 } 1367 } 1368 } 1369 } 1370 1371 //aCtlPosition 1372 if( aCtlPosition.IsEnabled() ) 1373 { 1374 sal_Bool bPut = sal_False; 1375 RECT_POINT _eRP = aCtlPosition.GetActualRP(); 1376 1377 if( SFX_ITEM_DONTCARE == rOutAttrs.GetItemState( XATTR_FILLBMP_POS ) ) 1378 bPut = sal_True; 1379 else 1380 { 1381 RECT_POINT eValue = ( ( const XFillBmpPosItem& ) rOutAttrs.Get( XATTR_FILLBMP_POS ) ).GetValue(); 1382 if( eValue != _eRP ) 1383 bPut = sal_True; 1384 } 1385 if( bPut ) 1386 { 1387 XFillBmpPosItem aFillBmpPosItem( _eRP ); 1388 pOld = GetOldItem( rAttrs, XATTR_FILLBMP_POS ); 1389 if ( !pOld || !( *(const XFillBmpPosItem*)pOld == aFillBmpPosItem ) ) 1390 { 1391 rAttrs.Put( aFillBmpPosItem ); 1392 bModified = sal_True; 1393 } 1394 } 1395 } 1396 1397 //aMtrFldXOffset 1398 if( aMtrFldXOffset.IsEnabled() ) 1399 { 1400 String sMtrXOffset = aMtrFldXOffset.GetText(); 1401 if( sMtrXOffset.Len() > 0 && 1402 sMtrXOffset != aMtrFldXOffset.GetSavedValue() ) 1403 { 1404 XFillBmpPosOffsetXItem aFillBmpPosOffsetXItem( (sal_uInt16) aMtrFldXOffset.GetValue() ); 1405 pOld = GetOldItem( rAttrs, XATTR_FILLBMP_POSOFFSETX ); 1406 if ( !pOld || !( *(const XFillBmpPosOffsetXItem*)pOld == aFillBmpPosOffsetXItem ) ) 1407 { 1408 rAttrs.Put( aFillBmpPosOffsetXItem ); 1409 bModified = sal_True; 1410 } 1411 } 1412 } 1413 1414 //aMtrFldYOffset 1415 if( aMtrFldYOffset.IsEnabled() ) 1416 { 1417 String sMtrYOffset = aMtrFldYOffset.GetText(); 1418 if( sMtrYOffset.Len() > 0 && 1419 sMtrYOffset != aMtrFldYOffset.GetSavedValue() ) 1420 { 1421 XFillBmpPosOffsetYItem aFillBmpPosOffsetYItem( (sal_uInt16) aMtrFldYOffset.GetValue() ); 1422 pOld = GetOldItem( rAttrs, XATTR_FILLBMP_POSOFFSETY ); 1423 if ( !pOld || !( *(const XFillBmpPosOffsetYItem*)pOld == aFillBmpPosOffsetYItem ) ) 1424 { 1425 rAttrs.Put( aFillBmpPosOffsetYItem ); 1426 bModified = sal_True; 1427 } 1428 } 1429 } 1430 //add CHINA001 begin 1431 rAttrs.Put (SfxUInt16Item(SID_PAGE_TYPE,nPageType)); 1432 rAttrs.Put (SfxUInt16Item(SID_TABPAGE_POS,nPos)); 1433 //add CHINA001 end 1434 } 1435 1436 return( bModified ); 1437 } 1438 1439 // ----------------------------------------------------------------------- 1440 1441 void SvxAreaTabPage::Reset( const SfxItemSet& rAttrs ) 1442 { 1443 //const SfxPoolItem *pPoolItem = NULL; 1444 1445 XFillStyle eXFS; 1446 if( rAttrs.GetItemState( XATTR_FILLSTYLE ) != SFX_ITEM_DONTCARE ) 1447 { 1448 eXFS = (XFillStyle) ( ( ( const XFillStyleItem& ) rAttrs. 1449 Get( GetWhich( XATTR_FILLSTYLE ) ) ).GetValue() ); 1450 aTypeLB.SelectEntryPos( sal::static_int_cast< sal_uInt16 >( eXFS ) ); 1451 switch( eXFS ) 1452 { 1453 case XFILL_NONE: 1454 ClickInvisibleHdl_Impl( this ); 1455 break; 1456 1457 case XFILL_SOLID: 1458 //if( SFX_ITEM_DONTCARE != rAttrs.GetItemState( GetWhich( XATTR_FILLCOLOR ), sal_True, &pPoolItem ) ) 1459 if( SFX_ITEM_DONTCARE != rAttrs.GetItemState( XATTR_FILLCOLOR ) ) 1460 { 1461 XFillColorItem aColorItem( ( const XFillColorItem& ) 1462 rAttrs.Get( XATTR_FILLCOLOR ) ); 1463 1464 aLbColor.SelectEntry( aColorItem.GetColorValue() ); 1465 aLbHatchBckgrdColor.SelectEntry( aColorItem.GetColorValue() ); 1466 } 1467 ClickColorHdl_Impl( this ); 1468 1469 break; 1470 1471 case XFILL_GRADIENT: 1472 //if( SFX_ITEM_DONTCARE != rAttrs.GetItemState( GetWhich( XATTR_FILLGRADIENT ), sal_True, &pPoolItem ) ) 1473 if( SFX_ITEM_DONTCARE != rAttrs.GetItemState( XATTR_FILLGRADIENT ) ) 1474 { 1475 XFillGradientItem aGradientItem( ( ( const XFillGradientItem& ) 1476 rAttrs.Get( XATTR_FILLGRADIENT ) ) ); 1477 String aString( aGradientItem.GetName() ); 1478 XGradient aGradient( aGradientItem.GetGradientValue() ); 1479 1480 aLbGradient.SelectEntryByList( pGradientList, aString, aGradient ); 1481 } 1482 ClickGradientHdl_Impl( this ); 1483 break; 1484 1485 case XFILL_HATCH: 1486 //if( SFX_ITEM_DONTCARE != rAttrs.GetItemState( GetWhich( XATTR_FILLHATCH ), sal_True, &pPoolItem ) ) 1487 if( SFX_ITEM_DONTCARE != rAttrs.GetItemState( XATTR_FILLHATCH ) ) 1488 { 1489 aLbHatching.SelectEntry( ( ( const XFillHatchItem& ) 1490 rAttrs.Get( XATTR_FILLHATCH ) ).GetName() ); 1491 } 1492 ClickHatchingHdl_Impl( this ); 1493 1494 if ( SFX_ITEM_DONTCARE != rAttrs.GetItemState ( XATTR_FILLBACKGROUND ) ) 1495 { 1496 aCbxHatchBckgrd.Check ( ( ( const XFillBackgroundItem& ) rAttrs.Get ( XATTR_FILLBACKGROUND ) ).GetValue() ); 1497 } 1498 ToggleHatchBckgrdColorHdl_Impl( this ); 1499 if( SFX_ITEM_DONTCARE != rAttrs.GetItemState( XATTR_FILLCOLOR ) ) 1500 { 1501 XFillColorItem aColorItem( ( const XFillColorItem& ) 1502 rAttrs.Get( XATTR_FILLCOLOR ) ); 1503 1504 aLbColor.SelectEntry( aColorItem.GetColorValue() ); 1505 aLbHatchBckgrdColor.SelectEntry( aColorItem.GetColorValue() ); 1506 } 1507 break; 1508 1509 case XFILL_BITMAP: 1510 { 1511 if( SFX_ITEM_DONTCARE != rAttrs.GetItemState( XATTR_FILLBITMAP ) ) 1512 { 1513 XFillBitmapItem aBitmapItem( ( const XFillBitmapItem& ) 1514 rAttrs.Get( XATTR_FILLBITMAP ) ); 1515 1516 String aString( aBitmapItem.GetName() ); 1517 aLbBitmap.SelectEntry( aString ); 1518 } 1519 ClickBitmapHdl_Impl( this ); 1520 } 1521 break; 1522 1523 default: 1524 //aLbColor.SelectEntryPos(0); 1525 //aRbtColor.Check(); 1526 break; 1527 } 1528 } 1529 else 1530 { 1531 // Alle LBs nicht zug"anglich machen 1532 aLbColor.Hide(); 1533 aLbGradient.Hide(); 1534 aLbHatching.Hide(); 1535 aLbBitmap.Hide(); 1536 aCtlBitmapPreview.Hide(); 1537 aLbColor.Disable(); 1538 aLbColor.Show(); 1539 1540 // Damit Reset() auch mit Zurueck richtig funktioniert 1541 aTypeLB.SetNoSelection(); 1542 } 1543 1544 // Schrittweite 1545 if( ( rAttrs.GetItemState( XATTR_GRADIENTSTEPCOUNT ) != SFX_ITEM_DONTCARE ) || 1546 ( rAttrs.GetItemState( XATTR_FILLSTYLE ) != SFX_ITEM_DONTCARE ) ) 1547 { 1548 aTsbStepCount.EnableTriState( sal_False ); 1549 sal_uInt16 nValue = ( ( const XGradientStepCountItem& ) rAttrs.Get( XATTR_GRADIENTSTEPCOUNT ) ).GetValue(); 1550 if( nValue == 0 ) 1551 { 1552 aTsbStepCount.SetState( STATE_CHECK ); 1553 aNumFldStepCount.SetText( String() ); 1554 } 1555 else 1556 { 1557 aTsbStepCount.SetState( STATE_NOCHECK ); 1558 aNumFldStepCount.SetValue( nValue ); 1559 } 1560 ModifyStepCountHdl_Impl( &aTsbStepCount ); 1561 } 1562 else 1563 { 1564 aTsbStepCount.SetState( STATE_DONTKNOW ); 1565 aNumFldStepCount.SetText( String() ); 1566 } 1567 1568 // Attribute fuer die Bitmap-Fuellung 1569 1570 // Ist Kacheln gesetzt? 1571 if( rAttrs.GetItemState( XATTR_FILLBMP_TILE ) != SFX_ITEM_DONTCARE ) 1572 { 1573 aTsbTile.EnableTriState( sal_False ); 1574 1575 if( ( ( const XFillBmpTileItem& ) rAttrs.Get( XATTR_FILLBMP_TILE ) ).GetValue() ) 1576 aTsbTile.SetState( STATE_CHECK ); 1577 else 1578 aTsbTile.SetState( STATE_NOCHECK ); 1579 } 1580 else 1581 aTsbTile.SetState( STATE_DONTKNOW ); 1582 1583 // Ist Stretchen gesetzt? 1584 if( rAttrs.GetItemState( XATTR_FILLBMP_STRETCH ) != SFX_ITEM_DONTCARE ) 1585 { 1586 aTsbStretch.EnableTriState( sal_False ); 1587 1588 if( ( ( const XFillBmpStretchItem& ) rAttrs.Get( XATTR_FILLBMP_STRETCH ) ).GetValue() ) 1589 aTsbStretch.SetState( STATE_CHECK ); 1590 else 1591 aTsbStretch.SetState( STATE_NOCHECK ); 1592 } 1593 else 1594 aTsbStretch.SetState( STATE_DONTKNOW ); 1595 1596 1597 //aTsbScale 1598 if( rAttrs.GetItemState( XATTR_FILLBMP_SIZELOG ) != SFX_ITEM_DONTCARE ) 1599 { 1600 aTsbScale.EnableTriState( sal_False ); 1601 1602 if( ( ( const XFillBmpSizeLogItem& ) rAttrs.Get( XATTR_FILLBMP_SIZELOG ) ).GetValue() ) 1603 aTsbScale.SetState( STATE_NOCHECK ); 1604 else 1605 aTsbScale.SetState( STATE_CHECK ); 1606 1607 ClickScaleHdl_Impl( NULL ); 1608 } 1609 else 1610 aTsbScale.SetState( STATE_DONTKNOW ); 1611 1612 1613 // Status fuer Originalgroesse ermitteln 1614 TriState eOriginal = STATE_NOCHECK; 1615 1616 //aMtrFldXSize 1617 if( rAttrs.GetItemState( XATTR_FILLBMP_SIZEX ) != SFX_ITEM_DONTCARE ) 1618 { 1619 sal_Int32 nValue = ( ( const XFillBmpSizeXItem& ) rAttrs.Get( XATTR_FILLBMP_SIZEX ) ).GetValue(); 1620 if( aTsbScale.GetState() == STATE_CHECK ) 1621 { 1622 // Wenn im Item eine Prozentangabe steckt, 1623 // so ist diese wegen des MetricItems negativ 1624 aMtrFldXSize.SetValue( labs( nValue ) ); 1625 } 1626 else 1627 SetMetricValue( aMtrFldXSize, nValue, ePoolUnit ); 1628 aMtrFldXSize.SaveValue(); 1629 1630 if( nValue == 0 ) 1631 { 1632 eOriginal = STATE_CHECK; 1633 // Wert ist beim Ausschalten von Originalgroesse sonst zu klein 1634 // (Performance-Problem) 1635 aMtrFldXSize.SetValue( 100 ); 1636 } 1637 } 1638 else 1639 { 1640 aMtrFldXSize.SetText( String() ); 1641 aMtrFldXSize.SaveValue(); 1642 } 1643 1644 //aMtrFldYSize 1645 if( rAttrs.GetItemState( XATTR_FILLBMP_SIZEY ) != SFX_ITEM_DONTCARE ) 1646 { 1647 sal_Int32 nValue = ( ( const XFillBmpSizeYItem& ) rAttrs.Get( XATTR_FILLBMP_SIZEY ) ).GetValue(); 1648 if( aTsbScale.GetState() == STATE_CHECK ) 1649 { 1650 // Wenn im Item eine Prozentangabe steckt, 1651 // so ist diese wegen des MetricItems negativ 1652 aMtrFldYSize.SetValue( labs( nValue ) ); 1653 } 1654 else 1655 SetMetricValue( aMtrFldYSize, nValue, ePoolUnit ); 1656 aMtrFldYSize.SaveValue(); 1657 1658 if( nValue == 0 ) 1659 aMtrFldYSize.SetValue( 100 ); //s.o. 1660 else 1661 eOriginal = STATE_NOCHECK; 1662 } 1663 else 1664 { 1665 aMtrFldYSize.SetText( String() ); 1666 aMtrFldYSize.SaveValue(); 1667 eOriginal = STATE_NOCHECK; 1668 } 1669 1670 // aTsbOriginal 1671 aTsbOriginal.SetState( eOriginal ); 1672 1673 // #93372# Setting proper state after changing button 1674 ModifyTileHdl_Impl( NULL ); 1675 1676 //aRbtRow 1677 //aRbtColumn 1678 //aMtrFldOffset 1679 if( rAttrs.GetItemState( XATTR_FILLBMP_TILEOFFSETX ) != SFX_ITEM_DONTCARE ) 1680 { 1681 sal_uInt16 nValue = ( ( const XFillBmpTileOffsetXItem& ) rAttrs.Get( XATTR_FILLBMP_TILEOFFSETX ) ).GetValue(); 1682 if( nValue > 0 ) 1683 { 1684 aMtrFldOffset.SetValue( nValue ); 1685 aRbtRow.Check(); 1686 } 1687 else if( rAttrs.GetItemState( XATTR_FILLBMP_TILEOFFSETY ) != SFX_ITEM_DONTCARE ) 1688 { 1689 nValue = ( ( const XFillBmpTileOffsetYItem& ) rAttrs.Get( XATTR_FILLBMP_TILEOFFSETY ) ).GetValue(); 1690 if( nValue > 0 ) 1691 { 1692 aMtrFldOffset.SetValue( nValue ); 1693 aRbtColumn.Check(); 1694 } 1695 } 1696 else 1697 aMtrFldOffset.SetValue( 0 ); 1698 } 1699 else 1700 aMtrFldOffset.SetText( String() ); 1701 1702 1703 //aCtlPosition 1704 if( rAttrs.GetItemState( XATTR_FILLBMP_POS ) != SFX_ITEM_DONTCARE ) 1705 { 1706 RECT_POINT eValue = ( ( const XFillBmpPosItem& ) rAttrs.Get( XATTR_FILLBMP_POS ) ).GetValue(); 1707 aCtlPosition.SetActualRP( eValue ); 1708 } 1709 else 1710 aCtlPosition.Reset(); 1711 1712 //aMtrFldXOffset 1713 if( rAttrs.GetItemState( XATTR_FILLBMP_POSOFFSETX ) != SFX_ITEM_DONTCARE ) 1714 { 1715 sal_Int32 nValue = ( ( const XFillBmpPosOffsetXItem& ) rAttrs.Get( XATTR_FILLBMP_POSOFFSETX ) ).GetValue(); 1716 aMtrFldXOffset.SetValue( nValue ); 1717 } 1718 else 1719 aMtrFldXOffset.SetText( String() ); 1720 1721 //aMtrFldYOffset 1722 if( rAttrs.GetItemState( XATTR_FILLBMP_POSOFFSETY ) != SFX_ITEM_DONTCARE ) 1723 { 1724 sal_Int32 nValue = ( ( const XFillBmpPosOffsetYItem& ) rAttrs.Get( XATTR_FILLBMP_POSOFFSETY ) ).GetValue(); 1725 aMtrFldYOffset.SetValue( nValue ); 1726 } 1727 else 1728 aMtrFldYOffset.SetText( String() ); 1729 1730 // Erst hier, damit Tile und Stretch mit beruecksichtigt wird 1731 if( aTypeLB.GetSelectEntryPos() == XFILL_BITMAP ) 1732 ClickBitmapHdl_Impl( NULL ); 1733 1734 // Werte sichern 1735 aTypeLB.SaveValue(); 1736 aLbColor.SaveValue(); 1737 aLbGradient.SaveValue(); 1738 aLbHatching.SaveValue(); 1739 //aCbxHatchBckgrd.SaveValue(); 1740 aLbHatchBckgrdColor.SaveValue(); 1741 aLbBitmap.SaveValue(); 1742 // aLbTransparent.SaveValue(); 1743 aTsbStepCount.SaveValue(); 1744 aNumFldStepCount.SaveValue(); 1745 aTsbTile.SaveValue(); 1746 aTsbStretch.SaveValue(); 1747 aTsbScale.SaveValue(); 1748 aRbtRow.SaveValue(); 1749 aRbtColumn.SaveValue(); 1750 aMtrFldOffset.SaveValue(); 1751 aMtrFldXOffset.SaveValue(); 1752 aMtrFldYOffset.SaveValue(); 1753 //aMtrFldXSize.SaveValue(); <- wird oben behandelt 1754 //aMtrFldYSize.SaveValue(); <- wird oben behandelt 1755 } 1756 1757 // ----------------------------------------------------------------------- 1758 1759 SfxTabPage* SvxAreaTabPage::Create( Window* pWindow, 1760 const SfxItemSet& rAttrs ) 1761 { 1762 return( new SvxAreaTabPage( pWindow, rAttrs ) ); 1763 } 1764 1765 //------------------------------------------------------------------------ 1766 1767 sal_uInt16* SvxAreaTabPage::GetRanges() 1768 { 1769 return( pAreaRanges ); 1770 } 1771 1772 //------------------------------------------------------------------------ 1773 IMPL_LINK( SvxAreaTabPage, SelectDialogTypeHdl_Impl, ListBox *, EMPTYARG ) 1774 { 1775 switch( (XFillStyle)aTypeLB.GetSelectEntryPos() ) 1776 { 1777 case XFILL_NONE: ClickInvisibleHdl_Impl( this ); break; 1778 case XFILL_SOLID: ClickColorHdl_Impl( this ); break; 1779 case XFILL_GRADIENT: ClickGradientHdl_Impl( this ); break; 1780 case XFILL_HATCH: ClickHatchingHdl_Impl( this ); break; 1781 case XFILL_BITMAP: ClickBitmapHdl_Impl( this ); break; 1782 } 1783 1784 return 0; 1785 } 1786 1787 IMPL_LINK( SvxAreaTabPage, ClickInvisibleHdl_Impl, void *, EMPTYARG ) 1788 { 1789 aTsbTile.Hide(); 1790 aTsbStretch.Hide(); 1791 aTsbScale.Hide(); 1792 aTsbOriginal.Hide(); 1793 aFtXSize.Hide(); 1794 aMtrFldXSize.Hide(); 1795 aFtYSize.Hide(); 1796 aMtrFldYSize.Hide(); 1797 aFlSize.Hide(); 1798 aRbtRow.Hide(); 1799 aRbtColumn.Hide(); 1800 aMtrFldOffset.Hide(); 1801 aFlOffset.Hide(); 1802 aCtlPosition.Hide(); 1803 aFtXOffset.Hide(); 1804 aMtrFldXOffset.Hide(); 1805 aFtYOffset.Hide(); 1806 aMtrFldYOffset.Hide(); 1807 aFlPosition.Hide(); 1808 1809 aLbColor.Hide(); 1810 aLbGradient.Hide(); 1811 aLbHatching.Hide(); 1812 aLbBitmap.Hide(); 1813 aCtlXRectPreview.Hide(); 1814 aCtlBitmapPreview.Hide(); 1815 1816 aFlStepCount.Hide(); 1817 aTsbStepCount.Hide(); 1818 aNumFldStepCount.Hide(); 1819 1820 // Controls for Hatch-Background 1821 aCbxHatchBckgrd.Hide(); 1822 aLbHatchBckgrdColor.Hide(); 1823 1824 rXFSet.Put( XFillStyleItem( XFILL_NONE ) ); 1825 aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() ); 1826 aCtlBitmapPreview.SetAttributes( aXFillAttr.GetItemSet() ); 1827 1828 aCtlXRectPreview.Invalidate(); 1829 aCtlBitmapPreview.Invalidate(); 1830 1831 return( 0L ); 1832 } 1833 1834 //------------------------------------------------------------------------ 1835 1836 IMPL_LINK( SvxAreaTabPage, ClickColorHdl_Impl, void *, EMPTYARG ) 1837 { 1838 aTsbTile.Hide(); 1839 aTsbStretch.Hide(); 1840 aTsbScale.Hide(); 1841 aTsbOriginal.Hide(); 1842 aFtXSize.Hide(); 1843 aMtrFldXSize.Hide(); 1844 aFtYSize.Hide(); 1845 aMtrFldYSize.Hide(); 1846 aFlSize.Hide(); 1847 aRbtRow.Hide(); 1848 aRbtColumn.Hide(); 1849 aMtrFldOffset.Hide(); 1850 aFlOffset.Hide(); 1851 aCtlPosition.Hide(); 1852 aFtXOffset.Hide(); 1853 aMtrFldXOffset.Hide(); 1854 aFtYOffset.Hide(); 1855 aMtrFldYOffset.Hide(); 1856 aFlPosition.Hide(); 1857 1858 aLbColor.Enable(); 1859 aLbColor.Show(); 1860 aLbGradient.Hide(); 1861 aLbHatching.Hide(); 1862 aLbBitmap.Hide(); 1863 aCtlXRectPreview.Enable(); 1864 aCtlXRectPreview.Show(); 1865 aCtlBitmapPreview.Hide(); 1866 1867 aFlStepCount.Hide(); 1868 aTsbStepCount.Hide(); 1869 aNumFldStepCount.Hide(); 1870 1871 // Controls for Hatch-Background 1872 aCbxHatchBckgrd.Hide(); 1873 aLbHatchBckgrdColor.Hide(); 1874 1875 // Text der Tabelle setzen 1876 String aString( CUI_RES( RID_SVXSTR_TABLE ) ); aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( ": " ) ); 1877 INetURLObject aURL( pColorTab->GetPath() ); 1878 1879 aURL.Append( pColorTab->GetName() ); 1880 DBG_ASSERT( aURL.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" ); 1881 1882 if( aURL.getBase().getLength() > 18 ) 1883 { 1884 aString += String(aURL.getBase()).Copy( 0, 15 ); 1885 aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "..." ) ); 1886 } 1887 else 1888 aString += String(aURL.getBase()); 1889 1890 ModifyColorHdl_Impl( this ); 1891 return( 0L ); 1892 } 1893 1894 //------------------------------------------------------------------------ 1895 1896 IMPL_LINK( SvxAreaTabPage, ModifyColorHdl_Impl, void *, EMPTYARG ) 1897 { 1898 const SfxPoolItem* pPoolItem = NULL; 1899 sal_uInt16 _nPos = aLbColor.GetSelectEntryPos(); 1900 aLbHatchBckgrdColor.SelectEntryPos( _nPos ); 1901 if( _nPos != LISTBOX_ENTRY_NOTFOUND ) 1902 { 1903 rXFSet.Put( XFillStyleItem( XFILL_SOLID ) ); 1904 rXFSet.Put( XFillColorItem( String(), 1905 aLbColor.GetSelectEntryColor() ) ); 1906 } 1907 // NEU 1908 else if( SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLCOLOR ), sal_True, &pPoolItem ) ) 1909 { 1910 rXFSet.Put( XFillStyleItem( XFILL_SOLID ) ); 1911 Color aColor( ( ( const XFillColorItem* ) pPoolItem )->GetColorValue() ); 1912 rXFSet.Put( XFillColorItem( String(), aColor ) ); 1913 } 1914 else 1915 rXFSet.Put( XFillStyleItem( XFILL_NONE ) ); 1916 1917 aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() ); 1918 aCtlXRectPreview.Invalidate(); 1919 1920 return( 0L ); 1921 } 1922 //------------------------------------------------------------------------ 1923 1924 IMPL_LINK( SvxAreaTabPage, ClickGradientHdl_Impl, void *, EMPTYARG ) 1925 { 1926 aTsbTile.Hide(); 1927 aTsbStretch.Hide(); 1928 aTsbScale.Hide(); 1929 aTsbOriginal.Hide(); 1930 aFtXSize.Hide(); 1931 aMtrFldXSize.Hide(); 1932 aFtYSize.Hide(); 1933 aMtrFldYSize.Hide(); 1934 aFlSize.Hide(); 1935 aRbtRow.Hide(); 1936 aRbtColumn.Hide(); 1937 aMtrFldOffset.Hide(); 1938 aFlOffset.Hide(); 1939 aCtlPosition.Hide(); 1940 aFtXOffset.Hide(); 1941 aMtrFldXOffset.Hide(); 1942 aFtYOffset.Hide(); 1943 aMtrFldYOffset.Hide(); 1944 aFlPosition.Hide(); 1945 1946 aLbColor.Hide(); 1947 aLbGradient.Enable(); 1948 aLbGradient.Show(); 1949 aLbHatching.Hide(); 1950 aLbBitmap.Hide(); 1951 aCtlXRectPreview.Enable(); 1952 aCtlXRectPreview.Show(); 1953 aCtlBitmapPreview.Hide(); 1954 1955 aFlStepCount.Enable(); 1956 aFlStepCount.Show(); 1957 aTsbStepCount.Enable(); 1958 aTsbStepCount.Show(); 1959 aNumFldStepCount.Show(); 1960 1961 // Controls for Hatch-Background 1962 aCbxHatchBckgrd.Hide(); 1963 aLbHatchBckgrdColor.Hide(); 1964 1965 // Text der Tabelle setzen 1966 String aString( CUI_RES( RID_SVXSTR_TABLE ) ); aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( ": " ) ); 1967 INetURLObject aURL( pGradientList->GetPath() ); 1968 1969 aURL.Append( pGradientList->GetName() ); 1970 DBG_ASSERT( aURL.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" ); 1971 1972 if( aURL.getBase().getLength() > 18 ) 1973 { 1974 aString += String(aURL.getBase()).Copy( 0, 15 ); 1975 aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "..." ) ); 1976 } 1977 else 1978 aString += String(aURL.getBase()); 1979 1980 ModifyGradientHdl_Impl( this ); 1981 ModifyStepCountHdl_Impl( &aTsbStepCount ); 1982 return( 0L ); 1983 } 1984 1985 //------------------------------------------------------------------------ 1986 1987 IMPL_LINK( SvxAreaTabPage, ModifyGradientHdl_Impl, void *, EMPTYARG ) 1988 { 1989 const SfxPoolItem* pPoolItem = NULL; 1990 sal_uInt16 _nPos = aLbGradient.GetSelectEntryPos(); 1991 if( _nPos != LISTBOX_ENTRY_NOTFOUND ) 1992 { 1993 // ItemSet fuellen und an aCtlXRectPreview weiterleiten 1994 XGradientEntry* pEntry = pGradientList->GetGradient( _nPos ); 1995 1996 rXFSet.Put( XFillStyleItem( XFILL_GRADIENT ) ); 1997 rXFSet.Put( XFillGradientItem( String(), 1998 pEntry->GetGradient() ) ); 1999 } 2000 // NEU 2001 else if( SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLGRADIENT ), sal_True, &pPoolItem ) ) 2002 { 2003 rXFSet.Put( XFillStyleItem( XFILL_GRADIENT ) ); 2004 rXFSet.Put( XFillGradientItem( String(), ( ( const XFillGradientItem* ) pPoolItem )->GetGradientValue() ) ); 2005 } 2006 else 2007 rXFSet.Put( XFillStyleItem( XFILL_NONE ) ); 2008 2009 aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() ); 2010 aCtlXRectPreview.Invalidate(); 2011 2012 return( 0L ); 2013 } 2014 2015 //------------------------------------------------------------------------ 2016 2017 IMPL_LINK( SvxAreaTabPage, ClickHatchingHdl_Impl, void *, EMPTYARG ) 2018 { 2019 aLbColor.Hide(); 2020 aLbGradient.Hide(); 2021 aLbHatching.Enable(); 2022 aLbHatching.Show(); 2023 aLbBitmap.Hide(); 2024 aCtlXRectPreview.Enable(); 2025 aCtlXRectPreview.Show(); 2026 aCtlBitmapPreview.Hide(); 2027 2028 // aGrpTransparent.Hide(); 2029 // aLbTransparent.Hide(); 2030 aFlStepCount.Hide(); 2031 aTsbStepCount.Hide(); 2032 aNumFldStepCount.Hide(); 2033 2034 aTsbTile.Hide(); 2035 aTsbStretch.Hide(); 2036 aTsbScale.Hide(); 2037 aTsbOriginal.Hide(); 2038 aFtXSize.Hide(); 2039 aMtrFldXSize.Hide(); 2040 aFtYSize.Hide(); 2041 aMtrFldYSize.Hide(); 2042 aFlSize.Hide(); 2043 aRbtRow.Hide(); 2044 aRbtColumn.Hide(); 2045 aMtrFldOffset.Hide(); 2046 aFlOffset.Hide(); 2047 aCtlPosition.Hide(); 2048 aFtXOffset.Hide(); 2049 aMtrFldXOffset.Hide(); 2050 aFtYOffset.Hide(); 2051 aMtrFldYOffset.Hide(); 2052 aFlPosition.Hide(); 2053 2054 // Controls for Hatch-Background 2055 aCbxHatchBckgrd.Show(); 2056 aLbHatchBckgrdColor.Show(); 2057 aCbxHatchBckgrd.Enable(); 2058 aLbHatchBckgrdColor.Enable(); 2059 2060 // Text der Tabelle setzen 2061 String aString( CUI_RES( RID_SVXSTR_TABLE ) ); aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( ": " ) ); 2062 INetURLObject aURL( pHatchingList->GetPath() ); 2063 2064 aURL.Append( pHatchingList->GetName() ); 2065 DBG_ASSERT( aURL.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" ); 2066 2067 if( aURL.getBase().getLength() > 18 ) 2068 { 2069 aString += String(String(aURL.getBase()).Copy( 0, 15 )); 2070 aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "..." ) ); 2071 } 2072 else 2073 aString += String(aURL.getBase()); 2074 2075 ModifyHatchingHdl_Impl( this ); 2076 ModifyHatchBckgrdColorHdl_Impl( this ); 2077 ToggleHatchBckgrdColorHdl_Impl( this ); 2078 2079 return( 0L ); 2080 } 2081 2082 //------------------------------------------------------------------------ 2083 2084 IMPL_LINK( SvxAreaTabPage, ModifyHatchingHdl_Impl, void *, EMPTYARG ) 2085 { 2086 const SfxPoolItem* pPoolItem = NULL; 2087 sal_uInt16 _nPos = aLbHatching.GetSelectEntryPos(); 2088 if( _nPos != LISTBOX_ENTRY_NOTFOUND ) 2089 { 2090 // ItemSet fuellen und an aCtlXRectPreview weiterleiten 2091 XHatchEntry* pEntry = pHatchingList->GetHatch( _nPos ); 2092 2093 rXFSet.Put( XFillStyleItem( XFILL_HATCH ) ); 2094 rXFSet.Put( XFillHatchItem( String(), pEntry->GetHatch() ) ); 2095 } 2096 // NEU 2097 else if( SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLHATCH ), sal_True, &pPoolItem ) ) 2098 { 2099 rXFSet.Put( XFillStyleItem( XFILL_HATCH ) ); 2100 rXFSet.Put( XFillHatchItem( String(), ( ( const XFillHatchItem* ) pPoolItem )->GetHatchValue() ) ); 2101 } 2102 else 2103 rXFSet.Put( XFillStyleItem( XFILL_NONE ) ); 2104 2105 aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() ); 2106 aCtlXRectPreview.Invalidate(); 2107 2108 return( 0L ); 2109 } 2110 2111 //------------------------------------------------------------------------ 2112 2113 IMPL_LINK( SvxAreaTabPage, ModifyHatchBckgrdColorHdl_Impl, void *, EMPTYARG ) 2114 { 2115 const SfxPoolItem* pPoolItem = NULL; 2116 sal_uInt16 _nPos = aLbHatchBckgrdColor.GetSelectEntryPos(); 2117 aLbColor.SelectEntryPos( _nPos ); 2118 if( _nPos != LISTBOX_ENTRY_NOTFOUND ) 2119 { 2120 // rXFSet.Put( XFillStyleItem( XFILL_SOLID ) ); 2121 rXFSet.Put( XFillColorItem( String(), 2122 aLbHatchBckgrdColor.GetSelectEntryColor() ) ); 2123 } 2124 // NEU 2125 else if( SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLCOLOR ), sal_True, &pPoolItem ) ) 2126 { 2127 // rXFSet.Put( XFillStyleItem( XFILL_SOLID ) ); 2128 Color aColor( ( ( const XFillColorItem* ) pPoolItem )->GetColorValue() ); 2129 rXFSet.Put( XFillColorItem( String(), aColor ) ); 2130 } 2131 else 2132 rXFSet.Put( XFillStyleItem( XFILL_NONE ) ); 2133 2134 aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() ); 2135 aCtlXRectPreview.Invalidate(); 2136 2137 return( 0L ); 2138 } 2139 2140 //------------------------------------------------------------------------ 2141 2142 IMPL_LINK( SvxAreaTabPage, ToggleHatchBckgrdColorHdl_Impl, void *, EMPTYARG ) 2143 { 2144 // switch on/off backgroundcolor for hatches 2145 aLbHatchBckgrdColor.Enable( aCbxHatchBckgrd.IsChecked() ); 2146 2147 XFillBackgroundItem aItem( aCbxHatchBckgrd.IsChecked() ); 2148 rXFSet.Put ( aItem, XATTR_FILLBACKGROUND ); 2149 2150 aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() ); 2151 aCtlXRectPreview.Invalidate(); 2152 2153 if( aLbHatchBckgrdColor.GetSelectEntryPos() == LISTBOX_ENTRY_NOTFOUND ) 2154 { 2155 if ( SFX_ITEM_SET == rOutAttrs.GetItemState( XATTR_FILLCOLOR ) )//>= SFX_ITEM_DEFAULT ) 2156 { 2157 XFillColorItem aColorItem( (const XFillColorItem&)rOutAttrs.Get( XATTR_FILLCOLOR ) ); 2158 aLbHatchBckgrdColor.SelectEntry( aColorItem.GetColorValue() ); 2159 } 2160 } 2161 2162 return( 0L ); 2163 } 2164 2165 //------------------------------------------------------------------------ 2166 2167 IMPL_LINK( SvxAreaTabPage, ClickBitmapHdl_Impl, void *, EMPTYARG ) 2168 { 2169 aLbColor.Hide(); 2170 aLbGradient.Hide(); 2171 aLbHatching.Hide(); 2172 aLbBitmap.Enable(); 2173 aLbBitmap.Show(); 2174 aCtlBitmapPreview.Enable(); 2175 aCtlBitmapPreview.Show(); 2176 aCtlXRectPreview.Hide(); 2177 // aGrpPreview.Hide(); 2178 // aGrpTransparent.Hide(); 2179 // aLbTransparent.Hide(); 2180 aFlStepCount.Hide(); 2181 aTsbStepCount.Hide(); 2182 aNumFldStepCount.Hide(); 2183 2184 aTsbTile.Enable(); 2185 aTsbStretch.Enable(); 2186 aTsbScale.Enable(); 2187 aTsbOriginal.Enable(); 2188 aFtXSize.Enable(); 2189 aMtrFldXSize.Enable(); 2190 aFtYSize.Enable(); 2191 aMtrFldYSize.Enable(); 2192 aFlSize.Enable(); 2193 aCtlPosition.Enable(); 2194 aFtXOffset.Enable(); 2195 aMtrFldXOffset.Enable(); 2196 aFtYOffset.Enable(); 2197 aMtrFldYOffset.Enable(); 2198 aFlPosition.Enable(); 2199 aRbtRow.Enable(); 2200 aRbtColumn.Enable(); 2201 aMtrFldOffset.Enable(); 2202 aFlOffset.Enable(); 2203 2204 // Controls for Hatch-Background 2205 aCbxHatchBckgrd.Hide(); 2206 aLbHatchBckgrdColor.Hide(); 2207 2208 aTsbTile.Show(); 2209 aTsbStretch.Show(); 2210 aTsbScale.Show(); 2211 aTsbOriginal.Show(); 2212 aFtXSize.Show(); 2213 aMtrFldXSize.Show(); 2214 aFtYSize.Show(); 2215 aMtrFldYSize.Show(); 2216 aFlSize.Show(); 2217 aCtlPosition.Show(); 2218 aFtXOffset.Show(); 2219 aMtrFldXOffset.Show(); 2220 aFtYOffset.Show(); 2221 aMtrFldYOffset.Show(); 2222 aFlPosition.Show(); 2223 aRbtRow.Show(); 2224 aRbtColumn.Show(); 2225 aMtrFldOffset.Show(); 2226 aFlOffset.Show(); 2227 2228 // Text der Tabelle setzen 2229 String aString( CUI_RES( RID_SVXSTR_TABLE ) ); aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( ": " ) ); 2230 INetURLObject aURL( pBitmapList->GetPath() ); 2231 2232 aURL.Append( pBitmapList->GetName() ); 2233 DBG_ASSERT( aURL.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" ); 2234 2235 if( aURL.getBase().getLength() > 18 ) 2236 { 2237 aString += String(aURL.getBase()).Copy( 0, 15 ); 2238 aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "..." ) ); 2239 } 2240 else 2241 aString += String(aURL.getBase()); 2242 2243 ModifyBitmapHdl_Impl( this ); 2244 ModifyTileHdl_Impl( &aTsbOriginal ); 2245 return( 0L ); 2246 } 2247 2248 //------------------------------------------------------------------------ 2249 2250 IMPL_LINK( SvxAreaTabPage, ModifyBitmapHdl_Impl, void *, EMPTYARG ) 2251 { 2252 const SfxPoolItem* pPoolItem = NULL; 2253 sal_uInt16 _nPos = aLbBitmap.GetSelectEntryPos(); 2254 if( _nPos != LISTBOX_ENTRY_NOTFOUND ) 2255 { 2256 // ItemSet fuellen und an aCtlXRectPreview weiterleiten 2257 XBitmapEntry* pEntry = pBitmapList->GetBitmap( _nPos ); 2258 2259 rXFSet.Put( XFillStyleItem( XFILL_BITMAP ) ); 2260 rXFSet.Put( XFillBitmapItem( String(), pEntry->GetXBitmap() ) ); 2261 } 2262 // NEU 2263 else if( SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLBITMAP ), sal_True, &pPoolItem ) ) 2264 { 2265 rXFSet.Put( XFillStyleItem( XFILL_BITMAP ) ); 2266 rXFSet.Put( XFillBitmapItem( String(), ( ( const XFillBitmapItem* ) pPoolItem )->GetBitmapValue() ) ); 2267 } 2268 else 2269 rXFSet.Put( XFillStyleItem( XFILL_NONE ) ); 2270 2271 aCtlBitmapPreview.SetAttributes( aXFillAttr.GetItemSet() ); 2272 aCtlBitmapPreview.Invalidate(); 2273 2274 return( 0L ); 2275 } 2276 2277 //------------------------------------------------------------------------ 2278 2279 //IMPL_LINK( SvxAreaTabPage, ModifyTransparentHdl_Impl, void *, EMPTYARG ) 2280 //{ 2281 // sal_uInt16 nPos = aLbTransparent.GetSelectEntryPos(); 2282 // if( nPos != LISTBOX_ENTRY_NOTFOUND ) 2283 // { 2284 // XFillTransparenceItem aItem( nPos * 25 ); 2285 // 2286 // rXFSet.Put( XFillTransparenceItem( aItem ) ); 2287 // aCtlXRectPreview.SetAttributes( aXFillAttr ); 2288 // 2289 // aCtlXRectPreview.Invalidate(); 2290 // } 2291 // 2292 // return( 0L ); 2293 //} 2294 2295 //------------------------------------------------------------------------ 2296 2297 IMPL_LINK( SvxAreaTabPage, ModifyStepCountHdl_Impl, void *, p ) 2298 { 2299 if( p == &aTsbStepCount ) 2300 { 2301 if( aTsbStepCount.GetState() == STATE_NOCHECK ) 2302 { 2303 if( aNumFldStepCount.GetText().Len() == 0 ) 2304 aNumFldStepCount.SetText( String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "64") )); 2305 2306 aNumFldStepCount.Enable(); 2307 } 2308 else 2309 aNumFldStepCount.Disable(); 2310 } 2311 2312 sal_uInt16 nValue = 0; 2313 if( aTsbStepCount.GetState() != STATE_CHECK ) 2314 { 2315 // Zustand != Disabled ? 2316 if( aNumFldStepCount.GetText().Len() > 0 ) 2317 nValue = (sal_uInt16) aNumFldStepCount.GetValue(); 2318 } 2319 rXFSet.Put( XGradientStepCountItem( nValue ) ); 2320 aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() ); 2321 aCtlXRectPreview.Invalidate(); 2322 2323 return( 0L ); 2324 } 2325 2326 //------------------------------------------------------------------------ 2327 2328 IMPL_LINK( SvxAreaTabPage, ModifyTileHdl_Impl, void *, EMPTYARG ) 2329 { 2330 TriState eState = aTsbTile.GetState(); 2331 if( eState == STATE_CHECK ) 2332 { 2333 aTsbStretch.Disable(); 2334 aRbtRow.Enable(); 2335 aRbtColumn.Enable(); 2336 aMtrFldOffset.Enable(); 2337 aFlOffset.Enable(); 2338 2339 aCtlPosition.Enable(); 2340 aCtlPosition.Invalidate(); 2341 aFtXOffset.Enable(); 2342 aMtrFldXOffset.Enable(); 2343 aFtYOffset.Enable(); 2344 aMtrFldYOffset.Enable(); 2345 aFlPosition.Enable(); 2346 2347 aTsbScale.Enable(); 2348 aTsbOriginal.Enable(); 2349 aFtXSize.Enable(); 2350 aMtrFldXSize.Enable(); 2351 aFtYSize.Enable(); 2352 aMtrFldYSize.Enable(); 2353 aFlSize.Enable(); 2354 } 2355 else if( eState == STATE_NOCHECK ) 2356 { 2357 aTsbStretch.Enable(); 2358 aRbtRow.Disable(); 2359 aRbtColumn.Disable(); 2360 aMtrFldOffset.Disable(); 2361 aFlOffset.Disable(); 2362 2363 aCtlPosition.Disable(); 2364 aCtlPosition.Invalidate(); 2365 aFtXOffset.Disable(); 2366 aMtrFldXOffset.Disable(); 2367 aFtYOffset.Disable(); 2368 aMtrFldYOffset.Disable(); 2369 aFlPosition.Disable(); 2370 2371 if( aTsbStretch.GetState() != STATE_NOCHECK ) 2372 { 2373 aTsbScale.Disable(); 2374 aTsbOriginal.Disable(); 2375 aFtXSize.Disable(); 2376 aMtrFldXSize.Disable(); 2377 aFtYSize.Disable(); 2378 aMtrFldYSize.Disable(); 2379 aFlSize.Disable(); 2380 } 2381 else 2382 { 2383 aTsbScale.Enable(); 2384 aTsbOriginal.Enable(); 2385 aFtXSize.Enable(); 2386 aMtrFldXSize.Enable(); 2387 aFtYSize.Enable(); 2388 aMtrFldYSize.Enable(); 2389 aFlSize.Enable(); 2390 } 2391 } 2392 else 2393 { 2394 aTsbStretch.Disable(); 2395 aRbtRow.Disable(); 2396 aRbtColumn.Disable(); 2397 aMtrFldOffset.Disable(); 2398 aFlOffset.Disable(); 2399 2400 aCtlPosition.Disable(); 2401 aCtlPosition.Invalidate(); 2402 aFtXOffset.Disable(); 2403 aMtrFldXOffset.Disable(); 2404 aFtYOffset.Disable(); 2405 aMtrFldYOffset.Disable(); 2406 aFlPosition.Disable(); 2407 2408 aTsbScale.Disable(); 2409 aTsbOriginal.Disable(); 2410 aFtXSize.Disable(); 2411 aMtrFldXSize.Disable(); 2412 aFtYSize.Disable(); 2413 aMtrFldYSize.Disable(); 2414 aFlSize.Disable(); 2415 } 2416 2417 if( aTsbOriginal.GetState() == STATE_CHECK ) 2418 { 2419 aMtrFldXSize.SetText( String() ); 2420 aMtrFldYSize.SetText( String() ); 2421 aFtXSize.Disable(); 2422 aFtYSize.Disable(); 2423 aMtrFldXSize.Disable(); 2424 aMtrFldYSize.Disable(); 2425 aTsbScale.Disable(); 2426 } 2427 else 2428 { 2429 aMtrFldXSize.SetValue( aMtrFldXSize.GetValue() ); 2430 aMtrFldYSize.SetValue( aMtrFldYSize.GetValue() ); 2431 /* 2432 if( eState == STATE_CHECK ) 2433 { 2434 aFtXSize.Enable(); 2435 aFtYSize.Enable(); 2436 aMtrFldXSize.Enable(); 2437 aMtrFldYSize.Enable(); 2438 } 2439 */ 2440 } 2441 2442 rXFSet.Put( XFillBmpTileItem( sal::static_int_cast< sal_Bool >( eState ) ) ); 2443 2444 if( aTsbStretch.IsEnabled() ) 2445 rXFSet.Put( 2446 XFillBmpStretchItem( 2447 sal::static_int_cast< sal_Bool >( aTsbStretch.GetState() ) ) ); 2448 2449 if( aTsbScale.IsEnabled() ) 2450 rXFSet.Put( XFillBmpSizeLogItem( aTsbScale.GetState() == STATE_NOCHECK ) ); 2451 2452 if( aMtrFldXSize.IsEnabled() ) 2453 { 2454 XFillBmpSizeXItem* pItem = NULL; 2455 TriState eScaleState = aTsbScale.GetState(); 2456 2457 if( eScaleState == STATE_NOCHECK ) 2458 pItem = new XFillBmpSizeXItem( GetCoreValue( aMtrFldXSize, ePoolUnit ) ); 2459 else 2460 pItem = new XFillBmpSizeXItem( -labs( static_cast<long>(aMtrFldXSize.GetValue()) ) ); 2461 2462 rXFSet.Put( *pItem ); 2463 2464 delete pItem; 2465 } 2466 else if( aTsbOriginal.IsEnabled() && aTsbOriginal.GetState() == STATE_CHECK ) 2467 { 2468 // Originalgroesse -> Size == 0 2469 rXFSet.Put( XFillBmpSizeXItem( 0 ) ); 2470 rXFSet.Put( XFillBmpSizeLogItem( sal_True ) ); 2471 } 2472 2473 if( aMtrFldYSize.IsEnabled() ) 2474 { 2475 XFillBmpSizeYItem* pItem = NULL; 2476 TriState eScaleState = aTsbScale.GetState(); 2477 2478 if( eScaleState == STATE_NOCHECK ) 2479 pItem = new XFillBmpSizeYItem( GetCoreValue( aMtrFldYSize, ePoolUnit ) ); 2480 else 2481 pItem = new XFillBmpSizeYItem( -labs( static_cast<long>(aMtrFldYSize.GetValue()) ) ); 2482 2483 rXFSet.Put( *pItem ); 2484 2485 delete pItem; 2486 } 2487 else if( aTsbOriginal.IsEnabled() && aTsbOriginal.GetState() == STATE_CHECK ) 2488 { 2489 // Originalgroesse -> Size == 0 2490 rXFSet.Put( XFillBmpSizeYItem( 0 ) ); 2491 rXFSet.Put( XFillBmpSizeLogItem( sal_True ) ); 2492 } 2493 2494 if( aMtrFldOffset.IsEnabled() ) 2495 { 2496 if( aRbtRow.IsChecked() ) 2497 { 2498 rXFSet.Put( XFillBmpTileOffsetXItem( (sal_uInt16) aMtrFldOffset.GetValue() ) ); 2499 rXFSet.Put( XFillBmpTileOffsetYItem( (sal_uInt16) 0 ) ); 2500 } 2501 else if( aRbtColumn.IsChecked() ) 2502 { 2503 rXFSet.Put( XFillBmpTileOffsetXItem( (sal_uInt16) 0 ) ); 2504 rXFSet.Put( XFillBmpTileOffsetYItem( (sal_uInt16) aMtrFldOffset.GetValue() ) ); 2505 } 2506 } 2507 2508 if( aCtlPosition.IsEnabled() ) 2509 rXFSet.Put( XFillBmpPosItem( aCtlPosition.GetActualRP() ) ); 2510 2511 if( aMtrFldXOffset.IsEnabled() ) 2512 rXFSet.Put( XFillBmpPosOffsetXItem( (sal_uInt16) aMtrFldXOffset.GetValue() ) ); 2513 2514 if( aMtrFldYOffset.IsEnabled() ) 2515 rXFSet.Put( XFillBmpPosOffsetYItem( (sal_uInt16) aMtrFldYOffset.GetValue() ) ); 2516 2517 2518 aCtlBitmapPreview.SetAttributes( aXFillAttr.GetItemSet() ); 2519 aCtlBitmapPreview.Invalidate(); 2520 2521 return( 0L ); 2522 } 2523 2524 //------------------------------------------------------------------------ 2525 2526 IMPL_LINK( SvxAreaTabPage, ClickScaleHdl_Impl, void *, EMPTYARG ) 2527 { 2528 if( aTsbScale.GetState() == STATE_CHECK ) 2529 { 2530 aMtrFldXSize.SetDecimalDigits( 0 ); 2531 aMtrFldXSize.SetUnit( FUNIT_CUSTOM ); 2532 aMtrFldXSize.SetValue( 100 ); 2533 aMtrFldXSize.SetMax( 100 ); 2534 aMtrFldXSize.SetLast( 100 ); 2535 2536 aMtrFldYSize.SetDecimalDigits( 0 ); 2537 aMtrFldYSize.SetUnit( FUNIT_CUSTOM ); 2538 aMtrFldYSize.SetValue( 100 ); 2539 aMtrFldYSize.SetMax( 100 ); 2540 aMtrFldYSize.SetLast( 100 ); 2541 } 2542 else 2543 { 2544 aMtrFldXSize.SetDecimalDigits( 2 ); 2545 aMtrFldXSize.SetUnit( eFUnit ); 2546 aMtrFldXSize.SetValue( 100 ); 2547 aMtrFldXSize.SetMax( 999900 ); 2548 aMtrFldXSize.SetLast( 100000 ); 2549 2550 aMtrFldYSize.SetDecimalDigits( 2 ); 2551 aMtrFldYSize.SetUnit( eFUnit ); 2552 aMtrFldYSize.SetValue( 100 ); 2553 aMtrFldYSize.SetMax( 999900 ); 2554 aMtrFldYSize.SetLast( 100000 ); 2555 } 2556 2557 ModifyTileHdl_Impl( NULL ); 2558 2559 return( 0L ); 2560 } 2561 2562 //------------------------------------------------------------------------ 2563 2564 void SvxAreaTabPage::PointChanged( Window* pWindow, RECT_POINT eRcPt ) 2565 { 2566 eRP = eRcPt; 2567 2568 // Ausrichtung der Bitmapfuellung 2569 ModifyTileHdl_Impl( pWindow ); 2570 } 2571 2572 void SvxAreaTabPage::PageCreated (SfxAllItemSet aSet) //add CHINA001 2573 { 2574 SFX_ITEMSET_ARG (&aSet,pColorTabItem,SvxColorTableItem,SID_COLOR_TABLE,sal_False); 2575 SFX_ITEMSET_ARG (&aSet,pGradientListItem,SvxGradientListItem,SID_GRADIENT_LIST,sal_False); 2576 SFX_ITEMSET_ARG (&aSet,pHatchingListItem,SvxHatchListItem,SID_HATCH_LIST,sal_False); 2577 SFX_ITEMSET_ARG (&aSet,pBitmapListItem,SvxBitmapListItem,SID_BITMAP_LIST,sal_False); 2578 SFX_ITEMSET_ARG (&aSet,pPageTypeItem,SfxUInt16Item,SID_PAGE_TYPE,sal_False); 2579 SFX_ITEMSET_ARG (&aSet,pDlgTypeItem,SfxUInt16Item,SID_DLG_TYPE,sal_False); 2580 SFX_ITEMSET_ARG (&aSet,pPosItem,SfxUInt16Item,SID_TABPAGE_POS,sal_False); 2581 2582 if (pColorTabItem) 2583 SetColorTable(pColorTabItem->GetColorTable()); 2584 if (pGradientListItem) 2585 SetGradientList(pGradientListItem->GetGradientList()); 2586 if (pHatchingListItem) 2587 SetHatchingList(pHatchingListItem->GetHatchList()); 2588 if (pBitmapListItem) 2589 SetBitmapList(pBitmapListItem->GetBitmapList()); 2590 if (pPageTypeItem) 2591 SetPageType(pPageTypeItem->GetValue()); 2592 if (pDlgTypeItem) 2593 SetDlgType(pDlgTypeItem->GetValue()); 2594 if (pPosItem) 2595 SetPos(pPosItem->GetValue()); 2596 Construct(); 2597 } 2598 2599