Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 : #include "svx/sidebar/PopupContainer.hxx"
20 : #include "AreaTransparencyGradientControl.hxx"
21 :
22 : #include <sfx2/sidebar/ResourceDefinitions.hrc>
23 : #include <sfx2/sidebar/Theme.hxx>
24 : #include <sfx2/sidebar/ControlFactory.hxx>
25 : #include <AreaPropertyPanel.hxx>
26 : #include <AreaPropertyPanel.hrc>
27 : #include <svx/dialogs.hrc>
28 : #include <svx/dialmgr.hxx>
29 : #include <sfx2/objsh.hxx>
30 : #include <svx/xfltrit.hxx>
31 : #include <svx/xflftrit.hxx>
32 : #include <svx/xtable.hxx>
33 : #include <sfx2/dispatch.hxx>
34 : #include <sfx2/bindings.hxx>
35 : #include <helpid.hrc>
36 : #include <svtools/valueset.hxx>
37 : #include <unotools/pathoptions.hxx>
38 : #include <svx/svxitems.hrc>
39 : #include <vcl/toolbox.hxx>
40 : #include <svtools/toolbarmenu.hxx>
41 :
42 : #include <boost/bind.hpp>
43 :
44 : using namespace css;
45 : using namespace css::uno;
46 : using ::sfx2::sidebar::Theme;
47 :
48 : const char UNO_SIDEBARGRADIENT[] = ".uno:sidebargradient";
49 :
50 : namespace svx { namespace sidebar {
51 :
52 : const sal_Int32 AreaPropertyPanel::DEFAULT_CENTERX = 50;
53 : const sal_Int32 AreaPropertyPanel::DEFAULT_CENTERY = 50;
54 : const sal_Int32 AreaPropertyPanel::DEFAULT_ANGLE = 0;
55 : const sal_Int32 AreaPropertyPanel::DEFAULT_STARTVALUE = 0;
56 : const sal_Int32 AreaPropertyPanel::DEFAULT_ENDVALUE = 16777215;
57 : const sal_Int32 AreaPropertyPanel::DEFAULT_BORDER = 0;
58 :
59 :
60 0 : AreaPropertyPanel::AreaPropertyPanel(
61 : vcl::Window* pParent,
62 : const css::uno::Reference<css::frame::XFrame>& rxFrame,
63 : SfxBindings* pBindings)
64 : : PanelLayout(pParent, "AreaPropertyPanel", "svx/ui/sidebararea.ui", rxFrame),
65 : meLastXFS(static_cast<sal_uInt16>(-1)),
66 : mnLastPosGradient(0),
67 : mnLastPosHatch(0),
68 : mnLastPosBitmap(0),
69 : mnLastTransSolid(50),
70 : maGradientLinear(),
71 : maGradientAxial(),
72 : maGradientRadial(),
73 : maGradientElliptical(),
74 : maGradientSquare(),
75 : maGradientRect(),
76 : mpStyleItem(),
77 : mpColorItem(),
78 : mpFillGradientItem(),
79 : mpHatchItem(),
80 : mpBitmapItem(),
81 : maStyleControl(SID_ATTR_FILL_STYLE, *pBindings, *this),
82 : maColorControl(SID_ATTR_FILL_COLOR, *pBindings, *this),
83 : maGradientControl(SID_ATTR_FILL_GRADIENT, *pBindings, *this),
84 : maHatchControl(SID_ATTR_FILL_HATCH, *pBindings, *this),
85 : maBitmapControl(SID_ATTR_FILL_BITMAP, *pBindings, *this),
86 : maGradientListControl(SID_GRADIENT_LIST, *pBindings, *this),
87 : maHatchListControl(SID_HATCH_LIST, *pBindings, *this),
88 : maBitmapListControl(SID_BITMAP_LIST, *pBindings, *this),
89 : maFillTransparenceController(SID_ATTR_FILL_TRANSPARENCE, *pBindings, *this),
90 : maFillFloatTransparenceController(SID_ATTR_FILL_FLOATTRANSPARENCE, *pBindings, *this),
91 0 : maImgAxial(SVX_RES(IMG_AXIAL)),
92 0 : maImgElli(SVX_RES(IMG_ELLI)),
93 0 : maImgQuad(SVX_RES(IMG_QUAD)),
94 0 : maImgRadial(SVX_RES(IMG_RADIAL)),
95 0 : maImgSquare(SVX_RES(IMG_SQUARE)),
96 0 : maImgLinear(SVX_RES(IMG_LINEAR)),
97 : maTrGrPopup(this, ::boost::bind(&AreaPropertyPanel::CreateTransparencyGradientControl, this, _1)),
98 : mpFloatTransparenceItem(),
99 : mpTransparanceItem(),
100 : mxFrame(rxFrame),
101 0 : mpBindings(pBindings)
102 : {
103 0 : get(mpColorTextFT, "filllabel");
104 0 : get(mpLbFillType, "fillstyle");
105 0 : get(mpLbFillAttr, "fillattr");
106 0 : get(mpTrspTextFT, "transparencylabel");
107 0 : get(mpToolBoxColor, "selectcolor");
108 0 : get(mpLBTransType, "transtype");
109 0 : get(mpMTRTransparent, "settransparency");
110 0 : get(mpBTNGradient, "selectgradient");
111 :
112 0 : Initialize();
113 0 : }
114 :
115 :
116 :
117 0 : AreaPropertyPanel::~AreaPropertyPanel()
118 : {
119 0 : }
120 :
121 :
122 :
123 0 : void AreaPropertyPanel::Initialize()
124 : {
125 0 : maGradientLinear.SetXOffset(DEFAULT_CENTERX);
126 0 : maGradientLinear.SetYOffset(DEFAULT_CENTERY);
127 0 : maGradientLinear.SetAngle(DEFAULT_ANGLE);
128 0 : maGradientLinear.SetStartColor(Color(DEFAULT_STARTVALUE));
129 0 : maGradientLinear.SetEndColor(Color(DEFAULT_ENDVALUE));
130 0 : maGradientLinear.SetBorder(DEFAULT_BORDER);
131 0 : maGradientLinear.SetGradientStyle(XGRAD_LINEAR);
132 :
133 0 : maGradientAxial = maGradientLinear;
134 0 : maGradientAxial.SetGradientStyle(XGRAD_AXIAL);
135 :
136 0 : maGradientRadial = maGradientLinear;
137 0 : maGradientRadial.SetGradientStyle(XGRAD_RADIAL);
138 :
139 0 : maGradientElliptical = maGradientLinear;
140 0 : maGradientElliptical.SetGradientStyle(XGRAD_ELLIPTICAL);
141 :
142 0 : maGradientSquare = maGradientLinear;
143 0 : maGradientSquare.SetGradientStyle(XGRAD_SQUARE);
144 :
145 0 : maGradientRect = maGradientLinear;
146 0 : maGradientRect.SetGradientStyle(XGRAD_RECT);
147 :
148 0 : mpLbFillType->SetAccessibleName(OUString( "Fill")); //wj acc
149 0 : mpLbFillAttr->SetAccessibleName(OUString( "Fill")); //wj acc
150 :
151 0 : Link aLink = LINK( this, AreaPropertyPanel, SelectFillTypeHdl );
152 0 : mpLbFillType->SetSelectHdl( aLink );
153 :
154 0 : aLink = LINK( this, AreaPropertyPanel, SelectFillAttrHdl );
155 0 : mpLbFillAttr->SetSelectHdl( aLink );
156 :
157 0 : mpLBTransType->SetSelectHdl(LINK(this, AreaPropertyPanel, ChangeTrgrTypeHdl_Impl));
158 0 : mpLBTransType->SetAccessibleName(OUString( "Transparency")); //wj acc
159 :
160 0 : mpMTRTransparent->SetValue( 50 );
161 0 : mpMTRTransparent->SetModifyHdl(LINK(this, AreaPropertyPanel, ModifyTransparentHdl_Impl));
162 0 : mpMTRTransparent->SetAccessibleName(OUString( "Transparency")); //wj acc
163 :
164 0 : const sal_uInt16 nIdGradient = mpBTNGradient->GetItemId(UNO_SIDEBARGRADIENT);
165 0 : mpBTNGradient->SetItemBits( nIdGradient, mpBTNGradient->GetItemBits( nIdGradient ) | ToolBoxItemBits::DROPDOWNONLY );
166 0 : aLink = LINK( this, AreaPropertyPanel, ClickTrGrHdl_Impl );
167 0 : mpBTNGradient->SetDropdownClickHdl( aLink );
168 0 : mpBTNGradient->SetSelectHdl( aLink );
169 0 : mpBTNGradient->SetItemImage(nIdGradient,maImgLinear);
170 0 : mpBTNGradient->Hide();
171 :
172 0 : mpLbFillType->SetAccessibleRelationLabeledBy(mpColorTextFT);
173 0 : mpLbFillAttr->SetAccessibleRelationLabeledBy(mpLbFillAttr);
174 0 : mpToolBoxColor->SetAccessibleRelationLabeledBy(mpToolBoxColor);
175 0 : mpLBTransType->SetAccessibleRelationLabeledBy(mpTrspTextFT);
176 0 : mpMTRTransparent->SetAccessibleRelationLabeledBy(mpMTRTransparent);
177 0 : mpBTNGradient->SetAccessibleRelationLabeledBy(mpBTNGradient);
178 :
179 0 : SetupIcons();
180 0 : }
181 :
182 :
183 :
184 0 : IMPL_LINK( AreaPropertyPanel, SelectFillTypeHdl, ListBox *, pToolBox )
185 : {
186 0 : const drawing::FillStyle eXFS = (drawing::FillStyle)mpLbFillType->GetSelectEntryPos();
187 :
188 0 : if((drawing::FillStyle)meLastXFS != eXFS)
189 : {
190 0 : mpLbFillAttr->Clear();
191 0 : SfxObjectShell* pSh = SfxObjectShell::Current();
192 0 : const XFillStyleItem aXFillStyleItem(eXFS);
193 :
194 : // #i122676# Do no longer trigger two Execute calls, one for SID_ATTR_FILL_STYLE
195 : // and one for setting the fill attribute itself, but add two SfxPoolItems to the
196 : // call to get just one action at the SdrObject and to create only one Undo action, too.
197 : // Checked that this works in all apps.
198 0 : switch( eXFS )
199 : {
200 : default:
201 : case drawing::FillStyle_NONE:
202 : {
203 0 : mpLbFillAttr->Show();
204 0 : mpToolBoxColor->Hide();
205 0 : mpLbFillType->Selected();
206 0 : mpLbFillAttr->Disable();
207 :
208 : // #i122676# need to call a single SID_ATTR_FILL_STYLE change
209 : GetBindings()->GetDispatcher()->Execute(
210 0 : SID_ATTR_FILL_STYLE, SfxCallMode::RECORD, &aXFillStyleItem, 0L);
211 0 : break;
212 : }
213 : case drawing::FillStyle_SOLID:
214 : {
215 0 : mpLbFillAttr->Hide();
216 0 : mpToolBoxColor->Show();
217 0 : const OUString aTmpStr;
218 0 : const Color aColor = mpColorItem->GetColorValue();
219 0 : const XFillColorItem aXFillColorItem( aTmpStr, aColor );
220 :
221 : // #i122676# change FillStyle and Color in one call
222 : GetBindings()->GetDispatcher()->Execute(
223 0 : SID_ATTR_FILL_COLOR, SfxCallMode::RECORD, &aXFillColorItem, &aXFillStyleItem, 0L);
224 0 : break;
225 : }
226 : case drawing::FillStyle_GRADIENT:
227 : {
228 0 : mpLbFillAttr->Show();
229 0 : mpToolBoxColor->Hide();
230 :
231 0 : if(pSh && pSh->GetItem(SID_GRADIENT_LIST))
232 : {
233 0 : if(!mpLbFillAttr->GetEntryCount())
234 : {
235 0 : const SvxGradientListItem aItem(*static_cast<const SvxGradientListItem*>(pSh->GetItem(SID_GRADIENT_LIST)));
236 0 : mpLbFillAttr->Enable();
237 0 : mpLbFillAttr->Clear();
238 0 : mpLbFillAttr->Fill(aItem.GetGradientList());
239 : }
240 :
241 0 : mpLbFillAttr->AdaptDropDownLineCountToMaximum();
242 :
243 0 : if(LISTBOX_ENTRY_NOTFOUND != mnLastPosGradient)
244 : {
245 0 : const SvxGradientListItem aItem(*static_cast<const SvxGradientListItem*>(pSh->GetItem(SID_GRADIENT_LIST)));
246 :
247 0 : if(mnLastPosGradient < aItem.GetGradientList()->Count())
248 : {
249 0 : const XGradient aGradient = aItem.GetGradientList()->GetGradient(mnLastPosGradient)->GetGradient();
250 0 : const XFillGradientItem aXFillGradientItem(mpLbFillAttr->GetEntry(mnLastPosGradient), aGradient);
251 :
252 : // #i122676# change FillStyle and Gradient in one call
253 : GetBindings()->GetDispatcher()->Execute(
254 0 : SID_ATTR_FILL_GRADIENT, SfxCallMode::RECORD, &aXFillGradientItem, &aXFillStyleItem, 0L);
255 0 : mpLbFillAttr->SelectEntryPos(mnLastPosGradient);
256 0 : }
257 : }
258 : }
259 : else
260 : {
261 0 : mpLbFillAttr->Disable();
262 : }
263 0 : break;
264 : }
265 : case drawing::FillStyle_HATCH:
266 : {
267 0 : mpLbFillAttr->Show();
268 0 : mpToolBoxColor->Hide();
269 :
270 0 : if(pSh && pSh->GetItem(SID_HATCH_LIST))
271 : {
272 0 : if(!mpLbFillAttr->GetEntryCount())
273 : {
274 0 : const SvxHatchListItem aItem( *static_cast<const SvxHatchListItem*>(pSh->GetItem(SID_HATCH_LIST)));
275 0 : mpLbFillAttr->Enable();
276 0 : mpLbFillAttr->Clear();
277 0 : mpLbFillAttr->Fill(aItem.GetHatchList());
278 : }
279 :
280 0 : mpLbFillAttr->AdaptDropDownLineCountToMaximum();
281 :
282 0 : if(LISTBOX_ENTRY_NOTFOUND != mnLastPosHatch)
283 : {
284 0 : const SvxHatchListItem aItem(*static_cast<const SvxHatchListItem*>(pSh->GetItem(SID_HATCH_LIST)));
285 :
286 0 : if(mnLastPosHatch < aItem.GetHatchList()->Count())
287 : {
288 0 : const XHatch aHatch = aItem.GetHatchList()->GetHatch(mnLastPosHatch)->GetHatch();
289 0 : const XFillHatchItem aXFillHatchItem(mpLbFillAttr->GetSelectEntry(), aHatch);
290 :
291 : // #i122676# change FillStyle and Hatch in one call
292 : GetBindings()->GetDispatcher()->Execute(
293 0 : SID_ATTR_FILL_HATCH, SfxCallMode::RECORD, &aXFillHatchItem, &aXFillStyleItem, 0L);
294 0 : mpLbFillAttr->SelectEntryPos(mnLastPosHatch);
295 0 : }
296 : }
297 : }
298 : else
299 : {
300 0 : mpLbFillAttr->Disable();
301 : }
302 0 : break;
303 : }
304 : case drawing::FillStyle_BITMAP:
305 : {
306 0 : mpLbFillAttr->Show();
307 0 : mpToolBoxColor->Hide();
308 :
309 0 : if(pSh && pSh->GetItem(SID_BITMAP_LIST))
310 : {
311 0 : if(!mpLbFillAttr->GetEntryCount())
312 : {
313 0 : const SvxBitmapListItem aItem( *static_cast<const SvxBitmapListItem*>(pSh->GetItem(SID_BITMAP_LIST)));
314 0 : mpLbFillAttr->Enable();
315 0 : mpLbFillAttr->Clear();
316 0 : mpLbFillAttr->Fill(aItem.GetBitmapList());
317 : }
318 :
319 0 : mpLbFillAttr->AdaptDropDownLineCountToMaximum();
320 :
321 0 : if(LISTBOX_ENTRY_NOTFOUND != mnLastPosBitmap)
322 : {
323 0 : const SvxBitmapListItem aItem(*static_cast<const SvxBitmapListItem*>(pSh->GetItem(SID_BITMAP_LIST)));
324 :
325 0 : if(mnLastPosBitmap < aItem.GetBitmapList()->Count())
326 : {
327 0 : const XBitmapEntry* pXBitmapEntry = aItem.GetBitmapList()->GetBitmap(mnLastPosBitmap);
328 0 : const XFillBitmapItem aXFillBitmapItem(mpLbFillAttr->GetSelectEntry(), pXBitmapEntry->GetGraphicObject());
329 :
330 : // #i122676# change FillStyle and Bitmap in one call
331 : GetBindings()->GetDispatcher()->Execute(
332 0 : SID_ATTR_FILL_BITMAP, SfxCallMode::RECORD, &aXFillBitmapItem, &aXFillStyleItem, 0L);
333 0 : mpLbFillAttr->SelectEntryPos(mnLastPosBitmap);
334 0 : }
335 : }
336 : }
337 : else
338 : {
339 0 : mpLbFillAttr->Disable();
340 : }
341 0 : break;
342 : }
343 : }
344 :
345 0 : meLastXFS = (sal_uInt16)eXFS;
346 :
347 0 : if(drawing::FillStyle_NONE != eXFS)
348 : {
349 0 : if(pToolBox)
350 : {
351 0 : mpLbFillType->Selected();
352 : }
353 0 : }
354 : }
355 :
356 0 : return 0;
357 : }
358 :
359 :
360 :
361 0 : IMPL_LINK( AreaPropertyPanel, SelectFillAttrHdl, ListBox*, pToolBox )
362 : {
363 0 : const drawing::FillStyle eXFS = (drawing::FillStyle)mpLbFillType->GetSelectEntryPos();
364 0 : const XFillStyleItem aXFillStyleItem(eXFS);
365 0 : SfxObjectShell* pSh = SfxObjectShell::Current();
366 :
367 0 : if(pToolBox)
368 : {
369 : // #i122676# dependent from bFillStyleChange, do execute a single or two
370 : // changes in one Execute call
371 0 : const bool bFillStyleChange((drawing::FillStyle) meLastXFS != eXFS);
372 :
373 0 : switch(eXFS)
374 : {
375 : case drawing::FillStyle_SOLID:
376 : {
377 0 : if(bFillStyleChange)
378 : {
379 : // #i122676# Single FillStyle change call needed here
380 0 : GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_STYLE, SfxCallMode::RECORD, &aXFillStyleItem, 0L);
381 : }
382 0 : break;
383 : }
384 : case drawing::FillStyle_GRADIENT:
385 : {
386 0 : sal_Int32 nPos = mpLbFillAttr->GetSelectEntryPos();
387 :
388 0 : if(LISTBOX_ENTRY_NOTFOUND == nPos)
389 : {
390 0 : nPos = mnLastPosGradient;
391 : }
392 :
393 0 : if(LISTBOX_ENTRY_NOTFOUND != nPos && pSh && pSh->GetItem(SID_GRADIENT_LIST))
394 : {
395 0 : const SvxGradientListItem aItem(*static_cast<const SvxGradientListItem*>(pSh->GetItem(SID_GRADIENT_LIST)));
396 :
397 0 : if(nPos < aItem.GetGradientList()->Count())
398 : {
399 0 : const XGradient aGradient = aItem.GetGradientList()->GetGradient(nPos)->GetGradient();
400 0 : const XFillGradientItem aXFillGradientItem(mpLbFillAttr->GetSelectEntry(), aGradient);
401 :
402 : // #i122676# Change FillStale and Gradinet in one call
403 : GetBindings()->GetDispatcher()->Execute(
404 : SID_ATTR_FILL_GRADIENT, SfxCallMode::RECORD, &aXFillGradientItem,
405 0 : bFillStyleChange ? &aXFillStyleItem : 0L, 0L);
406 0 : }
407 : }
408 :
409 0 : if(LISTBOX_ENTRY_NOTFOUND != nPos)
410 : {
411 0 : mnLastPosGradient = nPos;
412 : }
413 0 : break;
414 : }
415 : case drawing::FillStyle_HATCH:
416 : {
417 0 : sal_Int32 nPos = mpLbFillAttr->GetSelectEntryPos();
418 :
419 0 : if(LISTBOX_ENTRY_NOTFOUND == nPos)
420 : {
421 0 : nPos = mnLastPosHatch;
422 : }
423 :
424 0 : if(LISTBOX_ENTRY_NOTFOUND != nPos && pSh && pSh->GetItem(SID_HATCH_LIST))
425 : {
426 0 : const SvxHatchListItem aItem(*static_cast<const SvxHatchListItem*>(pSh->GetItem(SID_HATCH_LIST)));
427 :
428 0 : if(nPos < aItem.GetHatchList()->Count())
429 : {
430 0 : const XHatch aHatch = aItem.GetHatchList()->GetHatch(nPos)->GetHatch();
431 0 : const XFillHatchItem aXFillHatchItem( mpLbFillAttr->GetSelectEntry(), aHatch);
432 :
433 : // #i122676# Change FillStale and Hatch in one call
434 : GetBindings()->GetDispatcher()->Execute(
435 : SID_ATTR_FILL_HATCH, SfxCallMode::RECORD, &aXFillHatchItem,
436 0 : bFillStyleChange ? &aXFillStyleItem : 0L, 0L);
437 0 : }
438 : }
439 :
440 0 : if(LISTBOX_ENTRY_NOTFOUND != nPos)
441 : {
442 0 : mnLastPosHatch = nPos;
443 : }
444 0 : break;
445 : }
446 : case drawing::FillStyle_BITMAP:
447 : {
448 0 : sal_Int32 nPos = mpLbFillAttr->GetSelectEntryPos();
449 :
450 0 : if(LISTBOX_ENTRY_NOTFOUND == nPos)
451 : {
452 0 : nPos = mnLastPosBitmap;
453 : }
454 :
455 0 : if(LISTBOX_ENTRY_NOTFOUND != nPos && pSh && pSh->GetItem(SID_BITMAP_LIST))
456 : {
457 0 : const SvxBitmapListItem aItem(*static_cast<const SvxBitmapListItem*>(pSh->GetItem(SID_BITMAP_LIST)));
458 :
459 0 : if(nPos < aItem.GetBitmapList()->Count())
460 : {
461 0 : const XBitmapEntry* pXBitmapEntry = aItem.GetBitmapList()->GetBitmap(nPos);
462 0 : const XFillBitmapItem aXFillBitmapItem(mpLbFillAttr->GetSelectEntry(), pXBitmapEntry->GetGraphicObject());
463 :
464 : // #i122676# Change FillStale and Bitmap in one call
465 : GetBindings()->GetDispatcher()->Execute(
466 : SID_ATTR_FILL_BITMAP, SfxCallMode::RECORD, &aXFillBitmapItem,
467 0 : bFillStyleChange ? &aXFillStyleItem : 0L, 0L);
468 0 : }
469 : }
470 :
471 0 : if(LISTBOX_ENTRY_NOTFOUND != nPos)
472 : {
473 0 : mnLastPosBitmap = nPos;
474 : }
475 0 : break;
476 : }
477 0 : default: break;
478 : }
479 : }
480 :
481 0 : return 0;
482 : }
483 :
484 :
485 0 : PopupControl* AreaPropertyPanel::CreateTransparencyGradientControl (PopupContainer* pParent)
486 : {
487 0 : return new AreaTransparencyGradientControl(pParent, *this);
488 : }
489 :
490 :
491 :
492 :
493 0 : void AreaPropertyPanel::SetupIcons(void)
494 : {
495 0 : if(Theme::GetBoolean(Theme::Bool_UseSymphonyIcons))
496 : {
497 : // todo
498 : }
499 : else
500 : {
501 : // todo
502 : }
503 0 : }
504 :
505 :
506 :
507 0 : AreaPropertyPanel* AreaPropertyPanel::Create (
508 : vcl::Window* pParent,
509 : const css::uno::Reference<css::frame::XFrame>& rxFrame,
510 : SfxBindings* pBindings)
511 : {
512 0 : if (pParent == NULL)
513 0 : throw lang::IllegalArgumentException("no parent Window given to AreaPropertyPanel::Create", NULL, 0);
514 0 : if ( ! rxFrame.is())
515 0 : throw lang::IllegalArgumentException("no XFrame given to AreaPropertyPanel::Create", NULL, 1);
516 0 : if (pBindings == NULL)
517 0 : throw lang::IllegalArgumentException("no SfxBindings given to AreaPropertyPanel::Create", NULL, 2);
518 :
519 : return new AreaPropertyPanel(
520 : pParent,
521 : rxFrame,
522 0 : pBindings);
523 : }
524 :
525 :
526 :
527 0 : void AreaPropertyPanel::DataChanged(
528 : const DataChangedEvent& rEvent)
529 : {
530 : (void)rEvent;
531 :
532 0 : SetupIcons();
533 0 : }
534 :
535 :
536 :
537 0 : void AreaPropertyPanel::ImpUpdateTransparencies()
538 : {
539 0 : if(mpTransparanceItem.get() && mpFloatTransparenceItem.get())
540 : {
541 0 : bool bZeroValue(false);
542 :
543 0 : if(mpTransparanceItem.get())
544 : {
545 0 : const sal_uInt16 nValue(mpTransparanceItem->GetValue());
546 :
547 0 : if(!nValue)
548 : {
549 0 : bZeroValue = true;
550 : }
551 0 : else if(nValue <= 100)
552 : {
553 0 : mpLBTransType->Enable();
554 0 : mpTrspTextFT->Enable();
555 0 : mpLBTransType->SelectEntryPos(1);
556 0 : mpBTNGradient->Hide();
557 0 : mpMTRTransparent->Show();
558 0 : mpMTRTransparent->Enable();
559 0 : mpMTRTransparent->SetValue(nValue);
560 : }
561 :
562 0 : if(!bZeroValue)
563 : {
564 0 : maTrGrPopup.Hide();
565 : }
566 : }
567 :
568 0 : if(bZeroValue && mpFloatTransparenceItem.get())
569 : {
570 0 : if(mpFloatTransparenceItem->IsEnabled())
571 : {
572 0 : const XGradient& rGradient = mpFloatTransparenceItem->GetGradientValue();
573 0 : sal_Int32 nEntryPos(0);
574 0 : Image* pImage = 0;
575 :
576 0 : mpLBTransType->Enable();
577 0 : mpTrspTextFT->Enable();
578 0 : mpMTRTransparent->Hide();
579 0 : mpBTNGradient->Enable();
580 0 : mpBTNGradient->Show();
581 :
582 0 : switch(rGradient.GetGradientStyle())
583 : {
584 : case XGRAD_LINEAR:
585 : {
586 0 : nEntryPos = 2;
587 0 : pImage = &maImgLinear;
588 0 : break;
589 : }
590 : case XGRAD_AXIAL:
591 : {
592 0 : nEntryPos = 3;
593 0 : pImage = &maImgAxial;
594 0 : break;
595 : }
596 : case XGRAD_RADIAL:
597 : {
598 0 : nEntryPos = 4;
599 0 : pImage = &maImgRadial;
600 0 : break;
601 : }
602 : case XGRAD_ELLIPTICAL:
603 : {
604 0 : nEntryPos = 5;
605 0 : pImage = &maImgElli;
606 0 : break;
607 : }
608 : case XGRAD_SQUARE:
609 : {
610 0 : nEntryPos = 6;
611 0 : pImage = &maImgQuad;
612 0 : break;
613 : }
614 : case XGRAD_RECT:
615 : {
616 0 : nEntryPos = 7;
617 0 : pImage = &maImgSquare;
618 0 : break;
619 : }
620 : }
621 :
622 0 : const sal_uInt16 nIdGradient = mpBTNGradient->GetItemId(UNO_SIDEBARGRADIENT);
623 0 : mpLBTransType->SelectEntryPos(nEntryPos);
624 0 : mpBTNGradient->SetItemImage(nIdGradient, *pImage);
625 0 : bZeroValue = false;
626 : }
627 : else
628 : {
629 0 : bZeroValue = true;
630 : }
631 : }
632 :
633 0 : if(bZeroValue)
634 : {
635 0 : mpLBTransType->Enable();
636 0 : mpTrspTextFT->Enable();
637 0 : mpLBTransType->SelectEntryPos(0);
638 0 : mpBTNGradient->Hide();
639 0 : mpMTRTransparent->Enable();
640 0 : mpMTRTransparent->Show();
641 0 : mpMTRTransparent->SetValue(0);
642 : }
643 : }
644 : else
645 : {
646 : // no transparency at all
647 0 : mpLBTransType->SetNoSelection();
648 0 : mpLBTransType->Disable();
649 0 : mpTrspTextFT->Disable();
650 0 : mpMTRTransparent->Disable();
651 0 : mpMTRTransparent->Show();
652 0 : mpBTNGradient->Disable();
653 0 : mpBTNGradient->Hide();
654 : }
655 0 : }
656 :
657 :
658 :
659 0 : void AreaPropertyPanel::NotifyItemUpdate(
660 : sal_uInt16 nSID,
661 : SfxItemState eState,
662 : const SfxPoolItem* pState,
663 : const bool bIsEnabled)
664 : {
665 : (void)bIsEnabled;
666 0 : const bool bDisabled(SfxItemState::DISABLED == eState);
667 :
668 0 : switch(nSID)
669 : {
670 : case SID_ATTR_FILL_TRANSPARENCE:
671 : case SID_ATTR_FILL_FLOATTRANSPARENCE:
672 : {
673 0 : bool bFillTransparenceChanged(false);
674 :
675 0 : if(SID_ATTR_FILL_TRANSPARENCE == nSID)
676 : {
677 0 : bFillTransparenceChanged = true;
678 :
679 0 : if(eState >= SfxItemState::DEFAULT)
680 : {
681 0 : const SfxUInt16Item* pItem = dynamic_cast< const SfxUInt16Item* >(pState);
682 :
683 0 : if(pItem && (!mpTransparanceItem || *pItem != *mpTransparanceItem))
684 : {
685 0 : mpTransparanceItem.reset(static_cast<SfxUInt16Item*>(pItem->Clone()));
686 : }
687 : else
688 : {
689 0 : mpTransparanceItem.reset();
690 : }
691 : }
692 : else
693 : {
694 0 : mpTransparanceItem.reset();
695 : }
696 : }
697 : else // if(SID_ATTR_FILL_FLOATTRANSPARENCE == nSID)
698 : {
699 0 : bFillTransparenceChanged = true;
700 :
701 0 : if(eState >= SfxItemState::DEFAULT)
702 : {
703 0 : const XFillFloatTransparenceItem* pItem = dynamic_cast< const XFillFloatTransparenceItem* >(pState);
704 :
705 0 : if(pItem && (!mpFloatTransparenceItem || *pItem != *mpFloatTransparenceItem))
706 : {
707 0 : mpFloatTransparenceItem.reset(static_cast<XFillFloatTransparenceItem*>(pItem->Clone()));
708 : }
709 : else
710 : {
711 0 : mpFloatTransparenceItem.reset();
712 : }
713 : }
714 : else
715 : {
716 0 : mpFloatTransparenceItem.reset();
717 : }
718 : }
719 :
720 0 : if(bFillTransparenceChanged)
721 : {
722 : // update transparency settings dependent of mpTransparanceItem and mpFloatTransparenceItem
723 0 : ImpUpdateTransparencies();
724 : }
725 0 : break;
726 : }
727 : case SID_ATTR_FILL_STYLE:
728 : {
729 0 : if(bDisabled)
730 : {
731 0 : mpLbFillType->Disable();
732 0 : mpColorTextFT->Disable();
733 0 : mpLbFillType->SetNoSelection();
734 0 : mpLbFillAttr->Show();
735 0 : mpLbFillAttr->Disable();
736 0 : mpLbFillAttr->SetNoSelection();
737 0 : mpToolBoxColor->Hide();
738 0 : meLastXFS = static_cast<sal_uInt16>(-1);
739 0 : mpStyleItem.reset();
740 : }
741 :
742 0 : if(eState >= SfxItemState::DEFAULT)
743 : {
744 0 : const XFillStyleItem* pItem = dynamic_cast< const XFillStyleItem* >(pState);
745 :
746 0 : if(pItem)
747 : {
748 0 : mpStyleItem.reset(dynamic_cast< XFillStyleItem* >(pItem->Clone()));
749 0 : mpLbFillType->Enable();
750 0 : mpColorTextFT->Enable();
751 0 : drawing::FillStyle eXFS = (drawing::FillStyle)mpStyleItem->GetValue();
752 0 : meLastXFS = eXFS;
753 0 : mpLbFillType->SelectEntryPos(sal::static_int_cast< sal_Int32 >(eXFS));
754 :
755 0 : if(drawing::FillStyle_NONE == eXFS)
756 : {
757 0 : mpLbFillAttr->SetNoSelection();
758 0 : mpLbFillAttr->Disable();
759 : }
760 :
761 0 : Update();
762 0 : break;
763 : }
764 : }
765 :
766 0 : mpLbFillType->SetNoSelection();
767 0 : mpLbFillAttr->Show();
768 0 : mpLbFillAttr->Disable();
769 0 : mpLbFillAttr->SetNoSelection();
770 0 : mpToolBoxColor->Hide();
771 0 : meLastXFS = static_cast<sal_uInt16>(-1);
772 0 : mpStyleItem.reset();
773 0 : break;
774 : }
775 : case SID_ATTR_FILL_COLOR:
776 : {
777 0 : if(SfxItemState::DEFAULT == eState)
778 : {
779 0 : mpColorItem.reset(pState ? static_cast<XFillColorItem*>(pState->Clone()) : 0);
780 : }
781 :
782 0 : if(mpStyleItem && drawing::FillStyle_SOLID == (drawing::FillStyle)mpStyleItem->GetValue())
783 : {
784 0 : mpLbFillAttr->Hide();
785 0 : mpToolBoxColor->Show();
786 :
787 0 : Update();
788 : }
789 0 : break;
790 : }
791 : case SID_ATTR_FILL_GRADIENT:
792 : {
793 0 : if(SfxItemState::DEFAULT == eState)
794 : {
795 0 : mpFillGradientItem.reset(pState ? static_cast<XFillGradientItem*>(pState->Clone()) : 0);
796 : }
797 :
798 0 : if(mpStyleItem && drawing::FillStyle_GRADIENT == (drawing::FillStyle)mpStyleItem->GetValue())
799 : {
800 0 : mpLbFillAttr->Show();
801 0 : mpToolBoxColor->Hide();
802 :
803 0 : if(SfxItemState::DEFAULT == eState)
804 : {
805 0 : mpLbFillAttr->Enable();
806 0 : Update();
807 : }
808 0 : else if(SfxItemState::DISABLED == eState )
809 : {
810 0 : mpLbFillAttr->Disable();
811 0 : mpLbFillAttr->SetNoSelection();
812 : }
813 : else
814 : {
815 0 : mpLbFillAttr->SetNoSelection();
816 : }
817 : }
818 0 : break;
819 : }
820 : case SID_ATTR_FILL_HATCH:
821 : {
822 0 : if(SfxItemState::DEFAULT == eState)
823 : {
824 0 : mpHatchItem.reset(pState ? static_cast<XFillHatchItem*>(pState->Clone()) : 0);
825 : }
826 :
827 0 : if(mpStyleItem && drawing::FillStyle_HATCH == (drawing::FillStyle)mpStyleItem->GetValue())
828 : {
829 0 : mpLbFillAttr->Show();
830 0 : mpToolBoxColor->Hide();
831 :
832 0 : if(SfxItemState::DEFAULT == eState)
833 : {
834 0 : mpLbFillAttr->Enable();
835 0 : Update();
836 : }
837 0 : else if(SfxItemState::DISABLED == eState )
838 : {
839 0 : mpLbFillAttr->Disable();
840 0 : mpLbFillAttr->SetNoSelection();
841 : }
842 : else
843 : {
844 0 : mpLbFillAttr->SetNoSelection();
845 : }
846 : }
847 0 : break;
848 : }
849 : case SID_ATTR_FILL_BITMAP:
850 : {
851 0 : if(SfxItemState::DEFAULT == eState)
852 : {
853 0 : mpBitmapItem.reset(pState ? static_cast<XFillBitmapItem*>(pState->Clone()) : 0);
854 : }
855 :
856 0 : if(mpStyleItem && drawing::FillStyle_BITMAP == (drawing::FillStyle)mpStyleItem->GetValue())
857 : {
858 0 : mpLbFillAttr->Show();
859 0 : mpToolBoxColor->Hide();
860 :
861 0 : if(SfxItemState::DEFAULT == eState)
862 : {
863 0 : mpLbFillAttr->Enable();
864 0 : Update();
865 : }
866 0 : else if(SfxItemState::DISABLED == eState )
867 : {
868 0 : mpLbFillAttr->Disable();
869 0 : mpLbFillAttr->SetNoSelection();
870 : }
871 : else
872 : {
873 0 : mpLbFillAttr->SetNoSelection();
874 : }
875 : }
876 0 : break;
877 : }
878 : case SID_GRADIENT_LIST:
879 : {
880 0 : if(SfxItemState::DEFAULT == eState)
881 : {
882 0 : if(mpStyleItem && drawing::FillStyle_GRADIENT == (drawing::FillStyle)mpStyleItem->GetValue())
883 : {
884 0 : if(mpFillGradientItem)
885 : {
886 0 : const OUString aString( mpFillGradientItem->GetName() );
887 0 : const SfxObjectShell* pSh = SfxObjectShell::Current();
888 0 : const SvxGradientListItem aItem( *static_cast<const SvxGradientListItem*>(pSh->GetItem(SID_GRADIENT_LIST)));
889 :
890 0 : mpLbFillAttr->Clear();
891 0 : mpLbFillAttr->Enable();
892 0 : mpLbFillAttr->Fill(aItem.GetGradientList());
893 0 : mpLbFillAttr->SelectEntry(aString);
894 : }
895 : else
896 : {
897 0 : mpLbFillAttr->SetNoSelection();
898 : }
899 : }
900 : }
901 0 : break;
902 : }
903 : case SID_HATCH_LIST:
904 : {
905 0 : if(SfxItemState::DEFAULT == eState)
906 : {
907 0 : if(mpStyleItem && drawing::FillStyle_HATCH == (drawing::FillStyle)mpStyleItem->GetValue())
908 : {
909 0 : if(mpHatchItem)
910 : {
911 0 : const OUString aString( mpHatchItem->GetName() );
912 0 : const SfxObjectShell* pSh = SfxObjectShell::Current();
913 0 : const SvxHatchListItem aItem(*static_cast<const SvxHatchListItem*>(pSh->GetItem(SID_HATCH_LIST)));
914 :
915 0 : mpLbFillAttr->Clear();
916 0 : mpLbFillAttr->Enable();
917 0 : mpLbFillAttr->Fill(aItem.GetHatchList());
918 0 : mpLbFillAttr->SelectEntry(aString);
919 : }
920 : else
921 : {
922 0 : mpLbFillAttr->SetNoSelection();
923 : }
924 : }
925 : }
926 0 : break;
927 : }
928 : case SID_BITMAP_LIST:
929 : {
930 0 : if(SfxItemState::DEFAULT == eState)
931 : {
932 0 : if(mpStyleItem && drawing::FillStyle_BITMAP == (drawing::FillStyle)mpStyleItem->GetValue())
933 : {
934 0 : if(mpBitmapItem)
935 : {
936 0 : const OUString aString( mpBitmapItem->GetName() );
937 0 : const SfxObjectShell* pSh = SfxObjectShell::Current();
938 0 : const SvxBitmapListItem aItem(*static_cast<const SvxBitmapListItem*>(pSh->GetItem(SID_BITMAP_LIST)));
939 :
940 0 : mpLbFillAttr->Clear();
941 0 : mpLbFillAttr->Enable();
942 0 : mpLbFillAttr->Fill(aItem.GetBitmapList());
943 0 : mpLbFillAttr->SelectEntry(aString);
944 : }
945 : else
946 : {
947 0 : mpLbFillAttr->SetNoSelection();
948 : }
949 : }
950 : }
951 0 : break;
952 : }
953 : }
954 0 : }
955 :
956 :
957 :
958 :
959 :
960 :
961 0 : void AreaPropertyPanel::Update()
962 : {
963 0 : if(mpStyleItem)
964 : {
965 0 : const drawing::FillStyle eXFS = (drawing::FillStyle)mpStyleItem->GetValue();
966 0 : SfxObjectShell* pSh = SfxObjectShell::Current();
967 :
968 0 : switch( eXFS )
969 : {
970 : case drawing::FillStyle_NONE:
971 : {
972 0 : mpLbFillAttr->Show();
973 0 : mpToolBoxColor->Hide();
974 0 : break;
975 : }
976 : case drawing::FillStyle_SOLID:
977 : {
978 0 : if(mpColorItem)
979 : {
980 0 : mpLbFillAttr->Hide();
981 0 : mpToolBoxColor->Show();
982 : }
983 0 : break;
984 : }
985 : case drawing::FillStyle_GRADIENT:
986 : {
987 0 : mpLbFillAttr->Show();
988 0 : mpToolBoxColor->Hide();
989 :
990 0 : if(pSh && pSh->GetItem(SID_GRADIENT_LIST))
991 : {
992 0 : const SvxGradientListItem aItem(*static_cast<const SvxGradientListItem*>(pSh->GetItem(SID_GRADIENT_LIST)));
993 0 : mpLbFillAttr->Enable();
994 0 : mpLbFillAttr->Clear();
995 0 : mpLbFillAttr->Fill(aItem.GetGradientList());
996 :
997 0 : if(mpFillGradientItem)
998 : {
999 0 : const OUString aString(mpFillGradientItem->GetName());
1000 :
1001 0 : mpLbFillAttr->SelectEntry(aString);
1002 : }
1003 : else
1004 : {
1005 0 : mpLbFillAttr->SetNoSelection();
1006 0 : }
1007 : }
1008 : else
1009 : {
1010 0 : mpLbFillAttr->SetNoSelection();
1011 : }
1012 0 : break;
1013 : }
1014 : case drawing::FillStyle_HATCH:
1015 : {
1016 0 : mpLbFillAttr->Show();
1017 0 : mpToolBoxColor->Hide();
1018 :
1019 0 : if(pSh && pSh->GetItem(SID_HATCH_LIST))
1020 : {
1021 0 : const SvxHatchListItem aItem(*static_cast<const SvxHatchListItem*>(pSh->GetItem(SID_HATCH_LIST)));
1022 0 : mpLbFillAttr->Enable();
1023 0 : mpLbFillAttr->Clear();
1024 0 : mpLbFillAttr->Fill(aItem.GetHatchList());
1025 :
1026 0 : if(mpHatchItem)
1027 : {
1028 0 : const OUString aString(mpHatchItem->GetName());
1029 :
1030 0 : mpLbFillAttr->SelectEntry( aString );
1031 : }
1032 : else
1033 : {
1034 0 : mpLbFillAttr->SetNoSelection();
1035 0 : }
1036 : }
1037 : else
1038 : {
1039 0 : mpLbFillAttr->SetNoSelection();
1040 : }
1041 0 : break;
1042 : }
1043 : case drawing::FillStyle_BITMAP:
1044 : {
1045 0 : mpLbFillAttr->Show();
1046 0 : mpToolBoxColor->Hide();
1047 :
1048 0 : if(pSh && pSh->GetItem(SID_BITMAP_LIST))
1049 : {
1050 0 : const SvxBitmapListItem aItem(*static_cast<const SvxBitmapListItem*>(pSh->GetItem(SID_BITMAP_LIST)));
1051 0 : mpLbFillAttr->Enable();
1052 0 : mpLbFillAttr->Clear();
1053 0 : mpLbFillAttr->Fill(aItem.GetBitmapList());
1054 :
1055 0 : if(mpBitmapItem)
1056 : {
1057 0 : const OUString aString(mpBitmapItem->GetName());
1058 :
1059 0 : mpLbFillAttr->SelectEntry(aString);
1060 : }
1061 : else
1062 : {
1063 0 : mpLbFillAttr->SetNoSelection();
1064 0 : }
1065 : }
1066 : else
1067 : {
1068 0 : mpLbFillAttr->SetNoSelection();
1069 : }
1070 0 : break;
1071 : }
1072 : default:
1073 : OSL_ENSURE(false, "Non supported FillType (!)");
1074 0 : break;
1075 : }
1076 : }
1077 0 : }
1078 :
1079 :
1080 :
1081 0 : IMPL_LINK( AreaPropertyPanel, ClickTrGrHdl_Impl, ToolBox*, pToolBox )
1082 : {
1083 0 : maTrGrPopup.Rearrange(mpFloatTransparenceItem.get());
1084 : OSL_ASSERT( pToolBox->GetItemCommand(pToolBox->GetCurItemId()) == UNO_SIDEBARGRADIENT);
1085 0 : maTrGrPopup.Show(*pToolBox);
1086 :
1087 0 : return (0L);
1088 : }
1089 :
1090 :
1091 :
1092 0 : IMPL_LINK(AreaPropertyPanel, ChangeTrgrTypeHdl_Impl, void *, EMPTYARG)
1093 : {
1094 0 : sal_Int32 nSelectType = mpLBTransType->GetSelectEntryPos();
1095 0 : bool bGradient = false;
1096 0 : sal_uInt16 nTrans = 0;
1097 :
1098 0 : if(!nSelectType)
1099 : {
1100 0 : mpBTNGradient->Hide();
1101 0 : mpMTRTransparent->Show();
1102 0 : mpMTRTransparent->Enable();
1103 0 : mpMTRTransparent->SetValue(0);
1104 : }
1105 0 : else if(1 == nSelectType)
1106 : {
1107 0 : mpBTNGradient->Hide();
1108 0 : mpMTRTransparent->Show();
1109 0 : nTrans = mnLastTransSolid;
1110 0 : mpMTRTransparent->SetValue(nTrans);
1111 0 : mpLBTransType->SelectEntryPos(1);
1112 0 : mpMTRTransparent->Enable();
1113 : }
1114 : else
1115 : {
1116 0 : mpBTNGradient->Show();
1117 :
1118 0 : const sal_uInt16 nIdGradient = mpBTNGradient->GetItemId(UNO_SIDEBARGRADIENT);
1119 0 : switch (nSelectType)
1120 : {
1121 : case 2:
1122 0 : mpBTNGradient->SetItemImage(nIdGradient, maImgLinear);
1123 0 : break;
1124 : case 3:
1125 0 : mpBTNGradient->SetItemImage(nIdGradient, maImgAxial);
1126 0 : break;
1127 : case 4:
1128 0 : mpBTNGradient->SetItemImage(nIdGradient, maImgRadial);
1129 0 : break;
1130 : case 5:
1131 0 : mpBTNGradient->SetItemImage(nIdGradient, maImgElli );
1132 0 : break;
1133 : case 6:
1134 0 : mpBTNGradient->SetItemImage(nIdGradient, maImgQuad );
1135 0 : break;
1136 : case 7:
1137 0 : mpBTNGradient->SetItemImage(nIdGradient, maImgSquare);
1138 0 : break;
1139 : }
1140 :
1141 0 : mpMTRTransparent->Hide();
1142 0 : mpBTNGradient->Enable();
1143 0 : bGradient = true;
1144 : }
1145 :
1146 0 : const XFillTransparenceItem aLinearItem(nTrans);
1147 0 : GetBindings()->GetDispatcher()->Execute( SID_ATTR_FILL_TRANSPARENCE, SfxCallMode::RECORD, &aLinearItem, 0L );
1148 :
1149 0 : if(nSelectType > 1)
1150 : {
1151 0 : nSelectType -= 2;
1152 : }
1153 :
1154 0 : XGradient aTmpGradient;
1155 :
1156 0 : switch(nSelectType)
1157 : {
1158 : case XGRAD_LINEAR:
1159 0 : aTmpGradient = maGradientLinear;
1160 0 : break;
1161 : case XGRAD_AXIAL:
1162 0 : aTmpGradient = maGradientAxial;
1163 0 : break;
1164 : case XGRAD_RADIAL:
1165 0 : aTmpGradient = maGradientRadial;
1166 0 : break;
1167 : case XGRAD_ELLIPTICAL:
1168 0 : aTmpGradient = maGradientElliptical;
1169 0 : break;
1170 : case XGRAD_SQUARE:
1171 0 : aTmpGradient = maGradientSquare;
1172 0 : break;
1173 : case XGRAD_RECT:
1174 0 : aTmpGradient = maGradientRect;
1175 0 : break;
1176 : }
1177 :
1178 0 : SfxItemPool* pPool = 0;
1179 0 : const XFillFloatTransparenceItem aGradientItem(pPool, aTmpGradient, bGradient);
1180 0 : GetBindings()->GetDispatcher()->Execute( SID_ATTR_FILL_FLOATTRANSPARENCE, SfxCallMode::RECORD, &aGradientItem, 0L );
1181 :
1182 0 : return( 0L );
1183 : }
1184 :
1185 :
1186 :
1187 0 : IMPL_LINK(AreaPropertyPanel, ModifyTransparentHdl_Impl, void*, EMPTYARG)
1188 : {
1189 0 : const sal_uInt16 nTrans = (sal_uInt16)mpMTRTransparent->GetValue();
1190 0 : mnLastTransSolid = nTrans;
1191 0 : const sal_Int32 nSelectType = mpLBTransType->GetSelectEntryPos();
1192 :
1193 0 : if(nTrans && !nSelectType)
1194 : {
1195 0 : mpLBTransType->SelectEntryPos(1);
1196 : }
1197 :
1198 0 : const XFillTransparenceItem aLinearItem(nTrans);
1199 0 : GetBindings()->GetDispatcher()->Execute( SID_ATTR_FILL_TRANSPARENCE, SfxCallMode::RECORD, &aLinearItem, 0L );
1200 :
1201 0 : return 0L;
1202 : }
1203 :
1204 :
1205 :
1206 :
1207 :
1208 :
1209 0 : XGradient AreaPropertyPanel::GetGradient (const XGradientStyle eStyle) const
1210 : {
1211 0 : switch (eStyle)
1212 : {
1213 : default:
1214 : case XGRAD_LINEAR:
1215 0 : return maGradientLinear;
1216 : case XGRAD_AXIAL:
1217 0 : return maGradientAxial;
1218 : case XGRAD_RADIAL:
1219 0 : return maGradientRadial;
1220 : case XGRAD_ELLIPTICAL:
1221 0 : return maGradientElliptical;
1222 : case XGRAD_SQUARE:
1223 0 : return maGradientSquare;
1224 : case XGRAD_RECT:
1225 0 : return maGradientRect;
1226 : }
1227 : }
1228 :
1229 :
1230 :
1231 :
1232 0 : void AreaPropertyPanel::SetGradient (const XGradient& rGradient)
1233 : {
1234 0 : switch (rGradient.GetGradientStyle())
1235 : {
1236 : case XGRAD_LINEAR:
1237 0 : maGradientLinear = rGradient;
1238 0 : break;
1239 : case XGRAD_AXIAL:
1240 0 : maGradientAxial = rGradient;
1241 0 : break;
1242 : case XGRAD_RADIAL:
1243 0 : maGradientRadial = rGradient;
1244 0 : break;
1245 : case XGRAD_ELLIPTICAL:
1246 0 : maGradientElliptical = rGradient;
1247 0 : break;
1248 : case XGRAD_SQUARE:
1249 0 : maGradientSquare = rGradient;
1250 0 : break;
1251 : case XGRAD_RECT:
1252 0 : maGradientRect = rGradient;
1253 0 : break;
1254 : }
1255 0 : }
1256 :
1257 :
1258 :
1259 :
1260 0 : sal_Int32 AreaPropertyPanel::GetSelectedTransparencyTypeIndex (void) const
1261 : {
1262 0 : return mpLBTransType->GetSelectEntryPos();
1263 : }
1264 :
1265 594 : } } // end of namespace svx::sidebar
1266 :
1267 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|