1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 #include "svx/sidebar/PopupContainer.hxx" 23 #include "AreaTransparencyGradientControl.hxx" 24 25 #include <sfx2/sidebar/propertypanel.hrc> 26 #include <sfx2/sidebar/Theme.hxx> 27 #include <sfx2/sidebar/ControlFactory.hxx> 28 #include <AreaPropertyPanel.hxx> 29 #include <AreaPropertyPanel.hrc> 30 #include <svx/dialogs.hrc> 31 #include <svx/dialmgr.hxx> 32 #include <sfx2/objsh.hxx> 33 #include <svx/xfltrit.hxx> 34 #include <svx/xflftrit.hxx> 35 #include <svx/xtable.hxx> 36 #include <sfx2/dispatch.hxx> 37 #include <sfx2/bindings.hxx> 38 #include <helpid.hrc> 39 #include <svtools/valueset.hxx> 40 #include <unotools/pathoptions.hxx> 41 #include <svx/svxitems.hrc> 42 #include <vcl/toolbox.hxx> 43 #include <svtools/toolbarmenu.hxx> 44 #include "sidebar/ColorControl.hxx" 45 46 #include <boost/bind.hpp> 47 48 using namespace css; 49 using namespace cssu; 50 using ::sfx2::sidebar::Theme; 51 52 #define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString))) 53 54 55 56 57 namespace svx { namespace sidebar { 58 59 const sal_Int32 AreaPropertyPanel::DEFAULT_CENTERX = 50; 60 const sal_Int32 AreaPropertyPanel::DEFAULT_CENTERY = 50; 61 const sal_Int32 AreaPropertyPanel::DEFAULT_ANGLE = 0; 62 const sal_Int32 AreaPropertyPanel::DEFAULT_STARTVALUE = 0; 63 const sal_Int32 AreaPropertyPanel::DEFAULT_ENDVALUE = 16777215; 64 const sal_Int32 AreaPropertyPanel::DEFAULT_BORDER = 0; 65 66 67 AreaPropertyPanel::AreaPropertyPanel( 68 Window* pParent, 69 const cssu::Reference<css::frame::XFrame>& rxFrame, 70 SfxBindings* pBindings) 71 : Control(pParent, SVX_RES(RID_SIDEBAR_AREA_PANEL)), 72 meLastXFS(-1), 73 maLastColor(Color(COL_DEFAULT_SHAPE_FILLING)), 74 mnLastPosGradient(0), 75 mnLastPosHatch(0), 76 mnLastPosBitmap(0), 77 mnLastTransSolid(50), 78 maGradientLinear(), 79 maGradientAxial(), 80 maGradientRadial(), 81 maGradientElliptical(), 82 maGradientSquare(), 83 maGradientRect(), 84 mpColorTextFT(new FixedText(this, SVX_RES(FT_COLOR_LIST))), 85 mpLbFillType(new SvxFillTypeBox(this)), 86 mpLbFillAttr(new SvxFillAttrBox(this)), 87 mpToolBoxColorBackground(sfx2::sidebar::ControlFactory::CreateToolBoxBackground(this)), 88 mpToolBoxColor(sfx2::sidebar::ControlFactory::CreateToolBox(mpToolBoxColorBackground.get(), SVX_RES(TB_COLOR))), 89 mpTrspTextFT(new FixedText(this, SVX_RES(FL_TRSP_TEXT))), 90 mpLBTransType(new ListBox(this, SVX_RES(LB_TRGR_TYPES))), 91 mpMTRTransparent(new MetricField(this, SVX_RES(MTR_TRANSPARENT))), 92 mpBTNGradientBackground(sfx2::sidebar::ControlFactory::CreateToolBoxBackground(this)), 93 mpBTNGradient(sfx2::sidebar::ControlFactory::CreateToolBox(mpBTNGradientBackground.get(), SVX_RES(BTN_GRADIENT))), 94 mpColorUpdater(new ::svx::ToolboxButtonColorUpdater(SID_ATTR_FILL_COLOR, TBI_COLOR, mpToolBoxColor.get(), TBX_UPDATER_MODE_CHAR_COLOR_NEW)), 95 mpStyleItem(), 96 mpColorItem(), 97 mpFillGradientItem(), 98 mpHatchItem(), 99 mpBitmapItem(), 100 mpColorTableItem(), 101 mpGradientListItem(), 102 mpHatchListItem(), 103 mpBitmapListItem(), 104 maStyleControl(SID_ATTR_FILL_STYLE, *pBindings, *this), 105 maColorControl(SID_ATTR_FILL_COLOR, *pBindings, *this), 106 maGradientControl(SID_ATTR_FILL_GRADIENT, *pBindings, *this), 107 maHatchControl(SID_ATTR_FILL_HATCH, *pBindings, *this), 108 maBitmapControl(SID_ATTR_FILL_BITMAP, *pBindings, *this), 109 maColorTableControl(SID_COLOR_TABLE, *pBindings, *this), 110 maGradientListControl(SID_GRADIENT_LIST, *pBindings, *this), 111 maHatchListControl(SID_HATCH_LIST, *pBindings, *this), 112 maBitmapListControl(SID_BITMAP_LIST, *pBindings, *this), 113 maFillTransparenceController(SID_ATTR_FILL_TRANSPARENCE, *pBindings, *this), 114 maFillFloatTransparenceController(SID_ATTR_FILL_FLOATTRANSPARENCE, *pBindings, *this), 115 maImgAxial(SVX_RES(IMG_AXIAL)), 116 maImgElli(SVX_RES(IMG_ELLI)), 117 maImgQuad(SVX_RES(IMG_QUAD)), 118 maImgRadial(SVX_RES(IMG_RADIAL)), 119 maImgSquare(SVX_RES(IMG_SQUARE)), 120 maImgLinear(SVX_RES(IMG_LINEAR)), 121 maImgColor(SVX_RES(IMG_COLOR)), 122 maImgAxialH(SVX_RES(IMG_AXIAL_H)), 123 maImgElliH(SVX_RES(IMG_ELLI_H)), 124 maImgQuadH(SVX_RES(IMG_QUAD_H)), 125 maImgRadialH(SVX_RES(IMG_RADIAL_H)), 126 maImgSquareH(SVX_RES(IMG_SQUARE_H)), 127 maImgLinearH(SVX_RES(IMG_LINEAR_H)), 128 maImgColorH(SVX_RES(IMG_COLOR_H)), 129 msHelpFillType(SVX_RES(STR_HELP_TYPE)), 130 msHelpFillAttr(SVX_RES(STR_HELP_ATTR)), 131 maTrGrPopup(this, ::boost::bind(&AreaPropertyPanel::CreateTransparencyGradientControl, this, _1)), 132 maColorPopup(this, ::boost::bind(&AreaPropertyPanel::CreateColorPopupControl, this, _1)), 133 mpFloatTransparenceItem(), 134 mpTransparanceItem(), 135 mxFrame(rxFrame), 136 maContext(), 137 mpBindings(pBindings), 138 mbTBShow(true), 139 mbColorAvail(true) 140 { 141 Initialize(); 142 FreeResource(); 143 } 144 145 146 147 AreaPropertyPanel::~AreaPropertyPanel() 148 { 149 // Destroy the toolboxes, then their background windows. 150 mpToolBoxColor.reset(); 151 mpBTNGradient.reset(); 152 mpToolBoxColorBackground.reset(); 153 mpBTNGradientBackground.reset(); 154 } 155 156 157 158 void AreaPropertyPanel::Initialize() 159 { 160 maGradientLinear.SetXOffset(DEFAULT_CENTERX); 161 maGradientLinear.SetYOffset(DEFAULT_CENTERY); 162 maGradientLinear.SetAngle(DEFAULT_ANGLE); 163 maGradientLinear.SetStartColor(Color(DEFAULT_STARTVALUE)); 164 maGradientLinear.SetEndColor(Color(DEFAULT_ENDVALUE)); 165 maGradientLinear.SetBorder(DEFAULT_BORDER); 166 maGradientLinear.SetGradientStyle(XGRAD_LINEAR); 167 168 maGradientAxial = maGradientLinear; 169 maGradientAxial.SetGradientStyle(XGRAD_AXIAL); 170 171 maGradientRadial = maGradientLinear; 172 maGradientRadial.SetGradientStyle(XGRAD_RADIAL); 173 174 maGradientElliptical = maGradientLinear; 175 maGradientElliptical.SetGradientStyle(XGRAD_ELLIPTICAL); 176 177 maGradientSquare = maGradientLinear; 178 maGradientSquare.SetGradientStyle(XGRAD_SQUARE); 179 180 maGradientRect = maGradientLinear; 181 maGradientRect.SetGradientStyle(XGRAD_RECT); 182 183 Size aLogicalFillSize(MBOX_WIDTH,LISTBOX_HEIGHT); 184 Size aLogicalAttrSize(MBOX_WIDTH + 1,LISTBOX_HEIGHT); 185 186 Point aPoint(SECTIONPAGE_MARGIN_HORIZONTAL,SECTIONPAGE_MARGIN_VERTICAL_TOP + FIXED_TEXT_HEIGHT + TEXT_CONTROL_SPACING_VERTICAL); 187 Point aPoint_Picker(SECTIONPAGE_MARGIN_HORIZONTAL + MBOX_WIDTH + CONTROL_SPACING_HORIZONTAL,SECTIONPAGE_MARGIN_VERTICAL_TOP + FIXED_TEXT_HEIGHT + TEXT_CONTROL_SPACING_VERTICAL); 188 189 Size aTypeSize(LogicToPixel(aLogicalFillSize, MAP_APPFONT)); 190 Size aAttrSize(LogicToPixel(aLogicalAttrSize, MAP_APPFONT)); 191 192 Point aTypePoint(LogicToPixel(aPoint, MAP_APPFONT)); 193 Point aAttrPoint(LogicToPixel(aPoint_Picker, MAP_APPFONT)); 194 195 mpLbFillType->SetPosSizePixel(aTypePoint,aTypeSize); 196 mpLbFillAttr->SetPosSizePixel(aAttrPoint,aAttrSize); 197 198 mpLbFillType->SetHelpId(HID_PPROPERTYPANEL_AREA_LB_FILL_TYPES); 199 mpLbFillAttr->SetHelpId(HID_PPROPERTYPANEL_AREA_LB_FILL_ATTR); 200 201 mpLbFillType->SetQuickHelpText(msHelpFillType); 202 mpLbFillAttr->SetQuickHelpText(msHelpFillAttr); 203 204 mpLbFillType->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Fill"))); //wj acc 205 mpLbFillAttr->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Fill"))); //wj acc 206 207 Link aLink = LINK( this, AreaPropertyPanel, SelectFillTypeHdl ); 208 mpLbFillType->SetSelectHdl( aLink ); 209 210 aLink = LINK( this, AreaPropertyPanel, SelectFillAttrHdl ); 211 mpLbFillAttr->SetSelectHdl( aLink ); 212 213 //add for new color picker 214 mpLbFillAttr->Hide(); 215 mpToolBoxColor->SetItemImage(TBI_COLOR, GetDisplayBackground().GetColor().IsDark()? maImgColorH : maImgColor); 216 Size aTbxSize( mpToolBoxColor->CalcWindowSizePixel() ); 217 mpToolBoxColor->SetOutputSizePixel( aTbxSize ); 218 mpToolBoxColor->SetItemBits( TBI_COLOR, mpToolBoxColor->GetItemBits( TBI_COLOR ) | TIB_DROPDOWNONLY ); 219 mpToolBoxColor->SetBackground(Wallpaper()); 220 mpToolBoxColor->SetPaintTransparent(true); 221 mpToolBoxColor->SetQuickHelpText(TBI_COLOR, String(SVX_RES(STR_HELP_COLOR))); //wj acc 222 //mpToolBoxColor->SetItemText(TBI_COLOR, msHelpFillAttr); 223 224 long aHeightLBStyle = mpLbFillType->GetSizePixel().getHeight(); 225 long aLBPosY = mpLbFillType->GetPosPixel().getY(); 226 long aHeightTBAttr = mpToolBoxColor->GetSizePixel().getHeight(); 227 Point aPointTBAttr = mpToolBoxColor->GetPosPixel(); 228 aPointTBAttr.setY( aLBPosY + aHeightLBStyle / 2 - aHeightTBAttr / 2); 229 mpToolBoxColor->SetPosPixel(aPointTBAttr); 230 231 aLink = LINK(this, AreaPropertyPanel, ToolBoxColorDropHdl); 232 mpToolBoxColor->SetDropdownClickHdl ( aLink ); 233 mpToolBoxColor->SetSelectHdl ( aLink ); 234 235 //add end 236 mpLBTransType->SetSelectHdl(LINK(this, AreaPropertyPanel, ChangeTrgrTypeHdl_Impl)); 237 mpLBTransType->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Transparency"))); //wj acc 238 239 mpMTRTransparent->SetValue( 50 ); 240 mpMTRTransparent->SetModifyHdl(LINK(this, AreaPropertyPanel, ModifyTransparentHdl_Impl)); 241 mpMTRTransparent->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Transparency"))); //wj acc 242 243 mpBTNGradient->SetItemBits( TBI_BTX_GRADIENT, mpBTNGradient->GetItemBits( TBI_BTX_GRADIENT ) | TIB_DROPDOWNONLY ); 244 aLink = LINK( this, AreaPropertyPanel, ClickTrGrHdl_Impl ); 245 mpBTNGradient->SetDropdownClickHdl( aLink ); 246 mpBTNGradient->SetSelectHdl( aLink ); 247 aTbxSize = mpBTNGradient->CalcWindowSizePixel(); 248 mpBTNGradient->SetOutputSizePixel( aTbxSize ); 249 mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,maImgLinear); 250 mpBTNGradient->SetQuickHelpText(TBI_BTX_GRADIENT, String(SVX_RES(STR_HELP_GRADIENT))); //wj acc 251 mpBTNGradient->Hide(); 252 253 long aHeightLBTrans = mpLBTransType->GetSizePixel().getHeight(); 254 Point aPointLB = mpLBTransType->GetPosPixel(); 255 long aPosY = aPointLB.getY(); 256 257 Point aPointMetric = mpMTRTransparent->GetPosPixel(); 258 Point aPointTB = mpMTRTransparent->GetPosPixel(); 259 long aHeightMetric = mpMTRTransparent->GetSizePixel().getHeight(); 260 long aHeightTool = mpBTNGradient->GetSizePixel().getHeight(); 261 aPointMetric.setY(aPosY+aHeightLBTrans/2-aHeightMetric/2); 262 aPointTB.setY(aPosY+aHeightLBTrans/2-aHeightTool/2); 263 aPointTB.setX(aPointTB.getX()+3); 264 mpMTRTransparent->SetPosPixel(aPointMetric); 265 mpBTNGradient->SetPosPixel(aPointTB); 266 267 mpLbFillType->SetAccessibleRelationLabeledBy(mpColorTextFT.get()); 268 mpLbFillAttr->SetAccessibleRelationLabeledBy(mpLbFillAttr.get()); 269 mpToolBoxColor->SetAccessibleRelationLabeledBy(mpToolBoxColor.get()); 270 mpLBTransType->SetAccessibleRelationLabeledBy(mpTrspTextFT.get()); 271 mpMTRTransparent->SetAccessibleRelationLabeledBy(mpMTRTransparent.get()); 272 mpBTNGradient->SetAccessibleRelationLabeledBy(mpBTNGradient.get()); 273 274 SetupIcons(); 275 } 276 277 278 279 IMPL_LINK( AreaPropertyPanel, SelectFillTypeHdl, ListBox *, pToolBox ) 280 { 281 XFillStyle eXFS = (XFillStyle)mpLbFillType->GetSelectEntryPos(); 282 283 if( (XFillStyle) meLastXFS != eXFS ) 284 { 285 mpLbFillAttr->Clear(); 286 SfxObjectShell* pSh = SfxObjectShell::Current(); 287 XFillStyleItem aXFillStyleItem( eXFS ); 288 GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_STYLE, SFX_CALLMODE_RECORD, &aXFillStyleItem, 0L); 289 290 switch( eXFS ) 291 { 292 case XFILL_NONE: 293 { 294 mpLbFillAttr->Show(); 295 mpToolBoxColor->Hide(); 296 mbTBShow = false; 297 mpLbFillType->Selected(); 298 mpLbFillAttr->Disable(); 299 } 300 break; 301 302 case XFILL_SOLID: 303 { 304 mpLbFillAttr->Hide(); 305 mpToolBoxColor->Show(); 306 mbTBShow = true; 307 String aTmpStr; 308 Color aColor = maLastColor; 309 XFillColorItem aXFillColorItem( aTmpStr, aColor ); 310 GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_COLOR, SFX_CALLMODE_RECORD, &aXFillColorItem, 0L); 311 } 312 break; 313 314 case XFILL_GRADIENT: 315 { 316 mpLbFillAttr->Show(); 317 mpToolBoxColor->Hide(); 318 mbTBShow = false; 319 if ( pSh && pSh->GetItem( SID_GRADIENT_LIST ) ) 320 { 321 // 322 if(mpLbFillAttr->GetEntryCount() == 0) 323 { 324 SvxGradientListItem aItem( *(const SvxGradientListItem*)( 325 pSh->GetItem( SID_GRADIENT_LIST ) ) ); 326 mpLbFillAttr->Enable(); 327 mpLbFillAttr->Clear(); 328 mpLbFillAttr->Fill( aItem.GetGradientList() ); 329 } 330 331 if ( mnLastPosGradient != LISTBOX_ENTRY_NOTFOUND) 332 { 333 SvxGradientListItem aItem( *(const SvxGradientListItem*)( pSh->GetItem( SID_GRADIENT_LIST ) ) ); 334 if ( mnLastPosGradient < aItem.GetGradientList()->Count() ) 335 { 336 XGradient aGradient = aItem.GetGradientList()->GetGradient( mnLastPosGradient )->GetGradient(); 337 XFillGradientItem aXFillGradientItem( mpLbFillAttr->GetEntry(mnLastPosGradient), aGradient ); 338 GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_GRADIENT, SFX_CALLMODE_RECORD, &aXFillGradientItem, 0L); 339 mpLbFillAttr->SelectEntryPos(mnLastPosGradient); //add 340 } 341 } 342 } 343 else 344 mpLbFillAttr->Disable(); 345 } 346 break; 347 348 case XFILL_HATCH: 349 { 350 mpLbFillAttr->Show(); 351 mpToolBoxColor->Hide(); 352 mbTBShow = false; 353 if ( pSh && pSh->GetItem( SID_HATCH_LIST ) ) 354 { 355 // 356 if(mpLbFillAttr->GetEntryCount() == 0) 357 { 358 SvxHatchListItem aItem( *(const SvxHatchListItem*)( 359 pSh->GetItem( SID_HATCH_LIST ) ) ); 360 mpLbFillAttr->Enable(); 361 mpLbFillAttr->Clear(); 362 mpLbFillAttr->Fill( aItem.GetHatchList() ); 363 } 364 365 if ( mnLastPosHatch != LISTBOX_ENTRY_NOTFOUND ) 366 { 367 SvxHatchListItem aItem( *(const SvxHatchListItem*)( pSh->GetItem( SID_HATCH_LIST ) ) ); 368 if ( mnLastPosHatch < aItem.GetHatchList()->Count() ) 369 { 370 XHatch aHatch = aItem.GetHatchList()->GetHatch( mnLastPosHatch )->GetHatch(); 371 XFillHatchItem aXFillHatchItem( mpLbFillAttr->GetSelectEntry(), aHatch ); 372 GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_HATCH, SFX_CALLMODE_RECORD, &aXFillHatchItem, 0L); 373 mpLbFillAttr->SelectEntryPos(mnLastPosHatch); //add 374 } 375 } 376 } 377 else 378 mpLbFillAttr->Disable(); 379 } 380 break; 381 382 case XFILL_BITMAP: 383 { 384 mpLbFillAttr->Show(); 385 mpToolBoxColor->Hide(); 386 mbTBShow = false; 387 if ( pSh && pSh->GetItem( SID_BITMAP_LIST ) ) 388 { 389 // 390 if(mpLbFillAttr->GetEntryCount() == 0) 391 { 392 SvxBitmapListItem aItem( *(const SvxBitmapListItem*)( 393 pSh->GetItem( SID_BITMAP_LIST ) ) ); 394 mpLbFillAttr->Enable(); 395 mpLbFillAttr->Clear(); 396 mpLbFillAttr->Fill( aItem.GetBitmapList() ); 397 } 398 399 if ( mnLastPosBitmap != LISTBOX_ENTRY_NOTFOUND ) 400 { 401 SvxBitmapListItem aItem( *(const SvxBitmapListItem*)( pSh->GetItem( SID_BITMAP_LIST ) ) ); 402 if ( mnLastPosBitmap < aItem.GetBitmapList()->Count() ) 403 { 404 const XBitmapEntry* pXBitmapEntry = aItem.GetBitmapList()->GetBitmap(mnLastPosBitmap); 405 XFillBitmapItem aXFillBitmapItem( mpLbFillAttr->GetSelectEntry(), pXBitmapEntry->GetGraphicObject() ); 406 GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_BITMAP, SFX_CALLMODE_RECORD, &aXFillBitmapItem, 0L); 407 mpLbFillAttr->SelectEntryPos(mnLastPosBitmap); //add 408 } 409 } 410 } 411 else 412 mpLbFillAttr->Disable(); 413 } 414 break; 415 } 416 meLastXFS = (sal_uInt16)eXFS; 417 if( eXFS != XFILL_NONE ) 418 { 419 if ( pToolBox ) 420 mpLbFillType->Selected(); 421 } 422 } 423 return 0; 424 } 425 426 427 428 IMPL_LINK( AreaPropertyPanel, SelectFillAttrHdl, ListBox*, pToolBox ) 429 { 430 XFillStyle eXFS = (XFillStyle)mpLbFillType->GetSelectEntryPos(); 431 XFillStyleItem aXFillStyleItem( eXFS ); 432 SfxObjectShell* pSh = SfxObjectShell::Current(); 433 434 if(pToolBox) 435 { 436 if( (XFillStyle) meLastXFS != eXFS ) 437 { 438 GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_STYLE, SFX_CALLMODE_RECORD, &aXFillStyleItem, 0L); //Added 20090909 439 } 440 441 switch( eXFS ) 442 { 443 case XFILL_SOLID: 444 //{ 445 // //String aTmpStr = mpLbFillAttr->GetSelectEntry(); 446 // //Color aColor = mpLbFillAttr->GetSelectEntryColor(); 447 // //if(aColor.GetColor() == 0 && aTmpStr.Equals(String::CreateFromAscii(""))) 448 // String aTmpStr; 449 // Color aColor = maLastColor; 450 // XFillColorItem aXFillColorItem( aTmpStr, aColor ); 451 // GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_COLOR, SFX_CALLMODE_RECORD, &aXFillColorItem, 0L); 452 // maLastColor = aColor; 453 //} 454 break; 455 456 case XFILL_GRADIENT: 457 { 458 sal_uInt16 nPos = mpLbFillAttr->GetSelectEntryPos(); 459 if( nPos == LISTBOX_ENTRY_NOTFOUND ) 460 nPos = mnLastPosGradient; 461 462 if ( nPos != LISTBOX_ENTRY_NOTFOUND && pSh && pSh->GetItem( SID_GRADIENT_LIST ) ) 463 { 464 SvxGradientListItem aItem( *(const SvxGradientListItem*)( pSh->GetItem( SID_GRADIENT_LIST ) ) ); 465 if ( nPos < aItem.GetGradientList()->Count() ) 466 { 467 XGradient aGradient = aItem.GetGradientList()->GetGradient( nPos )->GetGradient(); 468 XFillGradientItem aXFillGradientItem( mpLbFillAttr->GetSelectEntry(), aGradient ); 469 GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_GRADIENT, SFX_CALLMODE_RECORD, &aXFillGradientItem, 0L); 470 } 471 } 472 if(nPos != LISTBOX_ENTRY_NOTFOUND) 473 mnLastPosGradient = nPos; 474 } 475 break; 476 477 case XFILL_HATCH: 478 { 479 sal_uInt16 nPos = mpLbFillAttr->GetSelectEntryPos(); 480 if( nPos == LISTBOX_ENTRY_NOTFOUND ) 481 nPos = mnLastPosHatch; 482 if ( nPos != LISTBOX_ENTRY_NOTFOUND && pSh && pSh->GetItem( SID_HATCH_LIST ) ) 483 { 484 SvxHatchListItem aItem( *(const SvxHatchListItem*)( pSh->GetItem( SID_HATCH_LIST ) ) ); 485 if ( nPos < aItem.GetHatchList()->Count() ) 486 { 487 XHatch aHatch = aItem.GetHatchList()->GetHatch( nPos )->GetHatch(); 488 XFillHatchItem aXFillHatchItem( mpLbFillAttr->GetSelectEntry(), aHatch ); 489 GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_HATCH, SFX_CALLMODE_RECORD, &aXFillHatchItem, 0L); 490 } 491 } 492 if(nPos != LISTBOX_ENTRY_NOTFOUND) 493 mnLastPosHatch = nPos; 494 } 495 break; 496 497 case XFILL_BITMAP: 498 { 499 sal_uInt16 nPos = mpLbFillAttr->GetSelectEntryPos(); 500 if( nPos == LISTBOX_ENTRY_NOTFOUND ) 501 nPos = mnLastPosBitmap; 502 if ( nPos != LISTBOX_ENTRY_NOTFOUND && pSh && pSh->GetItem( SID_BITMAP_LIST ) ) 503 { 504 SvxBitmapListItem aItem( *(const SvxBitmapListItem*)( pSh->GetItem( SID_BITMAP_LIST ) ) ); 505 if ( nPos < aItem.GetBitmapList()->Count() ) 506 { 507 const XBitmapEntry* pXBitmapEntry = aItem.GetBitmapList()->GetBitmap(nPos); 508 XFillBitmapItem aXFillBitmapItem( mpLbFillAttr->GetSelectEntry(), pXBitmapEntry->GetGraphicObject() ); 509 GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_BITMAP, SFX_CALLMODE_RECORD, &aXFillBitmapItem, 0L); 510 } 511 } 512 if(nPos != LISTBOX_ENTRY_NOTFOUND) 513 mnLastPosBitmap = nPos; 514 } 515 break; 516 517 default: 518 break; 519 } 520 } 521 return 0; 522 } 523 524 525 //add for color picker 526 527 IMPL_LINK(AreaPropertyPanel, ToolBoxColorDropHdl, ToolBox*, pToolBox) 528 { 529 sal_uInt16 nId = pToolBox->GetCurItemId(); 530 531 if(nId == TBI_COLOR) 532 { 533 maColorPopup.Show(*pToolBox); 534 if (mpColorItem) 535 maColorPopup.SetCurrentColor(mpColorItem->GetColorValue(), mbColorAvail); 536 else 537 maColorPopup.SetCurrentColor(COL_WHITE, false); 538 } 539 540 return 0; 541 } 542 543 544 545 void AreaPropertyPanel::SetColor ( 546 const String& rsColorName, 547 const Color aColor) 548 { 549 XFillColorItem aXFillColorItem (rsColorName, aColor); 550 mpBindings->GetDispatcher()->Execute(SID_ATTR_FILL_COLOR, SFX_CALLMODE_RECORD, &aXFillColorItem, 0L); 551 maLastColor = aColor; 552 } 553 554 555 556 557 PopupControl* AreaPropertyPanel::CreateTransparencyGradientControl (PopupContainer* pParent) 558 { 559 return new AreaTransparencyGradientControl(pParent, *this); 560 } 561 562 563 564 565 PopupControl* AreaPropertyPanel::CreateColorPopupControl (PopupContainer* pParent) 566 { 567 return new ColorControl( 568 pParent, 569 mpBindings, 570 SVX_RES(RID_POPUPPANEL_AERAPAGE_COLOR), 571 SVX_RES(VS_COLOR), 572 ::boost::bind(&AreaPropertyPanel::GetLastColor, this), 573 ::boost::bind(&AreaPropertyPanel::SetColor, this, _1,_2), 574 pParent, 575 0); 576 } 577 578 579 580 581 void AreaPropertyPanel::SetupIcons(void) 582 { 583 if(Theme::GetBoolean(Theme::Bool_UseSymphonyIcons)) 584 { 585 // todo 586 } 587 else 588 { 589 // todo 590 } 591 } 592 593 594 595 AreaPropertyPanel* AreaPropertyPanel::Create ( 596 Window* pParent, 597 const cssu::Reference<css::frame::XFrame>& rxFrame, 598 SfxBindings* pBindings) 599 { 600 if (pParent == NULL) 601 throw lang::IllegalArgumentException(A2S("no parent Window given to AreaPropertyPanel::Create"), NULL, 0); 602 if ( ! rxFrame.is()) 603 throw lang::IllegalArgumentException(A2S("no XFrame given to AreaPropertyPanel::Create"), NULL, 1); 604 if (pBindings == NULL) 605 throw lang::IllegalArgumentException(A2S("no SfxBindings given to AreaPropertyPanel::Create"), NULL, 2); 606 607 return new AreaPropertyPanel( 608 pParent, 609 rxFrame, 610 pBindings); 611 } 612 613 614 615 void AreaPropertyPanel::DataChanged( 616 const DataChangedEvent& rEvent) 617 { 618 (void)rEvent; 619 620 SetupIcons(); 621 } 622 623 624 625 void AreaPropertyPanel::HandleContextChange( 626 const ::sfx2::sidebar::EnumContext aContext) 627 { 628 if(maContext == aContext) 629 { 630 // Nothing to do. 631 return; 632 } 633 634 maContext = aContext; 635 636 637 638 // todo 639 } 640 641 642 643 void AreaPropertyPanel::ImpUpdateTransparencies() 644 { 645 if(mpTransparanceItem.get() || mpFloatTransparenceItem.get()) 646 { 647 bool bZeroValue(false); 648 649 if(mpTransparanceItem.get()) 650 { 651 const sal_uInt16 nValue(mpTransparanceItem->GetValue()); 652 653 if(!nValue) 654 { 655 bZeroValue = true; 656 } 657 else if(nValue <= 100) 658 { 659 mpLBTransType->Enable(); 660 mpLBTransType->SelectEntryPos(1); 661 mpBTNGradient->Hide(); 662 mpMTRTransparent->Show(); 663 mpMTRTransparent->Enable(); 664 mpMTRTransparent->SetValue(nValue); 665 } 666 667 if(!bZeroValue) 668 { 669 maTrGrPopup.Hide(); 670 } 671 } 672 673 if(bZeroValue && mpFloatTransparenceItem.get()) 674 { 675 if(mpFloatTransparenceItem->IsEnabled()) 676 { 677 const XGradient& rGradient = mpFloatTransparenceItem->GetGradientValue(); 678 const bool bHighContrast(GetSettings().GetStyleSettings().GetHighContrastMode()); 679 sal_uInt16 nEntryPos(0); 680 Image* pImage = 0; 681 682 mpLBTransType->Enable(); 683 mpMTRTransparent->Hide(); 684 mpBTNGradient->Enable(); 685 mpBTNGradient->Show(); 686 687 switch(rGradient.GetGradientStyle()) 688 { 689 case XGRAD_LINEAR: 690 { 691 nEntryPos = 2; 692 pImage = bHighContrast ? &maImgLinearH : &maImgLinear; 693 break; 694 } 695 case XGRAD_AXIAL: 696 { 697 nEntryPos = 3; 698 pImage = bHighContrast ? &maImgAxialH : &maImgAxial; 699 break; 700 } 701 case XGRAD_RADIAL: 702 { 703 nEntryPos = 4; 704 pImage = bHighContrast ? &maImgRadialH : &maImgRadial; 705 break; 706 } 707 case XGRAD_ELLIPTICAL: 708 { 709 nEntryPos = 5; 710 pImage = bHighContrast ? &maImgElliH : &maImgElli; 711 break; 712 } 713 case XGRAD_SQUARE: 714 { 715 nEntryPos = 6; 716 pImage = bHighContrast ? &maImgQuadH : &maImgQuad; 717 break; 718 } 719 case XGRAD_RECT: 720 { 721 nEntryPos = 7; 722 pImage = bHighContrast ? &maImgSquareH : &maImgSquare; 723 break; 724 } 725 } 726 727 mpLBTransType->SelectEntryPos(nEntryPos); 728 mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT, *pImage); 729 bZeroValue = false; 730 } 731 else 732 { 733 bZeroValue = true; 734 } 735 } 736 737 if(bZeroValue) 738 { 739 mpLBTransType->Enable(); 740 mpLBTransType->SelectEntryPos(0); 741 mpBTNGradient->Hide(); 742 mpMTRTransparent->Enable(); 743 mpMTRTransparent->Show(); 744 mpMTRTransparent->SetValue(0); 745 } 746 } 747 else 748 { 749 // no transparency at all 750 mpLBTransType->SetNoSelection(); 751 mpMTRTransparent->Disable(); 752 mpMTRTransparent->Show(); 753 mpBTNGradient->Disable(); 754 mpBTNGradient->Hide(); 755 } 756 } 757 758 759 760 void AreaPropertyPanel::NotifyItemUpdate( 761 sal_uInt16 nSID, 762 SfxItemState eState, 763 const SfxPoolItem* pState) 764 { 765 XFillStyle eXFS; 766 SfxObjectShell* pSh = SfxObjectShell::Current(); 767 bool bFillTransparenceChanged(false); 768 769 if(SID_ATTR_FILL_TRANSPARENCE == nSID) 770 { 771 bFillTransparenceChanged = true; 772 773 if(eState >= SFX_ITEM_AVAILABLE) 774 { 775 const SfxUInt16Item* pItem = dynamic_cast< const SfxUInt16Item* >(pState); 776 777 if(pItem && (!mpTransparanceItem || *pItem != *mpTransparanceItem)) 778 { 779 mpTransparanceItem.reset((SfxUInt16Item*)pItem->Clone()); 780 } 781 else 782 { 783 mpTransparanceItem.reset(); 784 } 785 } 786 else 787 { 788 mpTransparanceItem.reset(); 789 } 790 } 791 else if(SID_ATTR_FILL_FLOATTRANSPARENCE == nSID) 792 { 793 bFillTransparenceChanged = true; 794 795 if(eState >= SFX_ITEM_AVAILABLE) 796 { 797 const XFillFloatTransparenceItem* pItem = dynamic_cast< const XFillFloatTransparenceItem* >(pState); 798 799 if(pItem && (!mpFloatTransparenceItem || *pItem != *mpFloatTransparenceItem)) 800 { 801 mpFloatTransparenceItem.reset((XFillFloatTransparenceItem*)pItem->Clone()); 802 } 803 else 804 { 805 mpFloatTransparenceItem.reset(); 806 } 807 } 808 else 809 { 810 mpFloatTransparenceItem.reset(); 811 } 812 } 813 814 if(bFillTransparenceChanged) 815 { 816 // update transparency settings dependent of mpTransparanceItem and mpFloatTransparenceItem 817 ImpUpdateTransparencies(); 818 } 819 820 if (nSID == SID_ATTR_FILL_STYLE ) 821 { 822 if( eState == SFX_ITEM_DISABLED ) 823 { 824 mpLbFillType->Disable(); 825 mpLbFillType->SetNoSelection(); 826 mpLbFillAttr->Show(); 827 mpLbFillAttr->Disable(); 828 mpLbFillAttr->SetNoSelection(); 829 mpToolBoxColor->Hide(); 830 mbTBShow = false; 831 meLastXFS = -1; 832 mpStyleItem.reset(); 833 } 834 else if( SFX_ITEM_AVAILABLE == eState ) 835 { 836 mpStyleItem.reset(pState ? (XFillStyleItem*)pState->Clone() : 0); 837 mpLbFillType->Enable(); 838 839 eXFS = (XFillStyle)mpStyleItem->GetValue(); 840 meLastXFS = eXFS; 841 mpLbFillType->SelectEntryPos( 842 sal::static_int_cast< sal_uInt16 >( eXFS ) ); 843 //Added for select invisable 844 if(eXFS == XFILL_NONE) 845 { 846 mpLbFillAttr->SetNoSelection(); 847 mpLbFillAttr->Disable(); 848 } 849 //else 850 // mpLbFillAttr->Enable(); 851 Update(); 852 //SelectFillTypeHdl( NULL ); 853 } 854 else 855 { 856 mpLbFillType->SetNoSelection(); 857 mpLbFillAttr->Show(); 858 mpLbFillAttr->Disable(); 859 mpLbFillAttr->SetNoSelection(); 860 mpToolBoxColor->Hide(); 861 mbTBShow = false; 862 meLastXFS = -1; //Added 863 mpStyleItem.reset(); 864 } 865 } 866 else if(nSID == SID_ATTR_FILL_COLOR) 867 { 868 if( SFX_ITEM_AVAILABLE == eState) 869 { 870 mpColorItem.reset(pState ? (XFillColorItem*)pState->Clone() : 0); 871 } 872 if( mpStyleItem && (XFillStyle)mpStyleItem->GetValue() == XFILL_SOLID) 873 { 874 mpLbFillAttr->Hide(); 875 mpToolBoxColor->Show(); 876 mbTBShow = true; 877 if( SFX_ITEM_AVAILABLE == eState) 878 { 879 mpToolBoxColor->Enable(); 880 mbColorAvail = true; // 881 // maLastColor = mpColorItem->GetColorValue(); 882 Update(); 883 } 884 else if(SFX_ITEM_DISABLED == eState ) 885 { 886 mpToolBoxColor->Disable(); 887 mbColorAvail = false; // 888 mpColorUpdater->Update(COL_WHITE); 889 } 890 else 891 { 892 mbColorAvail = false; // 893 mpColorUpdater->Update(COL_WHITE); 894 } 895 } 896 } 897 else if(nSID == SID_ATTR_FILL_GRADIENT) 898 { 899 if( SFX_ITEM_AVAILABLE == eState) 900 { 901 mpFillGradientItem.reset(pState ? (XFillGradientItem*)pState->Clone() : 0); 902 } 903 if( mpStyleItem && (XFillStyle)mpStyleItem->GetValue() == XFILL_GRADIENT ) 904 { 905 mpLbFillAttr->Show(); 906 mpToolBoxColor->Hide(); 907 mbTBShow = false; 908 if( SFX_ITEM_AVAILABLE == eState) 909 { 910 mpLbFillAttr->Enable(); 911 Update(); 912 } 913 914 else if(SFX_ITEM_DISABLED == eState ) 915 { 916 mpLbFillAttr->Disable(); 917 mpLbFillAttr->SetNoSelection(); 918 } 919 else 920 mpLbFillAttr->SetNoSelection(); 921 } 922 } 923 else if(nSID == SID_ATTR_FILL_HATCH) 924 { 925 if( SFX_ITEM_AVAILABLE == eState) 926 { 927 mpHatchItem.reset(pState ? (XFillHatchItem*)pState->Clone() : 0); 928 } 929 if( mpStyleItem && (XFillStyle)mpStyleItem->GetValue() == XFILL_HATCH ) 930 { 931 mpLbFillAttr->Show(); 932 mpToolBoxColor->Hide(); 933 mbTBShow = false; 934 if( SFX_ITEM_AVAILABLE == eState) 935 { 936 mpLbFillAttr->Enable(); 937 Update(); 938 } 939 else if(SFX_ITEM_DISABLED == eState ) 940 { 941 mpLbFillAttr->Disable(); 942 mpLbFillAttr->SetNoSelection(); 943 } 944 else 945 mpLbFillAttr->SetNoSelection(); 946 } 947 } 948 else if(nSID == SID_ATTR_FILL_BITMAP) 949 { 950 if( SFX_ITEM_AVAILABLE == eState) 951 { 952 mpBitmapItem.reset(pState ? (XFillBitmapItem*)pState->Clone() : 0); 953 } 954 if( mpStyleItem && (XFillStyle)mpStyleItem->GetValue() == XFILL_BITMAP ) 955 { 956 mpLbFillAttr->Show(); 957 mpToolBoxColor->Hide(); 958 mbTBShow = false; 959 if( SFX_ITEM_AVAILABLE == eState) 960 { 961 mpLbFillAttr->Enable(); 962 Update(); 963 } 964 else if(SFX_ITEM_DISABLED == eState ) 965 { 966 mpLbFillAttr->Disable(); 967 mpLbFillAttr->SetNoSelection(); 968 } 969 else 970 mpLbFillAttr->SetNoSelection(); 971 } 972 } 973 else if(nSID == SID_COLOR_TABLE) 974 { 975 if( SFX_ITEM_AVAILABLE == eState) 976 { 977 mpColorTableItem.reset(pState ? (SvxColorTableItem*)pState->Clone() : 0); 978 979 if( mpStyleItem && (XFillStyle)mpStyleItem->GetValue()== XFILL_SOLID) 980 { 981 if ( mpColorItem ) 982 { 983 String aString( mpColorItem->GetName() ); 984 Color aColor = mpColorItem->GetColorValue(); 985 mpLbFillAttr->Clear(); 986 SvxColorTableItem aItem( *(const SvxColorTableItem*)( 987 pSh->GetItem( SID_COLOR_TABLE ) ) ); 988 mpLbFillAttr->Enable(); 989 mpLbFillAttr->Fill( aItem.GetColorTable() ); 990 mpLbFillAttr->SelectEntry( aColor ); 991 } 992 else 993 mpLbFillAttr->SetNoSelection(); 994 } 995 } 996 } 997 else if(nSID == SID_GRADIENT_LIST) 998 { 999 if( SFX_ITEM_AVAILABLE == eState) 1000 { 1001 mpGradientListItem.reset(pState ? (SvxGradientListItem*)pState->Clone() : 0); 1002 1003 if( mpStyleItem && (XFillStyle)mpStyleItem->GetValue() == XFILL_GRADIENT) 1004 { 1005 if ( mpFillGradientItem ) 1006 { 1007 String aString( mpFillGradientItem->GetName() ); 1008 mpLbFillAttr->Clear(); 1009 SvxGradientListItem aItem( *(const SvxGradientListItem*)( 1010 pSh->GetItem( SID_GRADIENT_LIST ) ) ); 1011 mpLbFillAttr->Enable(); 1012 mpLbFillAttr->Fill( aItem.GetGradientList() ); 1013 mpLbFillAttr->SelectEntry( aString ); 1014 } 1015 else 1016 mpLbFillAttr->SetNoSelection(); 1017 } 1018 } 1019 } 1020 else if(nSID == SID_HATCH_LIST) 1021 { 1022 if( SFX_ITEM_AVAILABLE == eState) 1023 { 1024 mpHatchListItem.reset(pState ? (SvxHatchListItem*)pState->Clone() : 0); 1025 1026 if( mpStyleItem && (XFillStyle)mpStyleItem->GetValue() == XFILL_HATCH ) 1027 { 1028 if ( mpHatchItem) 1029 { 1030 String aString( mpHatchItem->GetName() ); 1031 mpLbFillAttr->Clear(); 1032 SvxHatchListItem aItem( *(const SvxHatchListItem*)( 1033 pSh->GetItem( SID_HATCH_LIST ) ) ); 1034 mpLbFillAttr->Enable(); 1035 mpLbFillAttr->Fill( aItem.GetHatchList() ); 1036 mpLbFillAttr->SelectEntry( aString ); 1037 } 1038 else 1039 mpLbFillAttr->SetNoSelection(); 1040 } 1041 } 1042 } 1043 else if(nSID == SID_BITMAP_LIST) 1044 { 1045 if( SFX_ITEM_AVAILABLE == eState) 1046 { 1047 mpBitmapListItem.reset(pState ? (SvxBitmapListItem*)pState->Clone() : 0); 1048 1049 if( mpStyleItem && (XFillStyle)mpStyleItem->GetValue() == XFILL_BITMAP ) 1050 { 1051 if ( mpBitmapItem ) 1052 { 1053 String aString( mpBitmapItem->GetName() ); 1054 mpLbFillAttr->Clear(); 1055 SvxBitmapListItem aItem( *(const SvxBitmapListItem*)( 1056 pSh->GetItem( SID_BITMAP_LIST ) ) ); 1057 mpLbFillAttr->Enable(); 1058 mpLbFillAttr->Fill( aItem.GetBitmapList() ); 1059 mpLbFillAttr->SelectEntry( aString ); 1060 } 1061 else 1062 mpLbFillAttr->SetNoSelection(); 1063 } 1064 } 1065 } 1066 } 1067 1068 1069 1070 SfxBindings* AreaPropertyPanel::GetBindings() 1071 { 1072 return mpBindings; 1073 } 1074 1075 1076 1077 void AreaPropertyPanel::Update() 1078 { 1079 if ( mpStyleItem ) 1080 { 1081 XFillStyle eXFS = (XFillStyle)mpStyleItem->GetValue(); 1082 SfxObjectShell* pSh = SfxObjectShell::Current(); 1083 1084 switch( eXFS ) 1085 { 1086 case XFILL_NONE: 1087 { 1088 mpLbFillAttr->Show(); //wj for new color picker 1089 mpToolBoxColor->Hide(); //wj for new color picker 1090 mbTBShow = false; 1091 } 1092 break; 1093 1094 case XFILL_SOLID: 1095 { 1096 if ( mpColorItem ) 1097 { 1098 mpLbFillAttr->Hide(); //wj for new color picker 1099 mpToolBoxColor->Show(); //wj for new color picker 1100 mbTBShow = true; 1101 mpColorUpdater->Update(mpColorItem->GetColorValue()); 1102 } 1103 else 1104 mpColorUpdater->Update(COL_WHITE); 1105 } 1106 break; 1107 1108 case XFILL_GRADIENT: 1109 { 1110 mpLbFillAttr->Show(); //wj for new color picker 1111 mpToolBoxColor->Hide(); //wj for new color picker 1112 mbTBShow = false; 1113 if ( pSh && pSh->GetItem( SID_GRADIENT_LIST ) ) 1114 { 1115 SvxGradientListItem aItem( *(const SvxGradientListItem*)( 1116 pSh->GetItem( SID_GRADIENT_LIST ) ) ); 1117 mpLbFillAttr->Enable(); 1118 mpLbFillAttr->Clear(); 1119 mpLbFillAttr->Fill( aItem.GetGradientList() ); 1120 if ( mpFillGradientItem ) 1121 { 1122 String aString( mpFillGradientItem->GetName() ); 1123 mpLbFillAttr->SelectEntry( aString ); 1124 } 1125 else 1126 mpLbFillAttr->SetNoSelection(); 1127 } 1128 else 1129 mpLbFillAttr->SetNoSelection(); 1130 } 1131 break; 1132 1133 case XFILL_HATCH: 1134 { 1135 mpLbFillAttr->Show(); //wj for new color picker 1136 mpToolBoxColor->Hide(); //wj for new color picker 1137 mbTBShow = false; 1138 if ( pSh && pSh->GetItem( SID_HATCH_LIST ) ) 1139 { 1140 SvxHatchListItem aItem( *(const SvxHatchListItem*)( 1141 pSh->GetItem( SID_HATCH_LIST ) ) ); 1142 mpLbFillAttr->Enable(); 1143 mpLbFillAttr->Clear(); 1144 mpLbFillAttr->Fill( aItem.GetHatchList() ); 1145 if ( mpHatchItem ) 1146 { 1147 String aString( mpHatchItem->GetName() ); 1148 mpLbFillAttr->SelectEntry( aString ); 1149 } 1150 else 1151 mpLbFillAttr->SetNoSelection(); 1152 } 1153 else 1154 mpLbFillAttr->SetNoSelection(); 1155 } 1156 break; 1157 1158 case XFILL_BITMAP: 1159 { 1160 mpLbFillAttr->Show(); //wj for new color picker 1161 mpToolBoxColor->Hide(); //wj for new color picker 1162 mbTBShow = false; 1163 //mpLbFillAttr->Fill( mpBitmapListItem->GetBitmapList() ); 1164 if ( pSh && pSh->GetItem( SID_BITMAP_LIST ) ) 1165 { 1166 SvxBitmapListItem aItem( *(const SvxBitmapListItem*)( 1167 pSh->GetItem( SID_BITMAP_LIST ) ) ); 1168 mpLbFillAttr->Enable(); 1169 mpLbFillAttr->Clear(); 1170 mpLbFillAttr->Fill( aItem.GetBitmapList() ); 1171 if ( mpBitmapItem ) 1172 { 1173 String aString( mpBitmapItem->GetName() ); 1174 mpLbFillAttr->SelectEntry( aString ); 1175 } 1176 else 1177 mpLbFillAttr->SetNoSelection(); 1178 } 1179 else 1180 mpLbFillAttr->SetNoSelection(); 1181 } 1182 break; 1183 1184 default: 1185 DBG_ERROR( "Nicht unterstuetzter Flaechentyp" ); 1186 break; 1187 } 1188 } 1189 } 1190 1191 1192 1193 IMPL_LINK( AreaPropertyPanel, ImplPopupModeEndHdl, FloatingWindow*, EMPTYARG ) 1194 { 1195 return 0; 1196 } 1197 1198 1199 1200 IMPL_LINK( AreaPropertyPanel, ClickTrGrHdl_Impl, ToolBox*, pToolBox ) 1201 { 1202 maTrGrPopup.Rearrange(mpFloatTransparenceItem.get()); 1203 1204 OSL_ASSERT(pToolBox->GetCurItemId() == TBI_BTX_GRADIENT); 1205 1206 maTrGrPopup.Show(*pToolBox); 1207 1208 return (0L); 1209 } 1210 1211 1212 1213 IMPL_LINK(AreaPropertyPanel, ChangeTrgrTypeHdl_Impl, void *, EMPTYARG) 1214 { 1215 sal_uInt16 nSelectType = mpLBTransType->GetSelectEntryPos(); 1216 bool bGradient = false; 1217 sal_uInt16 nTrans = 0; 1218 1219 if (nSelectType == 0) 1220 { 1221 mpBTNGradient->Hide(); 1222 mpMTRTransparent->Show(); 1223 mpMTRTransparent->Enable(); 1224 mpMTRTransparent->SetValue(0); 1225 } 1226 else if (nSelectType == 1) 1227 { 1228 mpBTNGradient->Hide(); 1229 mpMTRTransparent->Show(); 1230 nTrans = mnLastTransSolid; 1231 mpMTRTransparent->SetValue(nTrans); 1232 mpLBTransType->SelectEntryPos(1);// for multi-selected, choose solid no selection 1233 mpMTRTransparent->Enable(); 1234 } 1235 else 1236 { 1237 mpBTNGradient->Show(); 1238 //for beta1 1239 switch ( nSelectType ) 1240 { 1241 case 2: 1242 mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgLinearH : maImgLinear); // high contrast 1243 break; 1244 case 3: 1245 mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgAxialH : maImgAxial); 1246 break; 1247 case 4: 1248 mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgRadialH : maImgRadial); 1249 break; 1250 case 5: 1251 mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgElliH : maImgElli ); 1252 break; 1253 case 6: 1254 mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgQuadH : maImgQuad ); 1255 break; 1256 case 7: 1257 mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgSquareH : maImgSquare); 1258 break; 1259 } 1260 //end of new code 1261 mpMTRTransparent->Hide(); 1262 mpBTNGradient->Enable(); 1263 bGradient = true; 1264 } 1265 1266 XFillTransparenceItem aLinearItem(nTrans); 1267 GetBindings()->GetDispatcher()->Execute( SID_ATTR_FILL_TRANSPARENCE, SFX_CALLMODE_RECORD, &aLinearItem, 0L ); 1268 1269 if (nSelectType > 1) nSelectType = nSelectType-2; 1270 1271 XGradient aTmpGradient; 1272 1273 switch(nSelectType) 1274 { 1275 case XGRAD_LINEAR: 1276 aTmpGradient = maGradientLinear; 1277 break; 1278 case XGRAD_AXIAL: 1279 aTmpGradient = maGradientAxial; 1280 break; 1281 case XGRAD_RADIAL: 1282 aTmpGradient = maGradientRadial; 1283 break; 1284 case XGRAD_ELLIPTICAL: 1285 aTmpGradient = maGradientElliptical; 1286 break; 1287 case XGRAD_SQUARE: 1288 aTmpGradient = maGradientSquare; 1289 break; 1290 case XGRAD_RECT: 1291 aTmpGradient = maGradientRect; 1292 break; 1293 } 1294 SfxItemPool* pPool = NULL; 1295 bool bEnable = false; 1296 if (bGradient) bEnable = true; 1297 XFillFloatTransparenceItem aGradientItem(pPool,aTmpGradient, bEnable ); 1298 1299 GetBindings()->GetDispatcher()->Execute( SID_ATTR_FILL_FLOATTRANSPARENCE, SFX_CALLMODE_RECORD, &aGradientItem, 0L ); 1300 1301 return( 0L ); 1302 } 1303 1304 1305 1306 IMPL_LINK(AreaPropertyPanel, ModifyTransparentHdl_Impl, void*, EMPTYARG) 1307 { 1308 sal_uInt16 nTrans = (sal_uInt16)mpMTRTransparent->GetValue(); 1309 mnLastTransSolid = nTrans; 1310 sal_uInt16 nSelectType = mpLBTransType->GetSelectEntryPos(); 1311 if (nTrans != 0 && nSelectType == 0) 1312 mpLBTransType->SelectEntryPos(1); 1313 XFillTransparenceItem aLinearItem(nTrans); 1314 GetBindings()->GetDispatcher()->Execute( SID_ATTR_FILL_TRANSPARENCE, SFX_CALLMODE_RECORD, &aLinearItem, 0L ); 1315 1316 return 0L; 1317 } 1318 1319 1320 Color AreaPropertyPanel::GetLastColor (void) const 1321 { 1322 return maLastColor; 1323 } 1324 1325 1326 1327 1328 XGradient AreaPropertyPanel::GetGradient (const XGradientStyle eStyle) const 1329 { 1330 switch (eStyle) 1331 { 1332 default: 1333 case XGRAD_LINEAR: 1334 return maGradientLinear; 1335 case XGRAD_AXIAL: 1336 return maGradientAxial; 1337 case XGRAD_RADIAL: 1338 return maGradientRadial; 1339 case XGRAD_ELLIPTICAL: 1340 return maGradientElliptical; 1341 case XGRAD_SQUARE: 1342 return maGradientSquare; 1343 case XGRAD_RECT: 1344 return maGradientRect; 1345 } 1346 } 1347 1348 1349 1350 1351 void AreaPropertyPanel::SetGradient (const XGradient& rGradient) 1352 { 1353 switch (rGradient.GetGradientStyle()) 1354 { 1355 case XGRAD_LINEAR: 1356 maGradientLinear = rGradient; 1357 break; 1358 case XGRAD_AXIAL: 1359 maGradientAxial = rGradient; 1360 break; 1361 case XGRAD_RADIAL: 1362 maGradientRadial = rGradient; 1363 break; 1364 case XGRAD_ELLIPTICAL: 1365 maGradientElliptical = rGradient; 1366 break; 1367 case XGRAD_SQUARE: 1368 maGradientSquare = rGradient; 1369 break; 1370 case XGRAD_RECT: 1371 maGradientRect = rGradient; 1372 break; 1373 } 1374 } 1375 1376 1377 1378 1379 sal_Int32 AreaPropertyPanel::GetSelectedTransparencyTypeIndex (void) const 1380 { 1381 return mpLBTransType->GetSelectEntryPos(); 1382 } 1383 1384 } } // end of namespace svx::sidebar 1385