LibreOffice Module svx (master)  1
AreaPropertyPanelBase.cxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  * Licensed to the Apache Software Foundation (ASF) under one or more
12  * contributor license agreements. See the NOTICE file distributed
13  * with this work for additional information regarding copyright
14  * ownership. The ASF licenses this file to you under the Apache
15  * License, Version 2.0 (the "License"); you may not use this file
16  * except in compliance with the License. You may obtain a copy of
17  * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 
23 #include <svx/drawitem.hxx>
24 #include <svx/svxids.hrc>
25 #include <sfx2/objsh.hxx>
26 #include <svx/xfltrit.hxx>
27 #include <svx/xflftrit.hxx>
28 #include <svx/xtable.hxx>
29 #include <sfx2/dispatch.hxx>
30 #include <sfx2/bindings.hxx>
31 #include <svtools/valueset.hxx>
32 #include <unotools/pathoptions.hxx>
33 #include <svx/svxitems.hrc>
34 #include <vcl/toolbox.hxx>
35 #include <svtools/toolbarmenu.hxx>
36 #include <svx/tbcontrl.hxx>
37 #include <sfx2/opengrf.hxx>
38 #include <tools/urlobj.hxx>
39 #include <bitmaps.hlst>
40 
41 using namespace css;
42 using namespace css::uno;
43 
44 const char UNO_SIDEBARGRADIENT[] = ".uno:sidebargradient";
45 
46 namespace svx { namespace sidebar {
47 
48 namespace {
49 
50 enum eFillStyle
51 {
52  NONE,
53  SOLID,
54  GRADIENT,
55  HATCH,
56  BITMAP,
57  PATTERN
58 };
59 
60 }
61 
62 const sal_Int32 AreaPropertyPanelBase::DEFAULT_CENTERX = 50;
63 const sal_Int32 AreaPropertyPanelBase::DEFAULT_CENTERY = 50;
64 const sal_Int32 AreaPropertyPanelBase::DEFAULT_ANGLE = 0;
65 const sal_Int32 AreaPropertyPanelBase::DEFAULT_STARTVALUE = 0;
66 const sal_Int32 AreaPropertyPanelBase::DEFAULT_ENDVALUE = 16777215;
67 const sal_Int32 AreaPropertyPanelBase::DEFAULT_BORDER = 0;
68 
69 AreaPropertyPanelBase::AreaPropertyPanelBase(
70  vcl::Window* pParent,
71  const css::uno::Reference<css::frame::XFrame>& rxFrame)
72  : PanelLayout(pParent, "AreaPropertyPanel", "svx/ui/sidebararea.ui", rxFrame),
73  meLastXFS(static_cast<sal_uInt16>(-1)),
74  mnLastPosHatch(0),
75  mnLastPosBitmap(0),
76  mnLastPosPattern(0),
77  mnLastTransSolid(50),
78  maGradientLinear(),
79  maGradientAxial(),
80  maGradientRadial(),
81  maGradientElliptical(),
82  maGradientSquare(),
83  maGradientRect(),
84  mpStyleItem(),
85  mpColorItem(),
86  mpFillGradientItem(),
87  mpHatchItem(),
88  mpBitmapItem(),
89  maImgAxial(StockImage::Yes, BMP_AXIAL),
90  maImgElli(StockImage::Yes, BMP_ELLI),
91  maImgQuad(StockImage::Yes, BMP_QUAD),
92  maImgRadial(StockImage::Yes, BMP_RADIAL),
93  maImgSquare(StockImage::Yes, BMP_SQUARE),
94  maImgLinear(StockImage::Yes, BMP_LINEAR),
95  mpFloatTransparenceItem(),
96  mpTransparanceItem()
97 {
98  get(mpColorTextFT, "filllabel");
99  get(mpLbFillType, "fillstyle");
100  get(mpLbFillAttr, "fillattr");
101  get(mpTrspTextFT, "transparencylabel");
102  get(mpToolBoxColor, "selectcolor");
103  get(mpLBTransType, "transtype");
104  get(mpMTRTransparent, "settransparency");
105  get(mpSldTransparent, "transparencyslider");
106  get(mpBTNGradient, "selectgradient");
107  get(mpMTRAngle, "gradangle");
108  get(mpLbFillGradFrom, "fillgrad1");
109  get(mpLbFillGradTo, "fillgrad2");
110  get(mpGradientStyle, "gradientstyle");
111  get(mpBmpImport, "bmpimport");
112  mpPanel = dynamic_cast<sfx2::sidebar::Panel*>(pParent);
113 
114  Initialize();
115 }
116 
118 {
119  disposeOnce();
120 }
121 
123 {
124  mxTrGrPopup.disposeAndClear();
134  mpMTRAngle.clear();
138  mpBmpImport.clear();
139  mpPanel.clear();
140 
142 }
143 
145 {
152  maGradientLinear.SetGradientStyle(css::awt::GradientStyle_LINEAR);
153 
155  maGradientAxial.SetGradientStyle(css::awt::GradientStyle_AXIAL);
156 
158  maGradientRadial.SetGradientStyle(css::awt::GradientStyle_RADIAL);
159 
161  maGradientElliptical.SetGradientStyle(css::awt::GradientStyle_ELLIPTICAL);
162 
164  maGradientSquare.SetGradientStyle(css::awt::GradientStyle_SQUARE);
165 
167  maGradientRect.SetGradientStyle(css::awt::GradientStyle_RECT);
168 
169 
170  mpLbFillType->SetSelectHdl( LINK( this, AreaPropertyPanelBase, SelectFillTypeHdl ) );
171 
172  Link<ListBox&,void> aLink = LINK( this, AreaPropertyPanelBase, SelectFillAttrHdl );
173  Link<SvxColorListBox&,void> aLink3 = LINK( this, AreaPropertyPanelBase, SelectFillColorHdl );
174  mpLbFillAttr->SetSelectHdl( aLink );
175  mpGradientStyle->SetSelectHdl( aLink );
176  mpLbFillGradFrom->SetSelectHdl( aLink3 );
177  mpLbFillGradTo->SetSelectHdl( aLink3 );
178  mpMTRAngle->SetModifyHdl(LINK(this,AreaPropertyPanelBase, ChangeGradientAngle));
179 
180  mpLBTransType->SetSelectHdl(LINK(this, AreaPropertyPanelBase, ChangeTrgrTypeHdl_Impl));
181 
182  SetTransparency( 50 );
183  mpMTRTransparent->SetModifyHdl(LINK(this, AreaPropertyPanelBase, ModifyTransparentHdl_Impl));
184  mpSldTransparent->SetSlideHdl(LINK(this, AreaPropertyPanelBase, ModifyTransSliderHdl));
185 
186  const sal_uInt16 nIdGradient = mpBTNGradient->GetItemId(UNO_SIDEBARGRADIENT);
187  mpBTNGradient->SetItemBits( nIdGradient, mpBTNGradient->GetItemBits( nIdGradient ) | ToolBoxItemBits::DROPDOWNONLY );
188  Link<ToolBox *, void> aLink2 = LINK( this, AreaPropertyPanelBase, ClickTrGrHdl_Impl );
190  mpBTNGradient->SetSelectHdl( aLink2 );
191  mpBTNGradient->SetItemImage(nIdGradient,maImgLinear);
192  mpBTNGradient->Hide();
193  mpBmpImport->SetClickHdl( LINK(this, AreaPropertyPanelBase, ClickImportBitmapHdl));
194 }
195 
197 {
199  mpMTRTransparent->SetValue(nVal);
200 }
201 
202 IMPL_LINK_NOARG(AreaPropertyPanelBase, ClickImportBitmapHdl, Button*, void)
203 {
204  SvxOpenGraphicDialog aDlg("Import", GetFrameWeld());
205  aDlg.EnableLink(false);
206  if( aDlg.Execute() == ERRCODE_NONE )
207  {
208  Graphic aGraphic;
209  EnterWait();
210  ErrCode nError = aDlg.GetGraphic( aGraphic );
211  LeaveWait();
212  if( nError == ERRCODE_NONE )
213  {
214  XBitmapListRef pList = SfxObjectShell::Current()->GetItem(SID_BITMAP_LIST)->GetBitmapList();
215  INetURLObject aURL( aDlg.GetPath() );
216  OUString aFileName = aURL.GetLastName().getToken(0, '.');
217  OUString aName = aFileName;
218  long j = 1;
219  bool bValidBitmapName = false;
220  while( !bValidBitmapName )
221  {
222  bValidBitmapName = true;
223  for( long i = 0; i < pList->Count() && bValidBitmapName; i++ )
224  {
225  if( aName == pList->GetBitmap(i)->GetName() )
226  {
227  bValidBitmapName = false;
228  aName = aFileName + OUString::number(j++);
229  }
230  }
231  }
232 
233  pList->Insert(std::make_unique<XBitmapEntry>(aGraphic, aName));
234  pList->Save();
235  mpLbFillAttr->Clear();
236  mpLbFillAttr->Fill(pList);
237  mpLbFillAttr->SelectEntry(aName);
238  SelectFillAttrHdl(*mpLbFillAttr);
239  }
240  }
241 }
242 
243 IMPL_LINK_NOARG(AreaPropertyPanelBase, SelectFillTypeHdl, ListBox&, void)
244 {
245  sal_Int32 nPos = static_cast<eFillStyle>(mpLbFillType->GetSelectedEntryPos());
246  mpLbFillAttr->Clear();
248  if(!pSh)
249  return;
250 
251  // #i122676# Do no longer trigger two Execute calls, one for SID_ATTR_FILL_STYLE
252  // and one for setting the fill attribute itself, but add two SfxPoolItems to the
253  // call to get just one action at the SdrObject and to create only one Undo action, too.
254  // Checked that this works in all apps.
255  switch( nPos )
256  {
257  default:
258  case NONE:
259  {
260  mpLbFillAttr->Show();
261  mpLbFillGradFrom->Hide();
262  mpLbFillGradTo->Hide();
263  mpGradientStyle->Hide();
264  mpMTRAngle->Hide();
265  mpToolBoxColor->Hide();
266  mpBmpImport->Hide();
267  mpLbFillType->Selected();
268  mpLbFillAttr->Disable();
269 
270  // #i122676# need to call a single SID_ATTR_FILL_STYLE change
271  setFillStyle(XFillStyleItem(drawing::FillStyle_NONE));
272  break;
273  }
274  case SOLID:
275  {
276  mpLbFillAttr->Hide();
277  mpLbFillGradFrom->Hide();
278  mpLbFillGradTo->Hide();
279  mpGradientStyle->Hide();
280  mpMTRAngle->Hide();
281  mpBmpImport->Hide();
282  mpToolBoxColor->Show();
283  const OUString aTmpStr;
284  const Color aColor = mpColorItem ? mpColorItem->GetColorValue() : COL_AUTO;
285  const XFillColorItem aXFillColorItem( aTmpStr, aColor );
286 
287  // #i122676# change FillStyle and Color in one call
288  XFillStyleItem aXFillStyleItem(drawing::FillStyle_SOLID);
289  setFillStyleAndColor(&aXFillStyleItem, aXFillColorItem);
290  break;
291  }
292  case GRADIENT:
293  {
294  mpLbFillAttr->Hide();
295  mpLbFillGradFrom->Show();
296  mpLbFillGradTo->Show();
297  mpGradientStyle->Show();
298  mpMTRAngle->Show();
299  mpToolBoxColor->Hide();
300  mpBmpImport->Hide();
301 
302  mpLbFillAttr->Enable();
303  mpLbFillGradTo->Enable();
304  mpLbFillGradFrom->Enable();
305  mpGradientStyle->Enable();
306  mpMTRAngle->Enable();
307  mpLbFillAttr->Clear();
308 
309  const SvxGradientListItem * pItem = pSh->GetItem(SID_GRADIENT_LIST);
310 
311  if(0 < pItem->GetGradientList()->Count())
312  {
313  const XGradient aGradient = pItem->GetGradientList()->GetGradient(0)->GetGradient();
314  const OUString aName = pItem->GetGradientList()->GetGradient(0)->GetName();
315  const XFillGradientItem aXFillGradientItem(aName, aGradient);
316 
317  // #i122676# change FillStyle and Gradient in one call
318  XFillStyleItem aXFillStyleItem(drawing::FillStyle_GRADIENT);
319  setFillStyleAndGradient(&aXFillStyleItem, aXFillGradientItem);
320  mpLbFillGradFrom->SelectEntry(aGradient.GetStartColor());
321  mpLbFillGradTo->SelectEntry(aGradient.GetEndColor());
322 
323  mpMTRAngle->SetValue(aGradient.GetAngle() / 10);
324  css::awt::GradientStyle eXGS = aGradient.GetGradientStyle();
325  mpGradientStyle->SelectEntryPos(sal::static_int_cast< sal_Int32 >( eXGS ));
326  }
327  break;
328  }
329  case HATCH:
330  {
331  mpLbFillAttr->Show();
332  mpLbFillGradFrom->Hide();
333  mpLbFillGradTo->Hide();
334  mpMTRAngle->Hide();
335  mpGradientStyle->Hide();
336  mpToolBoxColor->Hide();
337  mpBmpImport->Hide();
338 
339  const SvxHatchListItem* pItem( pSh->GetItem(SID_HATCH_LIST) );
340  if(pItem)
341  {
342  const XHatchListRef& pXHatchList(pItem->GetHatchList());
343  mpLbFillAttr->Enable();
344  mpLbFillAttr->Clear();
345  mpLbFillAttr->Fill(pXHatchList);
346 
347  mpLbFillAttr->AdaptDropDownLineCountToMaximum();
348 
349  if(LISTBOX_ENTRY_NOTFOUND != mnLastPosHatch)
350  {
351  if(mnLastPosHatch < pXHatchList->Count())
352  {
353  const XHatch aHatch = pXHatchList->GetHatch(mnLastPosHatch)->GetHatch();
354  const OUString aName = pXHatchList->GetHatch(mnLastPosHatch)->GetName();
355  const XFillHatchItem aXFillHatchItem(aName, aHatch);
356 
357  // #i122676# change FillStyle and Hatch in one call
358  XFillStyleItem aXFillStyleItem(drawing::FillStyle_HATCH);
359  setFillStyleAndHatch(&aXFillStyleItem, aXFillHatchItem);
360  mpLbFillAttr->SelectEntryPos(mnLastPosHatch);
361  }
362  }
363  }
364  else
365  {
366  mpLbFillAttr->Disable();
367  }
368  break;
369  }
370  case BITMAP:
371  case PATTERN:
372  {
373  mpLbFillAttr->Show();
374  mpLbFillAttr->Enable();
375  mpLbFillAttr->Clear();
376  mpLbFillGradFrom->Hide();
377  mpLbFillGradTo->Hide();
378  mpMTRAngle->Hide();
379  mpGradientStyle->Hide();
380  mpToolBoxColor->Hide();
381 
382  OUString aName;
383  GraphicObject aBitmap;
384  if(nPos == static_cast< sal_Int32 >(BITMAP))
385  {
386  mpBmpImport->Show();
387  const SvxBitmapListItem* pItem = pSh->GetItem(SID_BITMAP_LIST);
388  if(pItem)
389  {
390  const XBitmapListRef& pXBitmapList(pItem->GetBitmapList());
391  mpLbFillAttr->Fill(pXBitmapList);
392 
393  mpLbFillAttr->AdaptDropDownLineCountToMaximum();
394 
395  if(LISTBOX_ENTRY_NOTFOUND != mnLastPosBitmap)
396  {
397  if(mnLastPosBitmap < pXBitmapList->Count())
398  {
399  const XBitmapEntry* pXBitmapEntry = pXBitmapList->GetBitmap(mnLastPosBitmap);
400  aBitmap = pXBitmapEntry->GetGraphicObject();
401  aName = pXBitmapEntry->GetName();
402  mpLbFillAttr->SelectEntryPos(mnLastPosBitmap);
403  }
404  }
405  }
406  else
407  {
408  mpLbFillAttr->Hide();
409  }
410  }
411  else if(nPos == static_cast< sal_Int32 >(PATTERN))
412  {
413  mpBmpImport->Hide();
414  const SvxPatternListItem* pItem = pSh->GetItem(SID_PATTERN_LIST);
415  if(pItem)
416  {
417  const XPatternListRef& pXPatternList(pItem->GetPatternList());
418  mpLbFillAttr->Fill(pXPatternList);
419 
420  mpLbFillAttr->AdaptDropDownLineCountToMaximum();
421  if(LISTBOX_ENTRY_NOTFOUND != mnLastPosPattern)
422  {
423  if(mnLastPosPattern < pXPatternList->Count())
424  {
425  const XBitmapEntry* pXPatternEntry = pXPatternList->GetBitmap(mnLastPosPattern);
426  aBitmap = pXPatternEntry->GetGraphicObject();
427  aName = pXPatternEntry->GetName();
428  mpLbFillAttr->SelectEntryPos(mnLastPosPattern);
429  }
430  }
431  }
432  else
433  {
434  mpLbFillAttr->Hide();
435  }
436  }
437  const XFillBitmapItem aXFillBitmapItem( aName, aBitmap );
438  const XFillStyleItem aXFillStyleItem(drawing::FillStyle_BITMAP);
439  setFillStyleAndBitmap(&aXFillStyleItem, aXFillBitmapItem);
440  break;
441  }
442  }
443 
444  meLastXFS = static_cast<sal_uInt16>(nPos);
445 
446  if(eFillStyle::NONE != static_cast<eFillStyle>(nPos))
447  {
448  mpLbFillType->Selected();
449  }
450  if(mpPanel)
451  mpPanel->TriggerDeckLayouting();
452 }
453 
455 {
456  SelectFillAttrHdl_Impl();
457 }
458 
459 IMPL_LINK_NOARG(AreaPropertyPanelBase, SelectFillAttrHdl, ListBox&, void)
460 {
461  SelectFillAttrHdl_Impl();
462 }
463 
464 IMPL_LINK_NOARG(AreaPropertyPanelBase, ChangeGradientAngle, Edit&, void)
465 {
466  SelectFillAttrHdl_Impl();
467 }
468 
470  const DataChangedEvent& /*rEvent*/)
471 {
472 }
473 
475 {
476  sal_Int32 nPosFillStyle = static_cast<eFillStyle>(mpLbFillType->GetSelectedEntryPos());
478 
479  // #i122676# dependent from bFillStyleChange, do execute a single or two
480  // changes in one Execute call
481  const bool bFillStyleChange(static_cast<eFillStyle>(meLastXFS) != static_cast<eFillStyle>(nPosFillStyle));
482 
483  switch(nPosFillStyle)
484  {
485  case eFillStyle::NONE:
486  {
487  if(bFillStyleChange)
488  {
489  XFillStyleItem aXFillStyleItem(drawing::FillStyle_NONE);
490  setFillStyle(aXFillStyleItem);
491  }
492  break;
493  }
494  case eFillStyle::SOLID:
495  {
496  if(bFillStyleChange)
497  {
498  // #i122676# Single FillStyle change call needed here
499  XFillStyleItem aXFillStyleItem(drawing::FillStyle_SOLID);
500  setFillStyle(aXFillStyleItem);
501  }
502  break;
503  }
504  case eFillStyle::GRADIENT:
505  {
506 
507  if(pSh && pSh->GetItem(SID_COLOR_TABLE))
508  {
509  XGradient aGradient;
510  aGradient.SetAngle(mpMTRAngle->GetValue() * 10);
511  aGradient.SetGradientStyle(static_cast<css::awt::GradientStyle>(mpGradientStyle->GetSelectedEntryPos()));
514 
515  const XFillGradientItem aXFillGradientItem(mpLbFillAttr->GetSelectedEntry(), aGradient);
516 
517  // #i122676# Change FillStyle and Gradinet in one call
518  XFillStyleItem aXFillStyleItem(drawing::FillStyle_GRADIENT);
519  setFillStyleAndGradient(bFillStyleChange ? &aXFillStyleItem : nullptr, aXFillGradientItem);
520  }
521  break;
522  }
523  case eFillStyle::HATCH:
524  {
525  sal_Int32 nPos = mpLbFillAttr->GetSelectedEntryPos();
526 
527  if(LISTBOX_ENTRY_NOTFOUND == nPos)
528  {
529  nPos = mnLastPosHatch;
530  }
531 
532  if(LISTBOX_ENTRY_NOTFOUND != nPos && pSh && pSh->GetItem(SID_HATCH_LIST))
533  {
534  const SvxHatchListItem * pItem = pSh->GetItem(SID_HATCH_LIST);
535 
536  if(nPos < pItem->GetHatchList()->Count())
537  {
538  const XHatch aHatch = pItem->GetHatchList()->GetHatch(nPos)->GetHatch();
539  const XFillHatchItem aXFillHatchItem( mpLbFillAttr->GetSelectedEntry(), aHatch);
540 
541  // #i122676# Change FillStyle and Hatch in one call
542  XFillStyleItem aXFillStyleItem(drawing::FillStyle_HATCH);
543  setFillStyleAndHatch(bFillStyleChange ? &aXFillStyleItem : nullptr, aXFillHatchItem);
544  }
545  }
546 
547  if(LISTBOX_ENTRY_NOTFOUND != nPos)
548  {
549  mnLastPosHatch = nPos;
550  }
551  break;
552  }
553  case eFillStyle::BITMAP:
554  {
555  sal_Int32 nPos = mpLbFillAttr->GetSelectedEntryPos();
556 
557  if(LISTBOX_ENTRY_NOTFOUND == nPos)
558  {
559  nPos = mnLastPosBitmap;
560  }
561 
562  if(LISTBOX_ENTRY_NOTFOUND != nPos && pSh && pSh->GetItem(SID_BITMAP_LIST))
563  {
564  const SvxBitmapListItem * pItem = pSh->GetItem(SID_BITMAP_LIST);
565 
566  if(nPos < pItem->GetBitmapList()->Count())
567  {
568  const XBitmapEntry* pXBitmapEntry = pItem->GetBitmapList()->GetBitmap(nPos);
569  const XFillBitmapItem aXFillBitmapItem(mpLbFillAttr->GetSelectedEntry(), pXBitmapEntry->GetGraphicObject());
570 
571  // #i122676# Change FillStyle and Bitmap in one call
572  XFillStyleItem aXFillStyleItem(drawing::FillStyle_BITMAP);
573  setFillStyleAndBitmap(bFillStyleChange ? &aXFillStyleItem : nullptr, aXFillBitmapItem);
574  }
575  }
576 
577  if(LISTBOX_ENTRY_NOTFOUND != nPos)
578  {
579  mnLastPosBitmap = nPos;
580  }
581  break;
582  }
583  case eFillStyle::PATTERN:
584  {
585  sal_Int32 nPos = mpLbFillAttr->GetSelectedEntryPos();
586 
587  if(LISTBOX_ENTRY_NOTFOUND == nPos)
588  {
589  nPos = mnLastPosPattern;
590  }
591 
592  if(LISTBOX_ENTRY_NOTFOUND != nPos && pSh && pSh->GetItem(SID_PATTERN_LIST))
593  {
594  const SvxPatternListItem * pItem = pSh->GetItem(SID_PATTERN_LIST);
595 
596  if(nPos < pItem->GetPatternList()->Count())
597  {
598  const XBitmapEntry* pXPatternEntry = pItem->GetPatternList()->GetBitmap(nPos);
599  const XFillBitmapItem aXFillBitmapItem(mpLbFillAttr->GetSelectedEntry(), pXPatternEntry->GetGraphicObject());
600 
601  // #i122676# Change FillStyle and Bitmap in one call
602  XFillStyleItem aXFillStyleItem(drawing::FillStyle_BITMAP);
603  setFillStyleAndBitmap(bFillStyleChange ? &aXFillStyleItem : nullptr, aXFillBitmapItem);
604  }
605  }
606 
607  if(LISTBOX_ENTRY_NOTFOUND != nPos)
608  {
609  mnLastPosPattern = nPos;
610  }
611  break;
612  }
613  }
614  if(mpPanel)
616 }
617 
619 {
621  {
622  bool bZeroValue(false);
623 
624  if (mpTransparanceItem)
625  {
626  const sal_uInt16 nValue(mpTransparanceItem->GetValue());
627 
628  if(!nValue)
629  {
630  bZeroValue = true;
631  }
632  else if(nValue <= 100)
633  {
635  mpTrspTextFT->Enable();
637  mpBTNGradient->Hide();
643  }
644 
645  if (!bZeroValue && mxTrGrPopup)
646  {
647  mxTrGrPopup->EndPopupMode();
648  }
649  }
650 
651  if(bZeroValue && mpFloatTransparenceItem.get())
652  {
653  if(mpFloatTransparenceItem->IsEnabled())
654  {
655  const XGradient& rGradient = mpFloatTransparenceItem->GetGradientValue();
656  sal_Int32 nEntryPos(0);
657  Image* pImage = nullptr;
658 
660  mpTrspTextFT->Enable();
664  mpBTNGradient->Show();
665 
666  switch(rGradient.GetGradientStyle())
667  {
668  default:
669  case css::awt::GradientStyle_LINEAR:
670  {
671  nEntryPos = 2;
672  pImage = &maImgLinear;
673  break;
674  }
675  case css::awt::GradientStyle_AXIAL:
676  {
677  nEntryPos = 3;
678  pImage = &maImgAxial;
679  break;
680  }
681  case css::awt::GradientStyle_RADIAL:
682  {
683  nEntryPos = 4;
684  pImage = &maImgRadial;
685  break;
686  }
687  case css::awt::GradientStyle_ELLIPTICAL:
688  {
689  nEntryPos = 5;
690  pImage = &maImgElli;
691  break;
692  }
693  case css::awt::GradientStyle_SQUARE:
694  {
695  nEntryPos = 6;
696  pImage = &maImgQuad;
697  break;
698  }
699  case css::awt::GradientStyle_RECT:
700  {
701  nEntryPos = 7;
702  pImage = &maImgSquare;
703  break;
704  }
705  }
706 
707  const sal_uInt16 nIdGradient = mpBTNGradient->GetItemId(UNO_SIDEBARGRADIENT);
708  mpLBTransType->SelectEntryPos(nEntryPos);
709  mpBTNGradient->SetItemImage(nIdGradient, *pImage);
710  bZeroValue = false;
711  }
712  else
713  {
714  bZeroValue = true;
715  }
716  }
717 
718  if(bZeroValue)
719  {
721  mpTrspTextFT->Enable();
723  mpBTNGradient->Hide();
728  SetTransparency(0);
729  }
730  }
731  else
732  {
733  // no transparency at all
742  mpBTNGradient->Hide();
743  }
744 }
745 
746 void AreaPropertyPanelBase::updateFillTransparence(bool bDisabled, bool bDefaultOrSet, const SfxPoolItem* pState)
747 {
748  if (bDisabled)
749  {
750  mpTransparanceItem.reset();
751  return;
752  }
753  else if (bDefaultOrSet)
754  {
755  if (pState)
756  {
757  const SfxUInt16Item* pItem = static_cast<const SfxUInt16Item*>(pState);
758  mpTransparanceItem.reset(static_cast<SfxUInt16Item*>(pItem->Clone()));
759  }
760  else
761  {
762  mpTransparanceItem.reset();
763  }
764  }
765  else
766  {
767  mpTransparanceItem.reset();
768  }
769 
770  // update transparency settings dependent of mpTransparanceItem and mpFloatTransparenceItem
772 }
773 
774 void AreaPropertyPanelBase::updateFillFloatTransparence(bool bDisabled, bool bDefaultOrSet, const SfxPoolItem* pState)
775 {
776  if (bDisabled)
777  {
778  mpFloatTransparenceItem.reset();
779  return;
780  }
781 
782  if (bDefaultOrSet)
783  {
784  if (pState)
785  {
786  const XFillFloatTransparenceItem* pItem = static_cast<const XFillFloatTransparenceItem*>(pState);
787  mpFloatTransparenceItem.reset(static_cast<XFillFloatTransparenceItem*>(pItem->Clone()));
788  }
789  else
790  {
791  mpFloatTransparenceItem.reset();
792  }
793  }
794  else
795  {
796  mpFloatTransparenceItem.reset();
797  }
798 
799  // update transparency settings dependent of mpTransparanceItem and mpFloatTransparenceItem
801 }
802 
803 void AreaPropertyPanelBase::updateFillStyle(bool bDisabled, bool bDefaultOrSet, const SfxPoolItem* pState)
804 {
805  if(bDisabled)
806  {
810  mpLbFillAttr->Show();
813  mpToolBoxColor->Hide();
814  meLastXFS = static_cast<sal_uInt16>(-1);
815  mpStyleItem.reset();
816  }
817  else if (bDefaultOrSet && pState)
818  {
819  const XFillStyleItem* pItem = static_cast<const XFillStyleItem*>(pState);
820  mpStyleItem.reset(dynamic_cast< XFillStyleItem* >(pItem->Clone()));
821  mpLbFillType->Enable();
823  drawing::FillStyle eXFS = mpStyleItem->GetValue();
824  eFillStyle nPos = NONE;
825  switch(eXFS)
826  {
827  default:
828  case drawing::FillStyle_NONE:
829  {
832  nPos = NONE;
833  break;
834  }
835  case drawing::FillStyle_SOLID:
836  nPos = SOLID;
837  break;
838  case drawing::FillStyle_GRADIENT:
839  nPos = GRADIENT;
840  break;
841  case drawing::FillStyle_HATCH:
842  nPos = HATCH;
843  break;
844  case drawing::FillStyle_BITMAP:
845  {
846  if(mpBitmapItem)
847  {
848  if(!mpBitmapItem->isPattern())
849  nPos = BITMAP;
850  else
851  nPos = PATTERN;
852  }
853  else
854  nPos = BITMAP;
855  break;
856  }
857  }
858  meLastXFS = static_cast< sal_uInt16 >(mpLbFillType->GetSelectedEntryPos());
859  mpLbFillType->SelectEntryPos(static_cast< sal_Int32 >(nPos));
860  Update();
861  return;
862  }
863 
865  mpLbFillAttr->Show();
868  mpToolBoxColor->Hide();
869  meLastXFS = static_cast<sal_uInt16>(-1);
870  mpStyleItem.reset();
871  if(mpPanel)
873 }
874 
875 void AreaPropertyPanelBase::updateFillGradient(bool bDisabled, bool bDefaultOrSet, const SfxPoolItem* pState)
876 {
877  if (bDefaultOrSet)
878  {
879  const XFillGradientItem* pItem = static_cast<const XFillGradientItem*>(pState);
880  mpFillGradientItem.reset(pItem ? static_cast<XFillGradientItem*>(pItem->Clone()) : nullptr);
881  }
882 
883  if(mpStyleItem && drawing::FillStyle_GRADIENT == mpStyleItem->GetValue())
884  {
885  mpLbFillAttr->Hide();
887  mpLbFillGradTo->Show();
888  mpMTRAngle->Show();
890  mpToolBoxColor->Hide();
891 
892  if (bDefaultOrSet)
893  {
895  Update();
896  }
897  else if(bDisabled)
898  {
903  mpMTRAngle->Disable();
905  }
906  else
907  {
910  }
911  }
912  if(mpPanel)
914 }
915 
916 void AreaPropertyPanelBase::updateFillHatch(bool bDisabled, bool bDefaultOrSet, const SfxPoolItem* pState)
917 {
918  if (bDefaultOrSet)
919  {
920  const XFillHatchItem* pItem = static_cast<const XFillHatchItem*>(pState);
921  mpHatchItem.reset(pItem ? static_cast<XFillHatchItem*>(pItem->Clone()) : nullptr);
922  }
923 
924  if(mpStyleItem && drawing::FillStyle_HATCH == mpStyleItem->GetValue())
925  {
926  mpLbFillAttr->Show();
927  mpToolBoxColor->Hide();
928 
929  if (bDefaultOrSet)
930  {
931  mpLbFillAttr->Enable();
933  Update();
934  }
935  else if(bDisabled)
936  {
939  }
940  else
941  {
943  }
944  }
945  if(mpPanel)
947 }
948 
949 void AreaPropertyPanelBase::updateFillColor(bool bDefaultOrSet, const SfxPoolItem* pState)
950 {
951  if (bDefaultOrSet)
952  {
953  const XFillColorItem* pItem = static_cast<const XFillColorItem*>(pState);
954  mpColorItem.reset(pItem ? static_cast<XFillColorItem*>(pItem->Clone()) : nullptr);
955  }
956 
957  if(mpStyleItem && drawing::FillStyle_SOLID == mpStyleItem->GetValue())
958  {
959  mpLbFillAttr->Hide();
960  mpToolBoxColor->Show();
962  Update();
963  }
964  if(mpPanel)
966 }
967 
968 void AreaPropertyPanelBase::updateFillBitmap(bool bDisabled, bool bDefaultOrSet, const SfxPoolItem* pState)
969 {
970  if (bDefaultOrSet)
971  {
972  const XFillBitmapItem* pItem = static_cast<const XFillBitmapItem*>(pState);
973  mpBitmapItem.reset(pItem ? static_cast<XFillBitmapItem*>(pItem->Clone()) : nullptr);
974  }
975 
976  if(mpStyleItem && drawing::FillStyle_BITMAP == mpStyleItem->GetValue())
977  {
978  mpLbFillAttr->Show();
979  mpToolBoxColor->Hide();
980 
981  if (bDefaultOrSet)
982  {
983  if(mpBitmapItem->isPattern())
984  mpLbFillType->SelectEntryPos(PATTERN);
985  else
987  Update();
988  }
989  else if(bDisabled)
990  {
991  mpLbFillAttr->Hide();
993  }
994  else
995  {
997  }
998  }
999  if(mpPanel)
1001 }
1002 
1004  sal_uInt16 nSID,
1005  SfxItemState eState,
1006  const SfxPoolItem* pState)
1007 {
1008  const bool bDisabled(SfxItemState::DISABLED == eState);
1009  const bool bDefaultOrSet(SfxItemState::DEFAULT <= eState);
1010  const bool bDefault(SfxItemState::DEFAULT == eState);
1011 
1012  switch(nSID)
1013  {
1014  case SID_ATTR_FILL_TRANSPARENCE:
1015  updateFillTransparence(bDisabled, bDefaultOrSet, pState);
1016  break;
1017  case SID_ATTR_FILL_FLOATTRANSPARENCE:
1018  updateFillFloatTransparence(bDisabled, bDefaultOrSet, pState);
1019  break;
1020  case SID_ATTR_FILL_STYLE:
1021  updateFillStyle(bDisabled, bDefaultOrSet, pState);
1022  break;
1023  case SID_ATTR_FILL_COLOR:
1024  updateFillColor(bDefaultOrSet, pState);
1025  break;
1026  case SID_ATTR_FILL_GRADIENT:
1027  updateFillGradient(bDisabled, bDefaultOrSet, pState);
1028  break;
1029  case SID_ATTR_FILL_HATCH:
1030  updateFillHatch(bDisabled, bDefaultOrSet, pState);
1031  break;
1032  case SID_ATTR_FILL_BITMAP:
1033  updateFillBitmap(bDisabled, bDefaultOrSet, pState);
1034  break;
1035  case SID_GRADIENT_LIST:
1036  {
1037  if(bDefault)
1038  {
1039  if(mpStyleItem && drawing::FillStyle_GRADIENT == mpStyleItem->GetValue())
1040  {
1041  if(mpFillGradientItem)
1042  {
1043  const OUString aString( mpFillGradientItem->GetName() );
1044  const SfxObjectShell* pSh = SfxObjectShell::Current();
1045 
1046  mpLbFillAttr->Clear();
1047  mpLbFillAttr->Enable();
1048  mpLbFillAttr->Fill(pSh->GetItem(SID_GRADIENT_LIST)->GetGradientList());
1049  mpLbFillAttr->SelectEntry(aString);
1050  }
1051  else
1052  {
1054  }
1055  }
1056  }
1057  break;
1058  }
1059  case SID_HATCH_LIST:
1060  {
1061  if(bDefault)
1062  {
1063  if(mpStyleItem && drawing::FillStyle_HATCH == mpStyleItem->GetValue())
1064  {
1065  if(mpHatchItem)
1066  {
1067  const OUString aString( mpHatchItem->GetName() );
1068  const SfxObjectShell* pSh = SfxObjectShell::Current();
1069 
1070  mpLbFillAttr->Clear();
1071  mpLbFillAttr->Enable();
1072  mpLbFillAttr->Fill(pSh->GetItem(SID_HATCH_LIST)->GetHatchList());
1073  mpLbFillAttr->SelectEntry(aString);
1074  }
1075  else
1076  {
1078  }
1079  }
1080  }
1081  break;
1082  }
1083  case SID_BITMAP_LIST:
1084  case SID_PATTERN_LIST:
1085  {
1086  if(bDefault)
1087  {
1088  if(mpStyleItem && drawing::FillStyle_BITMAP == mpStyleItem->GetValue())
1089  {
1090  if(mpBitmapItem)
1091  {
1092  const OUString aString( mpBitmapItem->GetName() );
1093  const SfxObjectShell* pSh = SfxObjectShell::Current();
1094  mpLbFillAttr->Clear();
1095  mpLbFillAttr->Show();
1096  if(nSID == SID_BITMAP_LIST)
1097  {
1098  mpLbFillAttr->Fill(pSh->GetItem(SID_BITMAP_LIST)->GetBitmapList());
1099  }
1100  else if(nSID == SID_PATTERN_LIST)
1101  {
1102  mpLbFillAttr->Fill(pSh->GetItem(SID_PATTERN_LIST)->GetPatternList());
1103  }
1104  mpLbFillAttr->SelectEntry(aString);
1105  }
1106  else
1107  {
1109  }
1110  }
1111  }
1112  break;
1113  }
1114  }
1115 }
1116 
1118 {
1119  const eFillStyle eXFS = static_cast<eFillStyle>(mpLbFillType->GetSelectedEntryPos());
1121 
1122  switch( eXFS )
1123  {
1124  case eFillStyle::NONE:
1125  {
1126  mpLbFillAttr->Show();
1128  mpLbFillGradTo->Hide();
1129  mpMTRAngle->Hide();
1130  mpGradientStyle->Hide();
1131  mpToolBoxColor->Hide();
1132  mpBmpImport->Hide();
1133  break;
1134  }
1135  case eFillStyle::SOLID:
1136  {
1137  if(mpColorItem)
1138  {
1139  mpLbFillAttr->Hide();
1141  mpLbFillGradTo->Hide();
1142  mpMTRAngle->Hide();
1143  mpGradientStyle->Hide();
1144  mpToolBoxColor->Show();
1145  mpBmpImport->Hide();
1146  }
1147  break;
1148  }
1149  case eFillStyle::GRADIENT:
1150  {
1151  mpLbFillAttr->Hide();
1153  mpLbFillGradTo->Show();
1154  mpMTRAngle->Enable();
1155  mpMTRAngle->Show();
1156  mpGradientStyle->Show();
1157  mpToolBoxColor->Hide();
1158  mpBmpImport->Hide();
1159 
1160  if(pSh && pSh->GetItem(SID_GRADIENT_LIST))
1161  {
1162  mpLbFillAttr->Enable();
1163  mpLbFillAttr->Clear();
1164  mpLbFillAttr->Fill(pSh->GetItem(SID_GRADIENT_LIST)->GetGradientList());
1167  if (mpFillGradientItem)
1168  {
1169  const OUString aString(mpFillGradientItem->GetName());
1170  mpLbFillAttr->SelectEntry(aString);
1171  const XGradient aGradient = mpFillGradientItem->GetGradientValue();
1173  mpLbFillGradTo->SelectEntry(aGradient.GetEndColor());
1174  mpGradientStyle->SelectEntryPos(sal::static_int_cast< sal_Int32 >( aGradient.GetGradientStyle() ));
1175  if(mpGradientStyle->GetSelectedEntryPos() == sal_Int32(GradientStyle::Radial))
1176  mpMTRAngle->Disable();
1177  else
1178  mpMTRAngle->SetValue( aGradient.GetAngle() /10 );
1179  }
1180  else
1181  {
1183  }
1184  }
1185  else
1186  {
1188  }
1189  break;
1190  }
1191  case eFillStyle::HATCH:
1192  {
1193  mpLbFillAttr->Show();
1195  mpLbFillGradTo->Hide();
1196  mpMTRAngle->Hide();
1197  mpGradientStyle->Hide();
1198  mpToolBoxColor->Hide();
1199  mpBmpImport->Hide();
1200  mpBmpImport->Hide();
1201 
1202  if(pSh && pSh->GetItem(SID_HATCH_LIST))
1203  {
1204  mpLbFillAttr->Enable();
1205  mpLbFillAttr->Clear();
1206  mpLbFillAttr->Fill(pSh->GetItem(SID_HATCH_LIST)->GetHatchList());
1207 
1208  if(mpHatchItem)
1209  {
1210  const OUString aString(mpHatchItem->GetName());
1211 
1212  mpLbFillAttr->SelectEntry( aString );
1213  }
1214  else
1215  {
1217  }
1218  }
1219  else
1220  {
1222  }
1223  break;
1224  }
1225  case eFillStyle::BITMAP:
1226  case eFillStyle::PATTERN:
1227  {
1228  mpLbFillAttr->Show();
1229  mpLbFillAttr->Enable();
1230  mpLbFillAttr->Clear();
1231  mpToolBoxColor->Hide();
1233  mpLbFillGradTo->Hide();
1234  mpMTRAngle->Hide();
1235  mpGradientStyle->Hide();
1236 
1237  if(mpBitmapItem)
1238  {
1239  if(pSh && pSh->GetItem(SID_BITMAP_LIST) && eXFS == BITMAP)
1240  {
1241  mpBmpImport->Show();
1242  mpLbFillType->SelectEntryPos(sal_uInt32(BITMAP));
1243  mpLbFillAttr->Fill(pSh->GetItem(SID_BITMAP_LIST)->GetBitmapList());
1244 
1245  const OUString aString(mpBitmapItem->GetName());
1246  mpLbFillAttr->SelectEntry(aString);
1247  }
1248  else if(pSh && pSh->GetItem(SID_PATTERN_LIST) && eXFS == PATTERN)
1249  {
1250  mpBmpImport->Hide();
1251  mpLbFillType->SelectEntryPos(sal_uInt32(PATTERN));
1252  mpLbFillAttr->Fill(pSh->GetItem(SID_PATTERN_LIST)->GetPatternList());
1253 
1254  const OUString aString(mpBitmapItem->GetName());
1255  mpLbFillAttr->SelectEntry(aString);
1256  }
1257  }
1258  else
1260  break;
1261  }
1262  default:
1263  OSL_ENSURE(false, "Non supported FillType (!)");
1264  break;
1265  }
1266  if(mpPanel)
1268 }
1269 
1270 IMPL_LINK_NOARG(AreaPropertyPanelBase, ModifyTransSliderHdl, Slider*, void)
1271 {
1272  const sal_uInt16 nVal = mpSldTransparent->GetThumbPos();
1273  SetTransparency(nVal);
1274  const XFillTransparenceItem aLinearItem(nVal);
1275  setFillTransparence(aLinearItem);
1276 }
1277 
1278 IMPL_LINK( AreaPropertyPanelBase, ClickTrGrHdl_Impl, ToolBox*, pToolBox, void )
1279 {
1280  if (!mxTrGrPopup)
1281  mxTrGrPopup = VclPtr<AreaTransparencyGradientPopup>::Create(*this);
1282  if (mpFloatTransparenceItem)
1283  mxTrGrPopup->Rearrange(mpFloatTransparenceItem.get());
1284  OSL_ASSERT( pToolBox->GetItemCommand(pToolBox->GetCurItemId()) == UNO_SIDEBARGRADIENT);
1285  mxTrGrPopup->StartPopupMode(pToolBox, FloatWinPopupFlags::GrabFocus);
1286 }
1287 
1288 IMPL_LINK_NOARG(AreaPropertyPanelBase, ChangeTrgrTypeHdl_Impl, ListBox&, void)
1289 {
1290  sal_Int32 nSelectType = mpLBTransType->GetSelectedEntryPos();
1291  bool bGradient = false;
1292  sal_uInt16 nTrans = 0;
1293 
1294  if(!nSelectType)
1295  {
1296  mpBTNGradient->Hide();
1297  mpMTRTransparent->Show();
1298  mpSldTransparent->Show();
1299  mpMTRTransparent->Enable();
1300  mpSldTransparent->Enable();
1301  SetTransparency(0);
1302  }
1303  else if(1 == nSelectType)
1304  {
1305  mpBTNGradient->Hide();
1306  mpMTRTransparent->Show();
1307  mpSldTransparent->Show();
1308  nTrans = mnLastTransSolid;
1309  mpMTRTransparent->SetValue(nTrans);
1310  mpLBTransType->SelectEntryPos(1);
1311  mpMTRTransparent->Enable();
1312  mpSldTransparent->Enable();
1313  }
1314  else
1315  {
1316  mpBTNGradient->Show();
1317 
1318  const sal_uInt16 nIdGradient = mpBTNGradient->GetItemId(UNO_SIDEBARGRADIENT);
1319  switch (nSelectType)
1320  {
1321  case 2:
1322  mpBTNGradient->SetItemImage(nIdGradient, maImgLinear);
1323  break;
1324  case 3:
1325  mpBTNGradient->SetItemImage(nIdGradient, maImgAxial);
1326  break;
1327  case 4:
1328  mpBTNGradient->SetItemImage(nIdGradient, maImgRadial);
1329  break;
1330  case 5:
1331  mpBTNGradient->SetItemImage(nIdGradient, maImgElli );
1332  break;
1333  case 6:
1334  mpBTNGradient->SetItemImage(nIdGradient, maImgQuad );
1335  break;
1336  case 7:
1337  mpBTNGradient->SetItemImage(nIdGradient, maImgSquare);
1338  break;
1339  }
1340 
1341  mpMTRTransparent->Hide();
1342  mpSldTransparent->Hide();
1343  mpBTNGradient->Enable();
1344  bGradient = true;
1345  }
1346 
1347  const XFillTransparenceItem aLinearItem(nTrans);
1348  setFillTransparence(aLinearItem);
1349 
1350  if(nSelectType > 1)
1351  {
1352  nSelectType -= 2;
1353  }
1354 
1355  XGradient aTmpGradient;
1356 
1357  switch(static_cast<css::awt::GradientStyle>(nSelectType))
1358  {
1359  case css::awt::GradientStyle_LINEAR:
1360  aTmpGradient = maGradientLinear;
1361  break;
1362  case css::awt::GradientStyle_AXIAL:
1363  aTmpGradient = maGradientAxial;
1364  break;
1365  case css::awt::GradientStyle_RADIAL:
1366  aTmpGradient = maGradientRadial;
1367  break;
1368  case css::awt::GradientStyle_ELLIPTICAL:
1369  aTmpGradient = maGradientElliptical;
1370  break;
1371  case css::awt::GradientStyle_SQUARE:
1372  aTmpGradient = maGradientSquare;
1373  break;
1374  case css::awt::GradientStyle_RECT:
1375  aTmpGradient = maGradientRect;
1376  break;
1377  default:
1378  break;
1379  }
1380 
1381  const XFillFloatTransparenceItem aGradientItem(aTmpGradient, bGradient);
1382  setFillFloatTransparence(aGradientItem);
1383 }
1384 
1385 IMPL_LINK_NOARG(AreaPropertyPanelBase, ModifyTransparentHdl_Impl, Edit&, void)
1386 {
1387  const sal_uInt16 nTrans = static_cast<sal_uInt16>(mpMTRTransparent->GetValue());
1388  mnLastTransSolid = nTrans;
1389  SetTransparency(nTrans);
1390  const sal_Int32 nSelectType = mpLBTransType->GetSelectedEntryPos();
1391 
1392  if(nTrans && !nSelectType)
1393  {
1394  mpLBTransType->SelectEntryPos(1);
1395  }
1396 
1397  const XFillTransparenceItem aLinearItem(nTrans);
1398  setFillTransparence(aLinearItem);
1399 }
1400 
1401 const XGradient& AreaPropertyPanelBase::GetGradient (const css::awt::GradientStyle eStyle) const
1402 {
1403  switch (eStyle)
1404  {
1405  default:
1406  case css::awt::GradientStyle_LINEAR:
1407  return maGradientLinear;
1408  case css::awt::GradientStyle_AXIAL:
1409  return maGradientAxial;
1410  case css::awt::GradientStyle_RADIAL:
1411  return maGradientRadial;
1412  case css::awt::GradientStyle_ELLIPTICAL:
1413  return maGradientElliptical;
1414  case css::awt::GradientStyle_SQUARE:
1415  return maGradientSquare;
1416  case css::awt::GradientStyle_RECT:
1417  return maGradientRect;
1418  }
1419 }
1420 
1422 {
1423  switch (rGradient.GetGradientStyle())
1424  {
1425  case css::awt::GradientStyle_LINEAR:
1426  maGradientLinear = rGradient;
1427  break;
1428  case css::awt::GradientStyle_AXIAL:
1429  maGradientAxial = rGradient;
1430  break;
1431  case css::awt::GradientStyle_RADIAL:
1432  maGradientRadial = rGradient;
1433  break;
1434  case css::awt::GradientStyle_ELLIPTICAL:
1435  maGradientElliptical = rGradient;
1436  break;
1437  case css::awt::GradientStyle_SQUARE:
1438  maGradientSquare = rGradient;
1439  break;
1440  case css::awt::GradientStyle_RECT:
1441  maGradientRect = rGradient;
1442  break;
1443  default:
1444  break;
1445  }
1446 }
1447 
1449 {
1451 }
1452 
1453 } } // end of namespace svx::sidebar
1454 
1455 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
virtual SfxPoolItem * Clone(SfxItemPool *pPool=nullptr) const override
Definition: xattr.cxx:1751
SOLID
void SetSlideHdl(const Link< Slider *, void > &rLink)
VclPtr< Panel > mpPanel
URL aURL
OUString GetSelectedEntry(sal_Int32 nSelIndex=0) const
ErrCode GetGraphic(Graphic &) const
const XPatternListRef & GetPatternList() const
Definition: drawitem.hxx:146
const char UNO_SIDEBARGRADIENT[]
void SetSelectHdl(const Link< SvxColorListBox &, void > &rLink)
Definition: colorbox.hxx:54
This class is the base for the Widget Layout-based sidebar panels.
Definition: PanelLayout.hxx:24
sal_Int32 GetSelectedEntryPos(sal_Int32 nSelIndex=0) const
virtual void DataChanged(const DataChangedEvent &rEvent) override
void SetClickHdl(const Link< Button *, void > &rLink)
Color const & GetSelectEntryColor() const
Definition: colorbox.hxx:61
virtual void setFillStyleAndBitmap(const XFillStyleItem *pStyleItem, const XFillBitmapItem &aHatchItem)=0
void SetBorder(sal_uInt16 nNewBorder)
Definition: xgrad.hxx:59
void SetNoSelection()
Definition: colorbox.hxx:66
ToolBoxItemBits GetItemBits(sal_uInt16 nItemId) const
virtual SfxPoolItem * Clone(SfxItemPool *pPool=nullptr) const override
Definition: xattr.cxx:2070
virtual void setFillStyle(const XFillStyleItem &rItem)=0
void updateFillGradient(bool bDisabled, bool bDefaultOrSet, const SfxPoolItem *pState)
void updateFillFloatTransparence(bool bDisabled, bool bDefaultOrSet, const SfxPoolItem *pState)
void SetEndColor(const Color &rColor)
Definition: xgrad.hxx:57
const XGradientListRef & GetGradientList() const
Definition: drawitem.hxx:73
std::unique_ptr< XFillBitmapItem > mpBitmapItem
VclPtr< sfx2::sidebar::Panel > mpPanel
std::unique_ptr< SfxUInt16Item > mpTransparanceItem
static SfxObjectShell * Current()
void Clear()
IMPL_LINK(AreaPropertyPanelBase, ClickTrGrHdl_Impl, ToolBox *, pToolBox, void)
OUString GetPath() const
void updateFillTransparence(bool bDisabled, bool bDefaultOrSet, const SfxPoolItem *pState)
#define LISTBOX_ENTRY_NOTFOUND
NONE
const Color & GetStartColor() const
Definition: xgrad.hxx:67
void SelectEntry(const OUString &rStr, bool bSelect=true)
constexpr::Color COL_AUTO(0xFF, 0xFF, 0xFF, 0xFF)
void SetThumbPos(long nThumbPos)
virtual void SetModifyHdl(const Link< Edit &, void > &rLink)
void SetDropdownClickHdl(const Link< ToolBox *, void > &rLink)
void Enable(bool bEnable=true, bool bChild=true)
void Fill(const XHatchListRef &pList)
Definition: itemwin.cxx:572
sal_Int16 const nValue
Definition: fmsrccfg.cxx:82
const XGradient & GetGradient(const css::awt::GradientStyle eStyle) const
void updateFillBitmap(bool BDisabled, bool bDefaultOrSet, const SfxPoolItem *pState)
void SetAngle(long nNewAngle)
Definition: xgrad.hxx:58
GRADIENT
const GraphicObject & GetGraphicObject() const
Definition: xtable.hxx:125
const OUString & GetName() const
std::unique_ptr< XFillStyleItem > mpStyleItem
const XHatchListRef & GetHatchList() const
Definition: drawitem.hxx:97
const SfxPoolItem * GetItem(sal_uInt16 nSlotId) const
std::unique_ptr< XFillColorItem > mpColorItem
void SetStartColor(const Color &rColor)
Definition: xgrad.hxx:56
void SetYOffset(sal_uInt16 nNewOffset)
Definition: xgrad.hxx:61
void SelectEntryPos(sal_Int32 nPos, bool bSelect=true)
Count
void SetGradientStyle(css::awt::GradientStyle eNewStyle)
Definition: xgrad.hxx:55
int i
void SetItemBits(sal_uInt16 nItemId, ToolBoxItemBits nBits)
long GetAngle() const
Definition: xgrad.hxx:69
virtual SfxPoolItem * Clone(SfxItemPool *pPool=nullptr) const override
Definition: xattr.cxx:1885
void updateFillHatch(bool bDisabled, bool bDefaultOrSet, const SfxPoolItem *pState)
void SetNoSelection()
virtual SfxPoolItem * Clone(SfxItemPool *=nullptr) const override
void SetSelectHdl(const Link< ListBox &, void > &rLink)
void SetSelectHdl(const Link< ToolBox *, void > &rLink)
const XBitmapListRef & GetBitmapList() const
Definition: drawitem.hxx:122
IMPL_LINK_NOARG(GalleryControl, SplitHdl, Splitter *, void)
std::unique_ptr< XFillHatchItem > mpHatchItem
void Disable(bool bChild=true)
void SelectEntry(const NamedColor &rColor)
Definition: tbcontrl.cxx:4093
VclPtr< AreaTransparencyGradientPopup > mxTrGrPopup
css::awt::GradientStyle GetGradientStyle() const
Definition: xgrad.hxx:66
virtual void dispose() override
Definition: PanelLayout.cxx:45
StockImage
SfxItemState
VclPtr< sfx2::sidebar::SidebarToolBox > mpToolBoxColor
#define ERRCODE_NONE
virtual void NotifyItemUpdate(const sal_uInt16 nSId, const SfxItemState eState, const SfxPoolItem *pState) override
void SetXOffset(sal_uInt16 nNewOffset)
Definition: xgrad.hxx:60
void SetItemImage(sal_uInt16 nItemId, const Image &rImage)
OUString aName
static VclPtr< reference_type > Create(Arg &&...arg)
void updateFillColor(bool bDefaultOrSet, const SfxPoolItem *pState)
virtual SfxPoolItem * Clone(SfxItemPool *pPool=nullptr) const override
Definition: xattrbmp.cxx:153
virtual void SetValue(sal_Int64 nNewValue, FieldUnit eInUnit)
std::unique_ptr< XFillFloatTransparenceItem > mpFloatTransparenceItem
sal_uInt16 GetItemId(ImplToolItems::size_type nPos) const
virtual void setFillStyleAndGradient(const XFillStyleItem *pStyleItem, const XFillGradientItem &aGradientItem)=0
std::unique_ptr< XFillGradientItem > mpFillGradientItem
sal_Int64 GetValue(FieldUnit eOutUnit) const
virtual SfxPoolItem * Clone(SfxItemPool *pPool=nullptr) const override
Definition: xattr.cxx:2499
void SetGradient(const XGradient &rGradient)
weld::Window * GetFrameWeld(const SfxFrame *pFrame)
const Color & GetEndColor() const
Definition: xgrad.hxx:68
sal_uInt16 nPos
virtual SfxPoolItem * Clone(SfxItemPool *pPool=nullptr) const override
Definition: xattr.cxx:2390
void updateFillStyle(bool bDisabled, bool bDefaultOrSet, const SfxPoolItem *pState)
virtual void setFillStyleAndHatch(const XFillStyleItem *pStyleItem, const XFillHatchItem &aHatchItem)=0
void Show(bool bVisible=true, ShowFlags nFlags=ShowFlags::NONE)