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