18dcb2a10SAndre Fischer /**************************************************************
28dcb2a10SAndre Fischer *
38dcb2a10SAndre Fischer * Licensed to the Apache Software Foundation (ASF) under one
48dcb2a10SAndre Fischer * or more contributor license agreements. See the NOTICE file
58dcb2a10SAndre Fischer * distributed with this work for additional information
68dcb2a10SAndre Fischer * regarding copyright ownership. The ASF licenses this file
78dcb2a10SAndre Fischer * to you under the Apache License, Version 2.0 (the
88dcb2a10SAndre Fischer * "License"); you may not use this file except in compliance
98dcb2a10SAndre Fischer * with the License. You may obtain a copy of the License at
108dcb2a10SAndre Fischer *
118dcb2a10SAndre Fischer * http://www.apache.org/licenses/LICENSE-2.0
128dcb2a10SAndre Fischer *
138dcb2a10SAndre Fischer * Unless required by applicable law or agreed to in writing,
148dcb2a10SAndre Fischer * software distributed under the License is distributed on an
158dcb2a10SAndre Fischer * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
168dcb2a10SAndre Fischer * KIND, either express or implied. See the License for the
178dcb2a10SAndre Fischer * specific language governing permissions and limitations
188dcb2a10SAndre Fischer * under the License.
198dcb2a10SAndre Fischer *
208dcb2a10SAndre Fischer *************************************************************/
218dcb2a10SAndre Fischer
228dcb2a10SAndre Fischer #include "svx/sidebar/PopupContainer.hxx"
238dcb2a10SAndre Fischer #include "AreaTransparencyGradientControl.hxx"
248dcb2a10SAndre Fischer
25d29c2fc2SAndre Fischer #include <sfx2/sidebar/ResourceDefinitions.hrc>
268dcb2a10SAndre Fischer #include <sfx2/sidebar/Theme.hxx>
278dcb2a10SAndre Fischer #include <sfx2/sidebar/ControlFactory.hxx>
286a606da0SAndre Fischer #include <sfx2/sidebar/Layouter.hxx>
298dcb2a10SAndre Fischer #include <AreaPropertyPanel.hxx>
308dcb2a10SAndre Fischer #include <AreaPropertyPanel.hrc>
318dcb2a10SAndre Fischer #include <svx/dialogs.hrc>
328dcb2a10SAndre Fischer #include <svx/dialmgr.hxx>
338dcb2a10SAndre Fischer #include <sfx2/objsh.hxx>
348dcb2a10SAndre Fischer #include <svx/xfltrit.hxx>
358dcb2a10SAndre Fischer #include <svx/xflftrit.hxx>
368dcb2a10SAndre Fischer #include <svx/xtable.hxx>
378dcb2a10SAndre Fischer #include <sfx2/dispatch.hxx>
388dcb2a10SAndre Fischer #include <sfx2/bindings.hxx>
398dcb2a10SAndre Fischer #include <helpid.hrc>
408dcb2a10SAndre Fischer #include <svtools/valueset.hxx>
418dcb2a10SAndre Fischer #include <unotools/pathoptions.hxx>
428dcb2a10SAndre Fischer #include <svx/svxitems.hrc>
438dcb2a10SAndre Fischer #include <vcl/toolbox.hxx>
448dcb2a10SAndre Fischer #include <svtools/toolbarmenu.hxx>
45facb16e7SArmin Le Grand #include <svx/sidebar/ColorControl.hxx>
468dcb2a10SAndre Fischer
478dcb2a10SAndre Fischer #include <boost/bind.hpp>
488dcb2a10SAndre Fischer
498dcb2a10SAndre Fischer using namespace css;
508dcb2a10SAndre Fischer using namespace cssu;
516a606da0SAndre Fischer using ::sfx2::sidebar::Layouter;
528dcb2a10SAndre Fischer using ::sfx2::sidebar::Theme;
538dcb2a10SAndre Fischer
548dcb2a10SAndre Fischer #define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString)))
558dcb2a10SAndre Fischer
568dcb2a10SAndre Fischer
578dcb2a10SAndre Fischer
588dcb2a10SAndre Fischer
598dcb2a10SAndre Fischer namespace svx { namespace sidebar {
608dcb2a10SAndre Fischer
618dcb2a10SAndre Fischer const sal_Int32 AreaPropertyPanel::DEFAULT_CENTERX = 50;
628dcb2a10SAndre Fischer const sal_Int32 AreaPropertyPanel::DEFAULT_CENTERY = 50;
638dcb2a10SAndre Fischer const sal_Int32 AreaPropertyPanel::DEFAULT_ANGLE = 0;
648dcb2a10SAndre Fischer const sal_Int32 AreaPropertyPanel::DEFAULT_STARTVALUE = 0;
658dcb2a10SAndre Fischer const sal_Int32 AreaPropertyPanel::DEFAULT_ENDVALUE = 16777215;
668dcb2a10SAndre Fischer const sal_Int32 AreaPropertyPanel::DEFAULT_BORDER = 0;
678dcb2a10SAndre Fischer
688dcb2a10SAndre Fischer
AreaPropertyPanel(Window * pParent,const cssu::Reference<css::frame::XFrame> & rxFrame,SfxBindings * pBindings)698dcb2a10SAndre Fischer AreaPropertyPanel::AreaPropertyPanel(
708dcb2a10SAndre Fischer Window* pParent,
718dcb2a10SAndre Fischer const cssu::Reference<css::frame::XFrame>& rxFrame,
728dcb2a10SAndre Fischer SfxBindings* pBindings)
73ee093554SAndre Fischer : Control(pParent, SVX_RES(RID_SIDEBAR_AREA_PANEL)),
748dcb2a10SAndre Fischer meLastXFS(-1),
758dcb2a10SAndre Fischer maLastColor(Color(COL_DEFAULT_SHAPE_FILLING)),
768dcb2a10SAndre Fischer mnLastPosGradient(0),
778dcb2a10SAndre Fischer mnLastPosHatch(0),
788dcb2a10SAndre Fischer mnLastPosBitmap(0),
798dcb2a10SAndre Fischer mnLastTransSolid(50),
808dcb2a10SAndre Fischer maGradientLinear(),
818dcb2a10SAndre Fischer maGradientAxial(),
828dcb2a10SAndre Fischer maGradientRadial(),
838dcb2a10SAndre Fischer maGradientElliptical(),
848dcb2a10SAndre Fischer maGradientSquare(),
858dcb2a10SAndre Fischer maGradientRect(),
868dcb2a10SAndre Fischer mpColorTextFT(new FixedText(this, SVX_RES(FT_COLOR_LIST))),
878dcb2a10SAndre Fischer mpLbFillType(new SvxFillTypeBox(this)),
888dcb2a10SAndre Fischer mpLbFillAttr(new SvxFillAttrBox(this)),
898dcb2a10SAndre Fischer mpToolBoxColorBackground(sfx2::sidebar::ControlFactory::CreateToolBoxBackground(this)),
908dcb2a10SAndre Fischer mpToolBoxColor(sfx2::sidebar::ControlFactory::CreateToolBox(mpToolBoxColorBackground.get(), SVX_RES(TB_COLOR))),
918dcb2a10SAndre Fischer mpTrspTextFT(new FixedText(this, SVX_RES(FL_TRSP_TEXT))),
928dcb2a10SAndre Fischer mpLBTransType(new ListBox(this, SVX_RES(LB_TRGR_TYPES))),
938dcb2a10SAndre Fischer mpMTRTransparent(new MetricField(this, SVX_RES(MTR_TRANSPARENT))),
948dcb2a10SAndre Fischer mpBTNGradientBackground(sfx2::sidebar::ControlFactory::CreateToolBoxBackground(this)),
958dcb2a10SAndre Fischer mpBTNGradient(sfx2::sidebar::ControlFactory::CreateToolBox(mpBTNGradientBackground.get(), SVX_RES(BTN_GRADIENT))),
968dcb2a10SAndre Fischer mpColorUpdater(new ::svx::ToolboxButtonColorUpdater(SID_ATTR_FILL_COLOR, TBI_COLOR, mpToolBoxColor.get(), TBX_UPDATER_MODE_CHAR_COLOR_NEW)),
978dcb2a10SAndre Fischer mpStyleItem(),
988dcb2a10SAndre Fischer mpColorItem(),
998dcb2a10SAndre Fischer mpFillGradientItem(),
1008dcb2a10SAndre Fischer mpHatchItem(),
1018dcb2a10SAndre Fischer mpBitmapItem(),
1028dcb2a10SAndre Fischer maStyleControl(SID_ATTR_FILL_STYLE, *pBindings, *this),
1038dcb2a10SAndre Fischer maColorControl(SID_ATTR_FILL_COLOR, *pBindings, *this),
1048dcb2a10SAndre Fischer maGradientControl(SID_ATTR_FILL_GRADIENT, *pBindings, *this),
1058dcb2a10SAndre Fischer maHatchControl(SID_ATTR_FILL_HATCH, *pBindings, *this),
1068dcb2a10SAndre Fischer maBitmapControl(SID_ATTR_FILL_BITMAP, *pBindings, *this),
1078dcb2a10SAndre Fischer maColorTableControl(SID_COLOR_TABLE, *pBindings, *this),
1088dcb2a10SAndre Fischer maGradientListControl(SID_GRADIENT_LIST, *pBindings, *this),
1098dcb2a10SAndre Fischer maHatchListControl(SID_HATCH_LIST, *pBindings, *this),
1108dcb2a10SAndre Fischer maBitmapListControl(SID_BITMAP_LIST, *pBindings, *this),
1118dcb2a10SAndre Fischer maFillTransparenceController(SID_ATTR_FILL_TRANSPARENCE, *pBindings, *this),
1128dcb2a10SAndre Fischer maFillFloatTransparenceController(SID_ATTR_FILL_FLOATTRANSPARENCE, *pBindings, *this),
1138dcb2a10SAndre Fischer maImgAxial(SVX_RES(IMG_AXIAL)),
1148dcb2a10SAndre Fischer maImgElli(SVX_RES(IMG_ELLI)),
1158dcb2a10SAndre Fischer maImgQuad(SVX_RES(IMG_QUAD)),
1168dcb2a10SAndre Fischer maImgRadial(SVX_RES(IMG_RADIAL)),
1178dcb2a10SAndre Fischer maImgSquare(SVX_RES(IMG_SQUARE)),
1188dcb2a10SAndre Fischer maImgLinear(SVX_RES(IMG_LINEAR)),
1198dcb2a10SAndre Fischer maImgColor(SVX_RES(IMG_COLOR)),
1208dcb2a10SAndre Fischer maImgAxialH(SVX_RES(IMG_AXIAL_H)),
1218dcb2a10SAndre Fischer maImgElliH(SVX_RES(IMG_ELLI_H)),
1228dcb2a10SAndre Fischer maImgQuadH(SVX_RES(IMG_QUAD_H)),
1238dcb2a10SAndre Fischer maImgRadialH(SVX_RES(IMG_RADIAL_H)),
1248dcb2a10SAndre Fischer maImgSquareH(SVX_RES(IMG_SQUARE_H)),
1258dcb2a10SAndre Fischer maImgLinearH(SVX_RES(IMG_LINEAR_H)),
1268dcb2a10SAndre Fischer maImgColorH(SVX_RES(IMG_COLOR_H)),
1278dcb2a10SAndre Fischer msHelpFillType(SVX_RES(STR_HELP_TYPE)),
1288dcb2a10SAndre Fischer msHelpFillAttr(SVX_RES(STR_HELP_ATTR)),
1298dcb2a10SAndre Fischer maTrGrPopup(this, ::boost::bind(&AreaPropertyPanel::CreateTransparencyGradientControl, this, _1)),
1308dcb2a10SAndre Fischer maColorPopup(this, ::boost::bind(&AreaPropertyPanel::CreateColorPopupControl, this, _1)),
1318dcb2a10SAndre Fischer mpFloatTransparenceItem(),
1328dcb2a10SAndre Fischer mpTransparanceItem(),
1338dcb2a10SAndre Fischer mxFrame(rxFrame),
1348dcb2a10SAndre Fischer mpBindings(pBindings),
1356a606da0SAndre Fischer mbColorAvail(true),
1366a606da0SAndre Fischer maLayouter(*this)
1378dcb2a10SAndre Fischer {
1388dcb2a10SAndre Fischer Initialize();
1398dcb2a10SAndre Fischer FreeResource();
1406a606da0SAndre Fischer
1416a606da0SAndre Fischer // Setup the grid layouter.
1426a606da0SAndre Fischer const sal_Int32 nMappedMboxWidth (Layouter::MapWidth(*this, MBOX_WIDTH));
1436a606da0SAndre Fischer
1446a606da0SAndre Fischer maLayouter.GetCell(0,0).SetControl(*mpColorTextFT).SetGridWidth(3);
1456a606da0SAndre Fischer maLayouter.GetCell(1,0).SetControl(*mpLbFillType);
1466a606da0SAndre Fischer maLayouter.GetCell(1,2,0).SetControl(*mpToolBoxColorBackground).SetFixedWidth();
1476a606da0SAndre Fischer maLayouter.GetCell(1,2,1).SetControl(*mpLbFillAttr);
1486a606da0SAndre Fischer
1496a606da0SAndre Fischer maLayouter.GetCell(2,0).SetControl(*mpTrspTextFT).SetGridWidth(3);
1506a606da0SAndre Fischer maLayouter.GetCell(3,0).SetControl(*mpLBTransType);
1516a606da0SAndre Fischer maLayouter.GetCell(3,2,0).SetControl(*mpMTRTransparent);
1526a606da0SAndre Fischer maLayouter.GetCell(3,2,1).SetControl(*mpBTNGradient);
1536a606da0SAndre Fischer
1546a606da0SAndre Fischer maLayouter.GetColumn(0)
1556a606da0SAndre Fischer .SetWeight(1)
1566a606da0SAndre Fischer .SetLeftPadding(Layouter::MapWidth(*this,SECTIONPAGE_MARGIN_HORIZONTAL))
1576a606da0SAndre Fischer .SetMinimumWidth(nMappedMboxWidth);
1586a606da0SAndre Fischer maLayouter.GetColumn(1)
1596a606da0SAndre Fischer .SetWeight(0)
1606a606da0SAndre Fischer .SetMinimumWidth(Layouter::MapWidth(*this, CONTROL_SPACING_HORIZONTAL));
1616a606da0SAndre Fischer maLayouter.GetColumn(2)
1626a606da0SAndre Fischer .SetWeight(1)
1636a606da0SAndre Fischer .SetMinimumWidth(nMappedMboxWidth)
1646a606da0SAndre Fischer .SetRightPadding(Layouter::MapWidth(*this,SECTIONPAGE_MARGIN_HORIZONTAL));
1656a606da0SAndre Fischer
1666a606da0SAndre Fischer // Make controls that display text handle short widths more
1676a606da0SAndre Fischer // graceful.
1686a606da0SAndre Fischer Layouter::PrepareForLayouting(*mpColorTextFT);
1696a606da0SAndre Fischer Layouter::PrepareForLayouting(*mpTrspTextFT);
1708dcb2a10SAndre Fischer }
1718dcb2a10SAndre Fischer
1728dcb2a10SAndre Fischer
1738dcb2a10SAndre Fischer
~AreaPropertyPanel()1748dcb2a10SAndre Fischer AreaPropertyPanel::~AreaPropertyPanel()
1758dcb2a10SAndre Fischer {
1768dcb2a10SAndre Fischer // Destroy the toolboxes, then their background windows.
1778dcb2a10SAndre Fischer mpToolBoxColor.reset();
1788dcb2a10SAndre Fischer mpBTNGradient.reset();
1798dcb2a10SAndre Fischer mpToolBoxColorBackground.reset();
1808dcb2a10SAndre Fischer mpBTNGradientBackground.reset();
1818dcb2a10SAndre Fischer }
1828dcb2a10SAndre Fischer
1838dcb2a10SAndre Fischer
1848dcb2a10SAndre Fischer
Initialize()1858dcb2a10SAndre Fischer void AreaPropertyPanel::Initialize()
1868dcb2a10SAndre Fischer {
18737fee4fdSAndre Fischer mpColorTextFT->SetBackground(Wallpaper());
18837fee4fdSAndre Fischer mpTrspTextFT->SetBackground(Wallpaper());
18937fee4fdSAndre Fischer
1908dcb2a10SAndre Fischer maGradientLinear.SetXOffset(DEFAULT_CENTERX);
1918dcb2a10SAndre Fischer maGradientLinear.SetYOffset(DEFAULT_CENTERY);
1928dcb2a10SAndre Fischer maGradientLinear.SetAngle(DEFAULT_ANGLE);
1938dcb2a10SAndre Fischer maGradientLinear.SetStartColor(Color(DEFAULT_STARTVALUE));
1948dcb2a10SAndre Fischer maGradientLinear.SetEndColor(Color(DEFAULT_ENDVALUE));
1958dcb2a10SAndre Fischer maGradientLinear.SetBorder(DEFAULT_BORDER);
1968dcb2a10SAndre Fischer maGradientLinear.SetGradientStyle(XGRAD_LINEAR);
1978dcb2a10SAndre Fischer
1988dcb2a10SAndre Fischer maGradientAxial = maGradientLinear;
1998dcb2a10SAndre Fischer maGradientAxial.SetGradientStyle(XGRAD_AXIAL);
2008dcb2a10SAndre Fischer
2018dcb2a10SAndre Fischer maGradientRadial = maGradientLinear;
2028dcb2a10SAndre Fischer maGradientRadial.SetGradientStyle(XGRAD_RADIAL);
2038dcb2a10SAndre Fischer
2048dcb2a10SAndre Fischer maGradientElliptical = maGradientLinear;
2058dcb2a10SAndre Fischer maGradientElliptical.SetGradientStyle(XGRAD_ELLIPTICAL);
2068dcb2a10SAndre Fischer
2078dcb2a10SAndre Fischer maGradientSquare = maGradientLinear;
2088dcb2a10SAndre Fischer maGradientSquare.SetGradientStyle(XGRAD_SQUARE);
2098dcb2a10SAndre Fischer
2108dcb2a10SAndre Fischer maGradientRect = maGradientLinear;
2118dcb2a10SAndre Fischer maGradientRect.SetGradientStyle(XGRAD_RECT);
2128dcb2a10SAndre Fischer
2138dcb2a10SAndre Fischer Size aLogicalFillSize(MBOX_WIDTH,LISTBOX_HEIGHT);
2148dcb2a10SAndre Fischer Size aLogicalAttrSize(MBOX_WIDTH + 1,LISTBOX_HEIGHT);
2158dcb2a10SAndre Fischer
2168dcb2a10SAndre Fischer Point aPoint(SECTIONPAGE_MARGIN_HORIZONTAL,SECTIONPAGE_MARGIN_VERTICAL_TOP + FIXED_TEXT_HEIGHT + TEXT_CONTROL_SPACING_VERTICAL);
2178dcb2a10SAndre Fischer Point aPoint_Picker(SECTIONPAGE_MARGIN_HORIZONTAL + MBOX_WIDTH + CONTROL_SPACING_HORIZONTAL,SECTIONPAGE_MARGIN_VERTICAL_TOP + FIXED_TEXT_HEIGHT + TEXT_CONTROL_SPACING_VERTICAL);
2188dcb2a10SAndre Fischer
2198dcb2a10SAndre Fischer Size aTypeSize(LogicToPixel(aLogicalFillSize, MAP_APPFONT));
2208dcb2a10SAndre Fischer Size aAttrSize(LogicToPixel(aLogicalAttrSize, MAP_APPFONT));
2218dcb2a10SAndre Fischer
2228dcb2a10SAndre Fischer Point aTypePoint(LogicToPixel(aPoint, MAP_APPFONT));
2238dcb2a10SAndre Fischer Point aAttrPoint(LogicToPixel(aPoint_Picker, MAP_APPFONT));
2248dcb2a10SAndre Fischer
2258dcb2a10SAndre Fischer mpLbFillType->SetPosSizePixel(aTypePoint,aTypeSize);
2268dcb2a10SAndre Fischer mpLbFillAttr->SetPosSizePixel(aAttrPoint,aAttrSize);
2278dcb2a10SAndre Fischer
2288dcb2a10SAndre Fischer mpLbFillType->SetHelpId(HID_PPROPERTYPANEL_AREA_LB_FILL_TYPES);
2298dcb2a10SAndre Fischer mpLbFillAttr->SetHelpId(HID_PPROPERTYPANEL_AREA_LB_FILL_ATTR);
2308dcb2a10SAndre Fischer
2318dcb2a10SAndre Fischer mpLbFillType->SetQuickHelpText(msHelpFillType);
2328dcb2a10SAndre Fischer mpLbFillAttr->SetQuickHelpText(msHelpFillAttr);
2338dcb2a10SAndre Fischer
2348dcb2a10SAndre Fischer mpLbFillType->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Fill"))); //wj acc
2358dcb2a10SAndre Fischer mpLbFillAttr->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Fill"))); //wj acc
2368dcb2a10SAndre Fischer
2378dcb2a10SAndre Fischer Link aLink = LINK( this, AreaPropertyPanel, SelectFillTypeHdl );
2388dcb2a10SAndre Fischer mpLbFillType->SetSelectHdl( aLink );
2398dcb2a10SAndre Fischer
2408dcb2a10SAndre Fischer aLink = LINK( this, AreaPropertyPanel, SelectFillAttrHdl );
2418dcb2a10SAndre Fischer mpLbFillAttr->SetSelectHdl( aLink );
2428dcb2a10SAndre Fischer
2438dcb2a10SAndre Fischer //add for new color picker
2448dcb2a10SAndre Fischer mpLbFillAttr->Hide();
2458dcb2a10SAndre Fischer mpToolBoxColor->SetItemImage(TBI_COLOR, GetDisplayBackground().GetColor().IsDark()? maImgColorH : maImgColor);
2468dcb2a10SAndre Fischer Size aTbxSize( mpToolBoxColor->CalcWindowSizePixel() );
2478dcb2a10SAndre Fischer mpToolBoxColor->SetOutputSizePixel( aTbxSize );
2488dcb2a10SAndre Fischer mpToolBoxColor->SetItemBits( TBI_COLOR, mpToolBoxColor->GetItemBits( TBI_COLOR ) | TIB_DROPDOWNONLY );
2498dcb2a10SAndre Fischer mpToolBoxColor->SetBackground(Wallpaper());
2508dcb2a10SAndre Fischer mpToolBoxColor->SetPaintTransparent(true);
2518dcb2a10SAndre Fischer mpToolBoxColor->SetQuickHelpText(TBI_COLOR, String(SVX_RES(STR_HELP_COLOR))); //wj acc
2528dcb2a10SAndre Fischer //mpToolBoxColor->SetItemText(TBI_COLOR, msHelpFillAttr);
2538dcb2a10SAndre Fischer
2548dcb2a10SAndre Fischer long aHeightLBStyle = mpLbFillType->GetSizePixel().getHeight();
2558dcb2a10SAndre Fischer long aLBPosY = mpLbFillType->GetPosPixel().getY();
2568dcb2a10SAndre Fischer long aHeightTBAttr = mpToolBoxColor->GetSizePixel().getHeight();
2578dcb2a10SAndre Fischer Point aPointTBAttr = mpToolBoxColor->GetPosPixel();
2588dcb2a10SAndre Fischer aPointTBAttr.setY( aLBPosY + aHeightLBStyle / 2 - aHeightTBAttr / 2);
2598dcb2a10SAndre Fischer mpToolBoxColor->SetPosPixel(aPointTBAttr);
2608dcb2a10SAndre Fischer
2618dcb2a10SAndre Fischer aLink = LINK(this, AreaPropertyPanel, ToolBoxColorDropHdl);
2628dcb2a10SAndre Fischer mpToolBoxColor->SetDropdownClickHdl ( aLink );
2638dcb2a10SAndre Fischer mpToolBoxColor->SetSelectHdl ( aLink );
2648dcb2a10SAndre Fischer
2658dcb2a10SAndre Fischer //add end
2668dcb2a10SAndre Fischer mpLBTransType->SetSelectHdl(LINK(this, AreaPropertyPanel, ChangeTrgrTypeHdl_Impl));
2678dcb2a10SAndre Fischer mpLBTransType->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Transparency"))); //wj acc
2688dcb2a10SAndre Fischer
2698dcb2a10SAndre Fischer mpMTRTransparent->SetValue( 50 );
2708dcb2a10SAndre Fischer mpMTRTransparent->SetModifyHdl(LINK(this, AreaPropertyPanel, ModifyTransparentHdl_Impl));
2718dcb2a10SAndre Fischer mpMTRTransparent->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Transparency"))); //wj acc
2728dcb2a10SAndre Fischer
2738dcb2a10SAndre Fischer mpBTNGradient->SetItemBits( TBI_BTX_GRADIENT, mpBTNGradient->GetItemBits( TBI_BTX_GRADIENT ) | TIB_DROPDOWNONLY );
2748dcb2a10SAndre Fischer aLink = LINK( this, AreaPropertyPanel, ClickTrGrHdl_Impl );
2758dcb2a10SAndre Fischer mpBTNGradient->SetDropdownClickHdl( aLink );
2768dcb2a10SAndre Fischer mpBTNGradient->SetSelectHdl( aLink );
2778dcb2a10SAndre Fischer aTbxSize = mpBTNGradient->CalcWindowSizePixel();
2788dcb2a10SAndre Fischer mpBTNGradient->SetOutputSizePixel( aTbxSize );
2798dcb2a10SAndre Fischer mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,maImgLinear);
2808dcb2a10SAndre Fischer mpBTNGradient->SetQuickHelpText(TBI_BTX_GRADIENT, String(SVX_RES(STR_HELP_GRADIENT))); //wj acc
2818dcb2a10SAndre Fischer mpBTNGradient->Hide();
2828dcb2a10SAndre Fischer
2838dcb2a10SAndre Fischer long aHeightLBTrans = mpLBTransType->GetSizePixel().getHeight();
2848dcb2a10SAndre Fischer Point aPointLB = mpLBTransType->GetPosPixel();
2858dcb2a10SAndre Fischer long aPosY = aPointLB.getY();
2868dcb2a10SAndre Fischer
2878dcb2a10SAndre Fischer Point aPointMetric = mpMTRTransparent->GetPosPixel();
2888dcb2a10SAndre Fischer Point aPointTB = mpMTRTransparent->GetPosPixel();
2898dcb2a10SAndre Fischer long aHeightMetric = mpMTRTransparent->GetSizePixel().getHeight();
2908dcb2a10SAndre Fischer long aHeightTool = mpBTNGradient->GetSizePixel().getHeight();
2918dcb2a10SAndre Fischer aPointMetric.setY(aPosY+aHeightLBTrans/2-aHeightMetric/2);
2928dcb2a10SAndre Fischer aPointTB.setY(aPosY+aHeightLBTrans/2-aHeightTool/2);
2938dcb2a10SAndre Fischer aPointTB.setX(aPointTB.getX()+3);
2948dcb2a10SAndre Fischer mpMTRTransparent->SetPosPixel(aPointMetric);
2958dcb2a10SAndre Fischer mpBTNGradient->SetPosPixel(aPointTB);
2968dcb2a10SAndre Fischer
2978dcb2a10SAndre Fischer mpLbFillType->SetAccessibleRelationLabeledBy(mpColorTextFT.get());
2988dcb2a10SAndre Fischer mpLbFillAttr->SetAccessibleRelationLabeledBy(mpLbFillAttr.get());
2998dcb2a10SAndre Fischer mpToolBoxColor->SetAccessibleRelationLabeledBy(mpToolBoxColor.get());
3008dcb2a10SAndre Fischer mpLBTransType->SetAccessibleRelationLabeledBy(mpTrspTextFT.get());
3018dcb2a10SAndre Fischer mpMTRTransparent->SetAccessibleRelationLabeledBy(mpMTRTransparent.get());
3028dcb2a10SAndre Fischer mpBTNGradient->SetAccessibleRelationLabeledBy(mpBTNGradient.get());
3038dcb2a10SAndre Fischer
3048dcb2a10SAndre Fischer SetupIcons();
3058dcb2a10SAndre Fischer }
3068dcb2a10SAndre Fischer
3078dcb2a10SAndre Fischer
3088dcb2a10SAndre Fischer
IMPL_LINK(AreaPropertyPanel,SelectFillTypeHdl,ListBox *,pToolBox)3098dcb2a10SAndre Fischer IMPL_LINK( AreaPropertyPanel, SelectFillTypeHdl, ListBox *, pToolBox )
3108dcb2a10SAndre Fischer {
311d74d90d6SArmin Le Grand const XFillStyle eXFS = (XFillStyle)mpLbFillType->GetSelectEntryPos();
3128dcb2a10SAndre Fischer
3138dcb2a10SAndre Fischer if((XFillStyle)meLastXFS != eXFS)
3148dcb2a10SAndre Fischer {
3158dcb2a10SAndre Fischer mpLbFillAttr->Clear();
3168dcb2a10SAndre Fischer SfxObjectShell* pSh = SfxObjectShell::Current();
317d74d90d6SArmin Le Grand const XFillStyleItem aXFillStyleItem(eXFS);
3188dcb2a10SAndre Fischer
319*86d608b5SArmin Le Grand // #122676# Do no longer trigger two Execute calls, one for SID_ATTR_FILL_STYLE
320*86d608b5SArmin Le Grand // and one for setting the fill attribute itself, but add two SfxPoolItems to the
321*86d608b5SArmin Le Grand // call to get just one action at the SdrObject and to create only one Undo action, too.
322*86d608b5SArmin Le Grand // Checked that this works in all apps.
3238dcb2a10SAndre Fischer switch( eXFS )
3248dcb2a10SAndre Fischer {
3258dcb2a10SAndre Fischer case XFILL_NONE:
3268dcb2a10SAndre Fischer {
3278dcb2a10SAndre Fischer mpLbFillAttr->Show();
3288dcb2a10SAndre Fischer mpToolBoxColor->Hide();
3298dcb2a10SAndre Fischer mpLbFillType->Selected();
3308dcb2a10SAndre Fischer mpLbFillAttr->Disable();
331*86d608b5SArmin Le Grand
332*86d608b5SArmin Le Grand // #122676# need to call a single SID_ATTR_FILL_STYLE change
333*86d608b5SArmin Le Grand GetBindings()->GetDispatcher()->Execute(
334*86d608b5SArmin Le Grand SID_ATTR_FILL_STYLE, SFX_CALLMODE_RECORD, &aXFillStyleItem, 0L);
3358dcb2a10SAndre Fischer break;
336d74d90d6SArmin Le Grand }
3378dcb2a10SAndre Fischer case XFILL_SOLID:
3388dcb2a10SAndre Fischer {
3398dcb2a10SAndre Fischer mpLbFillAttr->Hide();
3408dcb2a10SAndre Fischer mpToolBoxColor->Show();
341d74d90d6SArmin Le Grand const String aTmpStr;
342d74d90d6SArmin Le Grand const Color aColor = maLastColor;
343d74d90d6SArmin Le Grand const XFillColorItem aXFillColorItem( aTmpStr, aColor );
344*86d608b5SArmin Le Grand
345*86d608b5SArmin Le Grand // #122676# change FillStyle and Color in one call
346*86d608b5SArmin Le Grand GetBindings()->GetDispatcher()->Execute(
347*86d608b5SArmin Le Grand SID_ATTR_FILL_COLOR, SFX_CALLMODE_RECORD, &aXFillColorItem, &aXFillStyleItem, 0L);
3488dcb2a10SAndre Fischer break;
349d74d90d6SArmin Le Grand }
3508dcb2a10SAndre Fischer case XFILL_GRADIENT:
3518dcb2a10SAndre Fischer {
3528dcb2a10SAndre Fischer mpLbFillAttr->Show();
3538dcb2a10SAndre Fischer mpToolBoxColor->Hide();
354d74d90d6SArmin Le Grand
3558dcb2a10SAndre Fischer if(pSh && pSh->GetItem(SID_GRADIENT_LIST))
3568dcb2a10SAndre Fischer {
357d74d90d6SArmin Le Grand if(!mpLbFillAttr->GetEntryCount())
3588dcb2a10SAndre Fischer {
359d74d90d6SArmin Le Grand const SvxGradientListItem aItem(*(const SvxGradientListItem*)(pSh->GetItem(SID_GRADIENT_LIST)));
3608dcb2a10SAndre Fischer mpLbFillAttr->Enable();
3618dcb2a10SAndre Fischer mpLbFillAttr->Clear();
3628dcb2a10SAndre Fischer mpLbFillAttr->Fill(aItem.GetGradientList());
3638dcb2a10SAndre Fischer }
3648dcb2a10SAndre Fischer
365a68b38dfSArmin Le Grand mpLbFillAttr->AdaptDropDownLineCountToMaximum();
36697e8a929SArmin Le Grand
367d74d90d6SArmin Le Grand if(LISTBOX_ENTRY_NOTFOUND != mnLastPosGradient)
3688dcb2a10SAndre Fischer {
369d74d90d6SArmin Le Grand const SvxGradientListItem aItem(*(const SvxGradientListItem*)(pSh->GetItem(SID_GRADIENT_LIST)));
370d74d90d6SArmin Le Grand
3718dcb2a10SAndre Fischer if(mnLastPosGradient < aItem.GetGradientList()->Count())
3728dcb2a10SAndre Fischer {
373d74d90d6SArmin Le Grand const XGradient aGradient = aItem.GetGradientList()->GetGradient(mnLastPosGradient)->GetGradient();
374d74d90d6SArmin Le Grand const XFillGradientItem aXFillGradientItem(mpLbFillAttr->GetEntry(mnLastPosGradient), aGradient);
375*86d608b5SArmin Le Grand
376*86d608b5SArmin Le Grand // #122676# change FillStyle and Gradient in one call
377*86d608b5SArmin Le Grand GetBindings()->GetDispatcher()->Execute(
378*86d608b5SArmin Le Grand SID_ATTR_FILL_GRADIENT, SFX_CALLMODE_RECORD, &aXFillGradientItem, &aXFillStyleItem, 0L);
379d74d90d6SArmin Le Grand mpLbFillAttr->SelectEntryPos(mnLastPosGradient);
3808dcb2a10SAndre Fischer }
3818dcb2a10SAndre Fischer }
3828dcb2a10SAndre Fischer }
3838dcb2a10SAndre Fischer else
384d74d90d6SArmin Le Grand {
3858dcb2a10SAndre Fischer mpLbFillAttr->Disable();
3868dcb2a10SAndre Fischer }
3878dcb2a10SAndre Fischer break;
388d74d90d6SArmin Le Grand }
3898dcb2a10SAndre Fischer case XFILL_HATCH:
3908dcb2a10SAndre Fischer {
3918dcb2a10SAndre Fischer mpLbFillAttr->Show();
3928dcb2a10SAndre Fischer mpToolBoxColor->Hide();
393d74d90d6SArmin Le Grand
3948dcb2a10SAndre Fischer if(pSh && pSh->GetItem(SID_HATCH_LIST))
3958dcb2a10SAndre Fischer {
396d74d90d6SArmin Le Grand if(!mpLbFillAttr->GetEntryCount())
3978dcb2a10SAndre Fischer {
398d74d90d6SArmin Le Grand const SvxHatchListItem aItem( *(const SvxHatchListItem*)(pSh->GetItem(SID_HATCH_LIST)));
3998dcb2a10SAndre Fischer mpLbFillAttr->Enable();
4008dcb2a10SAndre Fischer mpLbFillAttr->Clear();
4018dcb2a10SAndre Fischer mpLbFillAttr->Fill(aItem.GetHatchList());
4028dcb2a10SAndre Fischer }
4038dcb2a10SAndre Fischer
404a68b38dfSArmin Le Grand mpLbFillAttr->AdaptDropDownLineCountToMaximum();
40597e8a929SArmin Le Grand
406d74d90d6SArmin Le Grand if(LISTBOX_ENTRY_NOTFOUND != mnLastPosHatch)
4078dcb2a10SAndre Fischer {
408d74d90d6SArmin Le Grand const SvxHatchListItem aItem(*(const SvxHatchListItem*)(pSh->GetItem(SID_HATCH_LIST)));
409d74d90d6SArmin Le Grand
4108dcb2a10SAndre Fischer if(mnLastPosHatch < aItem.GetHatchList()->Count())
4118dcb2a10SAndre Fischer {
412d74d90d6SArmin Le Grand const XHatch aHatch = aItem.GetHatchList()->GetHatch(mnLastPosHatch)->GetHatch();
413d74d90d6SArmin Le Grand const XFillHatchItem aXFillHatchItem(mpLbFillAttr->GetSelectEntry(), aHatch);
414*86d608b5SArmin Le Grand
415*86d608b5SArmin Le Grand // #122676# change FillStyle and Hatch in one call
416*86d608b5SArmin Le Grand GetBindings()->GetDispatcher()->Execute(
417*86d608b5SArmin Le Grand SID_ATTR_FILL_HATCH, SFX_CALLMODE_RECORD, &aXFillHatchItem, &aXFillStyleItem, 0L);
418d74d90d6SArmin Le Grand mpLbFillAttr->SelectEntryPos(mnLastPosHatch);
4198dcb2a10SAndre Fischer }
4208dcb2a10SAndre Fischer }
4218dcb2a10SAndre Fischer }
4228dcb2a10SAndre Fischer else
423d74d90d6SArmin Le Grand {
4248dcb2a10SAndre Fischer mpLbFillAttr->Disable();
4258dcb2a10SAndre Fischer }
4268dcb2a10SAndre Fischer break;
427d74d90d6SArmin Le Grand }
4288dcb2a10SAndre Fischer case XFILL_BITMAP:
4298dcb2a10SAndre Fischer {
4308dcb2a10SAndre Fischer mpLbFillAttr->Show();
4318dcb2a10SAndre Fischer mpToolBoxColor->Hide();
432d74d90d6SArmin Le Grand
4338dcb2a10SAndre Fischer if(pSh && pSh->GetItem(SID_BITMAP_LIST))
4348dcb2a10SAndre Fischer {
435d74d90d6SArmin Le Grand if(!mpLbFillAttr->GetEntryCount())
4368dcb2a10SAndre Fischer {
437d74d90d6SArmin Le Grand const SvxBitmapListItem aItem( *(const SvxBitmapListItem*)(pSh->GetItem(SID_BITMAP_LIST)));
4388dcb2a10SAndre Fischer mpLbFillAttr->Enable();
4398dcb2a10SAndre Fischer mpLbFillAttr->Clear();
4408dcb2a10SAndre Fischer mpLbFillAttr->Fill(aItem.GetBitmapList());
4418dcb2a10SAndre Fischer }
4428dcb2a10SAndre Fischer
443a68b38dfSArmin Le Grand mpLbFillAttr->AdaptDropDownLineCountToMaximum();
44497e8a929SArmin Le Grand
445d74d90d6SArmin Le Grand if(LISTBOX_ENTRY_NOTFOUND != mnLastPosBitmap)
4468dcb2a10SAndre Fischer {
447d74d90d6SArmin Le Grand const SvxBitmapListItem aItem(*(const SvxBitmapListItem*)(pSh->GetItem(SID_BITMAP_LIST)));
448d74d90d6SArmin Le Grand
4498dcb2a10SAndre Fischer if(mnLastPosBitmap < aItem.GetBitmapList()->Count())
4508dcb2a10SAndre Fischer {
4518dcb2a10SAndre Fischer const XBitmapEntry* pXBitmapEntry = aItem.GetBitmapList()->GetBitmap(mnLastPosBitmap);
452d74d90d6SArmin Le Grand const XFillBitmapItem aXFillBitmapItem(mpLbFillAttr->GetSelectEntry(), pXBitmapEntry->GetGraphicObject());
453*86d608b5SArmin Le Grand
454*86d608b5SArmin Le Grand // #122676# change FillStyle and Bitmap in one call
455*86d608b5SArmin Le Grand GetBindings()->GetDispatcher()->Execute(
456*86d608b5SArmin Le Grand SID_ATTR_FILL_BITMAP, SFX_CALLMODE_RECORD, &aXFillBitmapItem, &aXFillStyleItem, 0L);
457d74d90d6SArmin Le Grand mpLbFillAttr->SelectEntryPos(mnLastPosBitmap);
4588dcb2a10SAndre Fischer }
4598dcb2a10SAndre Fischer }
4608dcb2a10SAndre Fischer }
4618dcb2a10SAndre Fischer else
462d74d90d6SArmin Le Grand {
4638dcb2a10SAndre Fischer mpLbFillAttr->Disable();
4648dcb2a10SAndre Fischer }
4658dcb2a10SAndre Fischer break;
4668dcb2a10SAndre Fischer }
467d74d90d6SArmin Le Grand }
468d74d90d6SArmin Le Grand
4698dcb2a10SAndre Fischer meLastXFS = (sal_uInt16)eXFS;
470d74d90d6SArmin Le Grand
471d74d90d6SArmin Le Grand if(XFILL_NONE != eXFS)
4728dcb2a10SAndre Fischer {
4738dcb2a10SAndre Fischer if(pToolBox)
474d74d90d6SArmin Le Grand {
4758dcb2a10SAndre Fischer mpLbFillType->Selected();
4768dcb2a10SAndre Fischer }
4778dcb2a10SAndre Fischer }
4786a606da0SAndre Fischer
4796a606da0SAndre Fischer maLayouter.Layout();
480d74d90d6SArmin Le Grand }
481d74d90d6SArmin Le Grand
4828dcb2a10SAndre Fischer return 0;
4838dcb2a10SAndre Fischer }
4848dcb2a10SAndre Fischer
4858dcb2a10SAndre Fischer
4868dcb2a10SAndre Fischer
IMPL_LINK(AreaPropertyPanel,SelectFillAttrHdl,ListBox *,pToolBox)4878dcb2a10SAndre Fischer IMPL_LINK( AreaPropertyPanel, SelectFillAttrHdl, ListBox*, pToolBox )
4888dcb2a10SAndre Fischer {
489d74d90d6SArmin Le Grand const XFillStyle eXFS = (XFillStyle)mpLbFillType->GetSelectEntryPos();
490d74d90d6SArmin Le Grand const XFillStyleItem aXFillStyleItem(eXFS);
4918dcb2a10SAndre Fischer SfxObjectShell* pSh = SfxObjectShell::Current();
4928dcb2a10SAndre Fischer
4938dcb2a10SAndre Fischer if(pToolBox)
4948dcb2a10SAndre Fischer {
495*86d608b5SArmin Le Grand // #122676# dependent from bFillStyleChange, do execute a single or two
496*86d608b5SArmin Le Grand // changes in one Execute call
497*86d608b5SArmin Le Grand const bool bFillStyleChange((XFillStyle) meLastXFS != eXFS);
4988dcb2a10SAndre Fischer
4998dcb2a10SAndre Fischer switch(eXFS)
5008dcb2a10SAndre Fischer {
5018dcb2a10SAndre Fischer case XFILL_SOLID:
502*86d608b5SArmin Le Grand {
503*86d608b5SArmin Le Grand if(bFillStyleChange)
504*86d608b5SArmin Le Grand {
505*86d608b5SArmin Le Grand // #122676# Single FillStyle change call needed here
506*86d608b5SArmin Le Grand GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_STYLE, SFX_CALLMODE_RECORD, &aXFillStyleItem, 0L);
507*86d608b5SArmin Le Grand }
5088dcb2a10SAndre Fischer break;
509*86d608b5SArmin Le Grand }
5108dcb2a10SAndre Fischer case XFILL_GRADIENT:
5118dcb2a10SAndre Fischer {
5128dcb2a10SAndre Fischer sal_uInt16 nPos = mpLbFillAttr->GetSelectEntryPos();
5138dcb2a10SAndre Fischer
514d74d90d6SArmin Le Grand if(LISTBOX_ENTRY_NOTFOUND == nPos)
5158dcb2a10SAndre Fischer {
516d74d90d6SArmin Le Grand nPos = mnLastPosGradient;
517d74d90d6SArmin Le Grand }
518d74d90d6SArmin Le Grand
519d74d90d6SArmin Le Grand if(LISTBOX_ENTRY_NOTFOUND != nPos && pSh && pSh->GetItem(SID_GRADIENT_LIST))
520d74d90d6SArmin Le Grand {
521d74d90d6SArmin Le Grand const SvxGradientListItem aItem(*(const SvxGradientListItem*)(pSh->GetItem(SID_GRADIENT_LIST)));
522d74d90d6SArmin Le Grand
5238dcb2a10SAndre Fischer if(nPos < aItem.GetGradientList()->Count())
5248dcb2a10SAndre Fischer {
525d74d90d6SArmin Le Grand const XGradient aGradient = aItem.GetGradientList()->GetGradient(nPos)->GetGradient();
526d74d90d6SArmin Le Grand const XFillGradientItem aXFillGradientItem(mpLbFillAttr->GetSelectEntry(), aGradient);
527*86d608b5SArmin Le Grand
528*86d608b5SArmin Le Grand // #122676# Change FillStale and Gradinet in one call
529*86d608b5SArmin Le Grand GetBindings()->GetDispatcher()->Execute(
530*86d608b5SArmin Le Grand SID_ATTR_FILL_GRADIENT, SFX_CALLMODE_RECORD, &aXFillGradientItem,
531*86d608b5SArmin Le Grand bFillStyleChange ? &aXFillStyleItem : 0L, 0L);
5328dcb2a10SAndre Fischer }
5338dcb2a10SAndre Fischer }
534d74d90d6SArmin Le Grand
535d74d90d6SArmin Le Grand if(LISTBOX_ENTRY_NOTFOUND != nPos)
536d74d90d6SArmin Le Grand {
5378dcb2a10SAndre Fischer mnLastPosGradient = nPos;
5388dcb2a10SAndre Fischer }
5398dcb2a10SAndre Fischer break;
540d74d90d6SArmin Le Grand }
5418dcb2a10SAndre Fischer case XFILL_HATCH:
5428dcb2a10SAndre Fischer {
5438dcb2a10SAndre Fischer sal_uInt16 nPos = mpLbFillAttr->GetSelectEntryPos();
544d74d90d6SArmin Le Grand
545d74d90d6SArmin Le Grand if(LISTBOX_ENTRY_NOTFOUND == nPos)
5468dcb2a10SAndre Fischer {
547d74d90d6SArmin Le Grand nPos = mnLastPosHatch;
548d74d90d6SArmin Le Grand }
549d74d90d6SArmin Le Grand
550d74d90d6SArmin Le Grand if(LISTBOX_ENTRY_NOTFOUND != nPos && pSh && pSh->GetItem(SID_HATCH_LIST))
551d74d90d6SArmin Le Grand {
552d74d90d6SArmin Le Grand const SvxHatchListItem aItem(*(const SvxHatchListItem*)(pSh->GetItem(SID_HATCH_LIST)));
553d74d90d6SArmin Le Grand
5548dcb2a10SAndre Fischer if(nPos < aItem.GetHatchList()->Count())
5558dcb2a10SAndre Fischer {
556d74d90d6SArmin Le Grand const XHatch aHatch = aItem.GetHatchList()->GetHatch(nPos)->GetHatch();
557d74d90d6SArmin Le Grand const XFillHatchItem aXFillHatchItem( mpLbFillAttr->GetSelectEntry(), aHatch);
558*86d608b5SArmin Le Grand
559*86d608b5SArmin Le Grand // #122676# Change FillStale and Hatch in one call
560*86d608b5SArmin Le Grand GetBindings()->GetDispatcher()->Execute(
561*86d608b5SArmin Le Grand SID_ATTR_FILL_HATCH, SFX_CALLMODE_RECORD, &aXFillHatchItem,
562*86d608b5SArmin Le Grand bFillStyleChange ? &aXFillStyleItem : 0L, 0L);
5638dcb2a10SAndre Fischer }
5648dcb2a10SAndre Fischer }
565d74d90d6SArmin Le Grand
566d74d90d6SArmin Le Grand if(LISTBOX_ENTRY_NOTFOUND != nPos)
567d74d90d6SArmin Le Grand {
5688dcb2a10SAndre Fischer mnLastPosHatch = nPos;
5698dcb2a10SAndre Fischer }
5708dcb2a10SAndre Fischer break;
571d74d90d6SArmin Le Grand }
5728dcb2a10SAndre Fischer case XFILL_BITMAP:
5738dcb2a10SAndre Fischer {
5748dcb2a10SAndre Fischer sal_uInt16 nPos = mpLbFillAttr->GetSelectEntryPos();
575d74d90d6SArmin Le Grand
576d74d90d6SArmin Le Grand if(LISTBOX_ENTRY_NOTFOUND == nPos)
5778dcb2a10SAndre Fischer {
578d74d90d6SArmin Le Grand nPos = mnLastPosBitmap;
579d74d90d6SArmin Le Grand }
580d74d90d6SArmin Le Grand
581d74d90d6SArmin Le Grand if(LISTBOX_ENTRY_NOTFOUND != nPos && pSh && pSh->GetItem(SID_BITMAP_LIST))
582d74d90d6SArmin Le Grand {
583d74d90d6SArmin Le Grand const SvxBitmapListItem aItem(*(const SvxBitmapListItem*)(pSh->GetItem(SID_BITMAP_LIST)));
584d74d90d6SArmin Le Grand
5858dcb2a10SAndre Fischer if(nPos < aItem.GetBitmapList()->Count())
5868dcb2a10SAndre Fischer {
5878dcb2a10SAndre Fischer const XBitmapEntry* pXBitmapEntry = aItem.GetBitmapList()->GetBitmap(nPos);
588d74d90d6SArmin Le Grand const XFillBitmapItem aXFillBitmapItem(mpLbFillAttr->GetSelectEntry(), pXBitmapEntry->GetGraphicObject());
589*86d608b5SArmin Le Grand
590*86d608b5SArmin Le Grand // #122676# Change FillStale and Bitmap in one call
591*86d608b5SArmin Le Grand GetBindings()->GetDispatcher()->Execute(
592*86d608b5SArmin Le Grand SID_ATTR_FILL_BITMAP, SFX_CALLMODE_RECORD, &aXFillBitmapItem,
593*86d608b5SArmin Le Grand bFillStyleChange ? &aXFillStyleItem : 0L, 0L);
5948dcb2a10SAndre Fischer }
5958dcb2a10SAndre Fischer }
596d74d90d6SArmin Le Grand
597d74d90d6SArmin Le Grand if(LISTBOX_ENTRY_NOTFOUND != nPos)
598d74d90d6SArmin Le Grand {
5998dcb2a10SAndre Fischer mnLastPosBitmap = nPos;
6008dcb2a10SAndre Fischer }
6018dcb2a10SAndre Fischer break;
602d74d90d6SArmin Le Grand }
603d74d90d6SArmin Le Grand default: break;
604d74d90d6SArmin Le Grand }
605d74d90d6SArmin Le Grand }
6068dcb2a10SAndre Fischer
6078dcb2a10SAndre Fischer return 0;
6088dcb2a10SAndre Fischer }
6098dcb2a10SAndre Fischer
6108dcb2a10SAndre Fischer
IMPL_LINK(AreaPropertyPanel,ToolBoxColorDropHdl,ToolBox *,pToolBox)6118dcb2a10SAndre Fischer IMPL_LINK(AreaPropertyPanel, ToolBoxColorDropHdl, ToolBox*, pToolBox)
6128dcb2a10SAndre Fischer {
613d74d90d6SArmin Le Grand const sal_uInt16 nId = pToolBox->GetCurItemId();
6148dcb2a10SAndre Fischer
615d74d90d6SArmin Le Grand if(TBI_COLOR == nId)
6168dcb2a10SAndre Fischer {
6178dcb2a10SAndre Fischer maColorPopup.Show(*pToolBox);
618d74d90d6SArmin Le Grand
6198dcb2a10SAndre Fischer if (mpColorItem)
620d74d90d6SArmin Le Grand {
6218dcb2a10SAndre Fischer maColorPopup.SetCurrentColor(mpColorItem->GetColorValue(), mbColorAvail);
622d74d90d6SArmin Le Grand }
6238dcb2a10SAndre Fischer else
624d74d90d6SArmin Le Grand {
6258dcb2a10SAndre Fischer maColorPopup.SetCurrentColor(COL_WHITE, false);
6268dcb2a10SAndre Fischer }
627d74d90d6SArmin Le Grand }
6288dcb2a10SAndre Fischer
6298dcb2a10SAndre Fischer return 0;
6308dcb2a10SAndre Fischer }
6318dcb2a10SAndre Fischer
6328dcb2a10SAndre Fischer
6338dcb2a10SAndre Fischer
SetColor(const String & rsColorName,const Color aColor)6348dcb2a10SAndre Fischer void AreaPropertyPanel::SetColor (
6358dcb2a10SAndre Fischer const String& rsColorName,
6368dcb2a10SAndre Fischer const Color aColor)
6378dcb2a10SAndre Fischer {
638d74d90d6SArmin Le Grand const XFillColorItem aXFillColorItem(rsColorName, aColor);
6398dcb2a10SAndre Fischer mpBindings->GetDispatcher()->Execute(SID_ATTR_FILL_COLOR, SFX_CALLMODE_RECORD, &aXFillColorItem, 0L);
6408dcb2a10SAndre Fischer maLastColor = aColor;
6418dcb2a10SAndre Fischer }
6428dcb2a10SAndre Fischer
6438dcb2a10SAndre Fischer
6448dcb2a10SAndre Fischer
6458dcb2a10SAndre Fischer
CreateTransparencyGradientControl(PopupContainer * pParent)6468dcb2a10SAndre Fischer PopupControl* AreaPropertyPanel::CreateTransparencyGradientControl (PopupContainer* pParent)
6478dcb2a10SAndre Fischer {
6488dcb2a10SAndre Fischer return new AreaTransparencyGradientControl(pParent, *this);
6498dcb2a10SAndre Fischer }
6508dcb2a10SAndre Fischer
6518dcb2a10SAndre Fischer
6528dcb2a10SAndre Fischer
6538dcb2a10SAndre Fischer
CreateColorPopupControl(PopupContainer * pParent)6548dcb2a10SAndre Fischer PopupControl* AreaPropertyPanel::CreateColorPopupControl (PopupContainer* pParent)
6558dcb2a10SAndre Fischer {
6568dcb2a10SAndre Fischer return new ColorControl(
6578dcb2a10SAndre Fischer pParent,
6588dcb2a10SAndre Fischer mpBindings,
6598dcb2a10SAndre Fischer SVX_RES(RID_POPUPPANEL_AERAPAGE_COLOR),
6608dcb2a10SAndre Fischer SVX_RES(VS_COLOR),
6618dcb2a10SAndre Fischer ::boost::bind(&AreaPropertyPanel::GetLastColor, this),
6628dcb2a10SAndre Fischer ::boost::bind(&AreaPropertyPanel::SetColor, this, _1,_2),
6638dcb2a10SAndre Fischer pParent,
6648dcb2a10SAndre Fischer 0);
6658dcb2a10SAndre Fischer }
6668dcb2a10SAndre Fischer
6678dcb2a10SAndre Fischer
6688dcb2a10SAndre Fischer
6698dcb2a10SAndre Fischer
SetupIcons(void)6708dcb2a10SAndre Fischer void AreaPropertyPanel::SetupIcons(void)
6718dcb2a10SAndre Fischer {
6728dcb2a10SAndre Fischer if(Theme::GetBoolean(Theme::Bool_UseSymphonyIcons))
6738dcb2a10SAndre Fischer {
6748dcb2a10SAndre Fischer // todo
6758dcb2a10SAndre Fischer }
6768dcb2a10SAndre Fischer else
6778dcb2a10SAndre Fischer {
6788dcb2a10SAndre Fischer // todo
6798dcb2a10SAndre Fischer }
6808dcb2a10SAndre Fischer }
6818dcb2a10SAndre Fischer
6828dcb2a10SAndre Fischer
6838dcb2a10SAndre Fischer
Create(Window * pParent,const cssu::Reference<css::frame::XFrame> & rxFrame,SfxBindings * pBindings)6848dcb2a10SAndre Fischer AreaPropertyPanel* AreaPropertyPanel::Create (
6858dcb2a10SAndre Fischer Window* pParent,
6868dcb2a10SAndre Fischer const cssu::Reference<css::frame::XFrame>& rxFrame,
6878dcb2a10SAndre Fischer SfxBindings* pBindings)
6888dcb2a10SAndre Fischer {
6898dcb2a10SAndre Fischer if (pParent == NULL)
6908dcb2a10SAndre Fischer throw lang::IllegalArgumentException(A2S("no parent Window given to AreaPropertyPanel::Create"), NULL, 0);
6918dcb2a10SAndre Fischer if ( ! rxFrame.is())
6928dcb2a10SAndre Fischer throw lang::IllegalArgumentException(A2S("no XFrame given to AreaPropertyPanel::Create"), NULL, 1);
6938dcb2a10SAndre Fischer if (pBindings == NULL)
6948dcb2a10SAndre Fischer throw lang::IllegalArgumentException(A2S("no SfxBindings given to AreaPropertyPanel::Create"), NULL, 2);
6958dcb2a10SAndre Fischer
6968dcb2a10SAndre Fischer return new AreaPropertyPanel(
6978dcb2a10SAndre Fischer pParent,
6988dcb2a10SAndre Fischer rxFrame,
6998dcb2a10SAndre Fischer pBindings);
7008dcb2a10SAndre Fischer }
7018dcb2a10SAndre Fischer
7028dcb2a10SAndre Fischer
7038dcb2a10SAndre Fischer
DataChanged(const DataChangedEvent & rEvent)7048dcb2a10SAndre Fischer void AreaPropertyPanel::DataChanged(
7058dcb2a10SAndre Fischer const DataChangedEvent& rEvent)
7068dcb2a10SAndre Fischer {
7078dcb2a10SAndre Fischer (void)rEvent;
7088dcb2a10SAndre Fischer
7098dcb2a10SAndre Fischer SetupIcons();
7108dcb2a10SAndre Fischer }
7118dcb2a10SAndre Fischer
7128dcb2a10SAndre Fischer
7138dcb2a10SAndre Fischer
ImpUpdateTransparencies()7148dcb2a10SAndre Fischer void AreaPropertyPanel::ImpUpdateTransparencies()
7158dcb2a10SAndre Fischer {
716d74d90d6SArmin Le Grand if(mpTransparanceItem.get() && mpFloatTransparenceItem.get())
7178dcb2a10SAndre Fischer {
7188dcb2a10SAndre Fischer bool bZeroValue(false);
7198dcb2a10SAndre Fischer
7208dcb2a10SAndre Fischer if(mpTransparanceItem.get())
7218dcb2a10SAndre Fischer {
7228dcb2a10SAndre Fischer const sal_uInt16 nValue(mpTransparanceItem->GetValue());
7238dcb2a10SAndre Fischer
7248dcb2a10SAndre Fischer if(!nValue)
7258dcb2a10SAndre Fischer {
7268dcb2a10SAndre Fischer bZeroValue = true;
7278dcb2a10SAndre Fischer }
7288dcb2a10SAndre Fischer else if(nValue <= 100)
7298dcb2a10SAndre Fischer {
7308dcb2a10SAndre Fischer mpLBTransType->Enable();
73147df10a6SArmin Le Grand mpTrspTextFT->Enable();
7328dcb2a10SAndre Fischer mpLBTransType->SelectEntryPos(1);
7338dcb2a10SAndre Fischer mpBTNGradient->Hide();
7348dcb2a10SAndre Fischer mpMTRTransparent->Show();
7358dcb2a10SAndre Fischer mpMTRTransparent->Enable();
7368dcb2a10SAndre Fischer mpMTRTransparent->SetValue(nValue);
7378dcb2a10SAndre Fischer }
7388dcb2a10SAndre Fischer
739eb6ac606SArmin Le Grand if(!bZeroValue)
740eb6ac606SArmin Le Grand {
7418dcb2a10SAndre Fischer maTrGrPopup.Hide();
7428dcb2a10SAndre Fischer }
743eb6ac606SArmin Le Grand }
7448dcb2a10SAndre Fischer
7458dcb2a10SAndre Fischer if(bZeroValue && mpFloatTransparenceItem.get())
7468dcb2a10SAndre Fischer {
7478dcb2a10SAndre Fischer if(mpFloatTransparenceItem->IsEnabled())
7488dcb2a10SAndre Fischer {
7498dcb2a10SAndre Fischer const XGradient& rGradient = mpFloatTransparenceItem->GetGradientValue();
7508dcb2a10SAndre Fischer const bool bHighContrast(GetSettings().GetStyleSettings().GetHighContrastMode());
7518dcb2a10SAndre Fischer sal_uInt16 nEntryPos(0);
7528dcb2a10SAndre Fischer Image* pImage = 0;
7538dcb2a10SAndre Fischer
7548dcb2a10SAndre Fischer mpLBTransType->Enable();
75547df10a6SArmin Le Grand mpTrspTextFT->Enable();
7568dcb2a10SAndre Fischer mpMTRTransparent->Hide();
7578dcb2a10SAndre Fischer mpBTNGradient->Enable();
7588dcb2a10SAndre Fischer mpBTNGradient->Show();
7598dcb2a10SAndre Fischer
7608dcb2a10SAndre Fischer switch(rGradient.GetGradientStyle())
7618dcb2a10SAndre Fischer {
7628dcb2a10SAndre Fischer case XGRAD_LINEAR:
7638dcb2a10SAndre Fischer {
7648dcb2a10SAndre Fischer nEntryPos = 2;
7658dcb2a10SAndre Fischer pImage = bHighContrast ? &maImgLinearH : &maImgLinear;
7668dcb2a10SAndre Fischer break;
7678dcb2a10SAndre Fischer }
7688dcb2a10SAndre Fischer case XGRAD_AXIAL:
7698dcb2a10SAndre Fischer {
7708dcb2a10SAndre Fischer nEntryPos = 3;
7718dcb2a10SAndre Fischer pImage = bHighContrast ? &maImgAxialH : &maImgAxial;
7728dcb2a10SAndre Fischer break;
7738dcb2a10SAndre Fischer }
7748dcb2a10SAndre Fischer case XGRAD_RADIAL:
7758dcb2a10SAndre Fischer {
7768dcb2a10SAndre Fischer nEntryPos = 4;
7778dcb2a10SAndre Fischer pImage = bHighContrast ? &maImgRadialH : &maImgRadial;
7788dcb2a10SAndre Fischer break;
7798dcb2a10SAndre Fischer }
7808dcb2a10SAndre Fischer case XGRAD_ELLIPTICAL:
7818dcb2a10SAndre Fischer {
7828dcb2a10SAndre Fischer nEntryPos = 5;
7838dcb2a10SAndre Fischer pImage = bHighContrast ? &maImgElliH : &maImgElli;
7848dcb2a10SAndre Fischer break;
7858dcb2a10SAndre Fischer }
7868dcb2a10SAndre Fischer case XGRAD_SQUARE:
7878dcb2a10SAndre Fischer {
7888dcb2a10SAndre Fischer nEntryPos = 6;
7898dcb2a10SAndre Fischer pImage = bHighContrast ? &maImgQuadH : &maImgQuad;
7908dcb2a10SAndre Fischer break;
7918dcb2a10SAndre Fischer }
7928dcb2a10SAndre Fischer case XGRAD_RECT:
7938dcb2a10SAndre Fischer {
7948dcb2a10SAndre Fischer nEntryPos = 7;
7958dcb2a10SAndre Fischer pImage = bHighContrast ? &maImgSquareH : &maImgSquare;
7968dcb2a10SAndre Fischer break;
7978dcb2a10SAndre Fischer }
7988dcb2a10SAndre Fischer }
7998dcb2a10SAndre Fischer
8008dcb2a10SAndre Fischer mpLBTransType->SelectEntryPos(nEntryPos);
8018dcb2a10SAndre Fischer mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT, *pImage);
8028dcb2a10SAndre Fischer bZeroValue = false;
8038dcb2a10SAndre Fischer }
8048dcb2a10SAndre Fischer else
8058dcb2a10SAndre Fischer {
8068dcb2a10SAndre Fischer bZeroValue = true;
8078dcb2a10SAndre Fischer }
8088dcb2a10SAndre Fischer }
8098dcb2a10SAndre Fischer
8108dcb2a10SAndre Fischer if(bZeroValue)
8118dcb2a10SAndre Fischer {
8128dcb2a10SAndre Fischer mpLBTransType->Enable();
81347df10a6SArmin Le Grand mpTrspTextFT->Enable();
8148dcb2a10SAndre Fischer mpLBTransType->SelectEntryPos(0);
8158dcb2a10SAndre Fischer mpBTNGradient->Hide();
8168dcb2a10SAndre Fischer mpMTRTransparent->Enable();
8178dcb2a10SAndre Fischer mpMTRTransparent->Show();
8188dcb2a10SAndre Fischer mpMTRTransparent->SetValue(0);
8198dcb2a10SAndre Fischer }
8208dcb2a10SAndre Fischer }
8218dcb2a10SAndre Fischer else
8228dcb2a10SAndre Fischer {
8238dcb2a10SAndre Fischer // no transparency at all
8248dcb2a10SAndre Fischer mpLBTransType->SetNoSelection();
82547df10a6SArmin Le Grand mpLBTransType->Disable();
82647df10a6SArmin Le Grand mpTrspTextFT->Disable();
8278dcb2a10SAndre Fischer mpMTRTransparent->Disable();
8288dcb2a10SAndre Fischer mpMTRTransparent->Show();
8298dcb2a10SAndre Fischer mpBTNGradient->Disable();
8308dcb2a10SAndre Fischer mpBTNGradient->Hide();
8318dcb2a10SAndre Fischer }
8328dcb2a10SAndre Fischer }
8338dcb2a10SAndre Fischer
834eb6ac606SArmin Le Grand
835eb6ac606SArmin Le Grand
NotifyItemUpdate(sal_uInt16 nSID,SfxItemState eState,const SfxPoolItem * pState,const bool bIsEnabled)8368dcb2a10SAndre Fischer void AreaPropertyPanel::NotifyItemUpdate(
8378dcb2a10SAndre Fischer sal_uInt16 nSID,
8388dcb2a10SAndre Fischer SfxItemState eState,
83945da7d5eSAndre Fischer const SfxPoolItem* pState,
84045da7d5eSAndre Fischer const bool bIsEnabled)
8418dcb2a10SAndre Fischer {
84245da7d5eSAndre Fischer (void)bIsEnabled;
843d74d90d6SArmin Le Grand const bool bDisabled(SFX_ITEM_DISABLED == eState);
84445da7d5eSAndre Fischer
845d74d90d6SArmin Le Grand switch(nSID)
846d74d90d6SArmin Le Grand {
847d74d90d6SArmin Le Grand case SID_ATTR_FILL_TRANSPARENCE:
848d74d90d6SArmin Le Grand case SID_ATTR_FILL_FLOATTRANSPARENCE:
849d74d90d6SArmin Le Grand {
8508dcb2a10SAndre Fischer bool bFillTransparenceChanged(false);
8518dcb2a10SAndre Fischer
8528dcb2a10SAndre Fischer if(SID_ATTR_FILL_TRANSPARENCE == nSID)
8538dcb2a10SAndre Fischer {
8548dcb2a10SAndre Fischer bFillTransparenceChanged = true;
8558dcb2a10SAndre Fischer
8568dcb2a10SAndre Fischer if(eState >= SFX_ITEM_AVAILABLE)
8578dcb2a10SAndre Fischer {
8588dcb2a10SAndre Fischer const SfxUInt16Item* pItem = dynamic_cast< const SfxUInt16Item* >(pState);
8598dcb2a10SAndre Fischer
8608dcb2a10SAndre Fischer if(pItem && (!mpTransparanceItem || *pItem != *mpTransparanceItem))
8618dcb2a10SAndre Fischer {
8628dcb2a10SAndre Fischer mpTransparanceItem.reset((SfxUInt16Item*)pItem->Clone());
8638dcb2a10SAndre Fischer }
8648dcb2a10SAndre Fischer else
8658dcb2a10SAndre Fischer {
8668dcb2a10SAndre Fischer mpTransparanceItem.reset();
8678dcb2a10SAndre Fischer }
8688dcb2a10SAndre Fischer }
8698dcb2a10SAndre Fischer else
8708dcb2a10SAndre Fischer {
8718dcb2a10SAndre Fischer mpTransparanceItem.reset();
8728dcb2a10SAndre Fischer }
8738dcb2a10SAndre Fischer }
874d74d90d6SArmin Le Grand else // if(SID_ATTR_FILL_FLOATTRANSPARENCE == nSID)
8758dcb2a10SAndre Fischer {
8768dcb2a10SAndre Fischer bFillTransparenceChanged = true;
8778dcb2a10SAndre Fischer
8788dcb2a10SAndre Fischer if(eState >= SFX_ITEM_AVAILABLE)
8798dcb2a10SAndre Fischer {
8808dcb2a10SAndre Fischer const XFillFloatTransparenceItem* pItem = dynamic_cast< const XFillFloatTransparenceItem* >(pState);
8818dcb2a10SAndre Fischer
8828dcb2a10SAndre Fischer if(pItem && (!mpFloatTransparenceItem || *pItem != *mpFloatTransparenceItem))
8838dcb2a10SAndre Fischer {
8848dcb2a10SAndre Fischer mpFloatTransparenceItem.reset((XFillFloatTransparenceItem*)pItem->Clone());
8858dcb2a10SAndre Fischer }
8868dcb2a10SAndre Fischer else
8878dcb2a10SAndre Fischer {
8888dcb2a10SAndre Fischer mpFloatTransparenceItem.reset();
8898dcb2a10SAndre Fischer }
8908dcb2a10SAndre Fischer }
8918dcb2a10SAndre Fischer else
8928dcb2a10SAndre Fischer {
8938dcb2a10SAndre Fischer mpFloatTransparenceItem.reset();
8948dcb2a10SAndre Fischer }
8958dcb2a10SAndre Fischer }
8968dcb2a10SAndre Fischer
8978dcb2a10SAndre Fischer if(bFillTransparenceChanged)
8988dcb2a10SAndre Fischer {
8998dcb2a10SAndre Fischer // update transparency settings dependent of mpTransparanceItem and mpFloatTransparenceItem
9008dcb2a10SAndre Fischer ImpUpdateTransparencies();
9018dcb2a10SAndre Fischer }
902d74d90d6SArmin Le Grand break;
903d74d90d6SArmin Le Grand }
904d74d90d6SArmin Le Grand case SID_ATTR_FILL_STYLE:
9058dcb2a10SAndre Fischer {
906d74d90d6SArmin Le Grand if(bDisabled)
9078dcb2a10SAndre Fischer {
9088dcb2a10SAndre Fischer mpLbFillType->Disable();
90947df10a6SArmin Le Grand mpColorTextFT->Disable();
9108dcb2a10SAndre Fischer mpLbFillType->SetNoSelection();
9118dcb2a10SAndre Fischer mpLbFillAttr->Show();
9128dcb2a10SAndre Fischer mpLbFillAttr->Disable();
9138dcb2a10SAndre Fischer mpLbFillAttr->SetNoSelection();
9148dcb2a10SAndre Fischer mpToolBoxColor->Hide();
9158dcb2a10SAndre Fischer meLastXFS = -1;
9168dcb2a10SAndre Fischer mpStyleItem.reset();
9178dcb2a10SAndre Fischer }
9188dcb2a10SAndre Fischer
919d74d90d6SArmin Le Grand if(eState >= SFX_ITEM_AVAILABLE)
920d74d90d6SArmin Le Grand {
921d74d90d6SArmin Le Grand const XFillStyleItem* pItem = dynamic_cast< const XFillStyleItem* >(pState);
922d74d90d6SArmin Le Grand
923d74d90d6SArmin Le Grand if(pItem)
924d74d90d6SArmin Le Grand {
925d74d90d6SArmin Le Grand mpStyleItem.reset(dynamic_cast< XFillStyleItem* >(pItem->Clone()));
926d74d90d6SArmin Le Grand mpLbFillType->Enable();
92747df10a6SArmin Le Grand mpColorTextFT->Enable();
928d74d90d6SArmin Le Grand XFillStyle eXFS = (XFillStyle)mpStyleItem->GetValue();
9298dcb2a10SAndre Fischer meLastXFS = eXFS;
930d74d90d6SArmin Le Grand mpLbFillType->SelectEntryPos(sal::static_int_cast< sal_uInt16 >(eXFS));
931d74d90d6SArmin Le Grand
932d74d90d6SArmin Le Grand if(XFILL_NONE == eXFS)
9338dcb2a10SAndre Fischer {
9348dcb2a10SAndre Fischer mpLbFillAttr->SetNoSelection();
9358dcb2a10SAndre Fischer mpLbFillAttr->Disable();
9368dcb2a10SAndre Fischer }
937d74d90d6SArmin Le Grand
9388dcb2a10SAndre Fischer Update();
939d74d90d6SArmin Le Grand break;
9408dcb2a10SAndre Fischer }
941d74d90d6SArmin Le Grand }
942d74d90d6SArmin Le Grand
9438dcb2a10SAndre Fischer mpLbFillType->SetNoSelection();
9448dcb2a10SAndre Fischer mpLbFillAttr->Show();
9458dcb2a10SAndre Fischer mpLbFillAttr->Disable();
9468dcb2a10SAndre Fischer mpLbFillAttr->SetNoSelection();
9478dcb2a10SAndre Fischer mpToolBoxColor->Hide();
948d74d90d6SArmin Le Grand meLastXFS = -1;
9498dcb2a10SAndre Fischer mpStyleItem.reset();
950d74d90d6SArmin Le Grand break;
9518dcb2a10SAndre Fischer }
952d74d90d6SArmin Le Grand case SID_ATTR_FILL_COLOR:
9538dcb2a10SAndre Fischer {
9548dcb2a10SAndre Fischer if(SFX_ITEM_AVAILABLE == eState)
9558dcb2a10SAndre Fischer {
9568dcb2a10SAndre Fischer mpColorItem.reset(pState ? (XFillColorItem*)pState->Clone() : 0);
9578dcb2a10SAndre Fischer }
958d74d90d6SArmin Le Grand
959d74d90d6SArmin Le Grand if(mpStyleItem && XFILL_SOLID == (XFillStyle)mpStyleItem->GetValue())
9608dcb2a10SAndre Fischer {
9618dcb2a10SAndre Fischer mpLbFillAttr->Hide();
9628dcb2a10SAndre Fischer mpToolBoxColor->Show();
963d74d90d6SArmin Le Grand
9648dcb2a10SAndre Fischer if(SFX_ITEM_AVAILABLE == eState)
9658dcb2a10SAndre Fischer {
9668dcb2a10SAndre Fischer mpToolBoxColor->Enable();
967d74d90d6SArmin Le Grand mbColorAvail = true;
9688dcb2a10SAndre Fischer // maLastColor = mpColorItem->GetColorValue();
9698dcb2a10SAndre Fischer Update();
9708dcb2a10SAndre Fischer }
9718dcb2a10SAndre Fischer else if(SFX_ITEM_DISABLED == eState)
9728dcb2a10SAndre Fischer {
9738dcb2a10SAndre Fischer mpToolBoxColor->Disable();
974d74d90d6SArmin Le Grand mbColorAvail = false;
9758dcb2a10SAndre Fischer mpColorUpdater->Update(COL_WHITE);
9768dcb2a10SAndre Fischer }
9778dcb2a10SAndre Fischer else
9788dcb2a10SAndre Fischer {
979d74d90d6SArmin Le Grand mbColorAvail = false;
9808dcb2a10SAndre Fischer mpColorUpdater->Update(COL_WHITE);
9818dcb2a10SAndre Fischer }
9828dcb2a10SAndre Fischer }
983d74d90d6SArmin Le Grand break;
9848dcb2a10SAndre Fischer }
985d74d90d6SArmin Le Grand case SID_ATTR_FILL_GRADIENT:
9868dcb2a10SAndre Fischer {
9878dcb2a10SAndre Fischer if(SFX_ITEM_AVAILABLE == eState)
9888dcb2a10SAndre Fischer {
9898dcb2a10SAndre Fischer mpFillGradientItem.reset(pState ? (XFillGradientItem*)pState->Clone() : 0);
9908dcb2a10SAndre Fischer }
991d74d90d6SArmin Le Grand
992d74d90d6SArmin Le Grand if(mpStyleItem && XFILL_GRADIENT == (XFillStyle)mpStyleItem->GetValue())
9938dcb2a10SAndre Fischer {
9948dcb2a10SAndre Fischer mpLbFillAttr->Show();
9958dcb2a10SAndre Fischer mpToolBoxColor->Hide();
996d74d90d6SArmin Le Grand
9978dcb2a10SAndre Fischer if(SFX_ITEM_AVAILABLE == eState)
9988dcb2a10SAndre Fischer {
9998dcb2a10SAndre Fischer mpLbFillAttr->Enable();
10008dcb2a10SAndre Fischer Update();
10018dcb2a10SAndre Fischer }
10028dcb2a10SAndre Fischer else if(SFX_ITEM_DISABLED == eState )
10038dcb2a10SAndre Fischer {
10048dcb2a10SAndre Fischer mpLbFillAttr->Disable();
10058dcb2a10SAndre Fischer mpLbFillAttr->SetNoSelection();
10068dcb2a10SAndre Fischer }
10078dcb2a10SAndre Fischer else
1008d74d90d6SArmin Le Grand {
10098dcb2a10SAndre Fischer mpLbFillAttr->SetNoSelection();
10108dcb2a10SAndre Fischer }
10118dcb2a10SAndre Fischer }
1012d74d90d6SArmin Le Grand break;
1013d74d90d6SArmin Le Grand }
1014d74d90d6SArmin Le Grand case SID_ATTR_FILL_HATCH:
10158dcb2a10SAndre Fischer {
10168dcb2a10SAndre Fischer if(SFX_ITEM_AVAILABLE == eState)
10178dcb2a10SAndre Fischer {
10188dcb2a10SAndre Fischer mpHatchItem.reset(pState ? (XFillHatchItem*)pState->Clone() : 0);
10198dcb2a10SAndre Fischer }
1020d74d90d6SArmin Le Grand
1021d74d90d6SArmin Le Grand if(mpStyleItem && XFILL_HATCH == (XFillStyle)mpStyleItem->GetValue())
10228dcb2a10SAndre Fischer {
10238dcb2a10SAndre Fischer mpLbFillAttr->Show();
10248dcb2a10SAndre Fischer mpToolBoxColor->Hide();
1025d74d90d6SArmin Le Grand
10268dcb2a10SAndre Fischer if(SFX_ITEM_AVAILABLE == eState)
10278dcb2a10SAndre Fischer {
10288dcb2a10SAndre Fischer mpLbFillAttr->Enable();
10298dcb2a10SAndre Fischer Update();
10308dcb2a10SAndre Fischer }
10318dcb2a10SAndre Fischer else if(SFX_ITEM_DISABLED == eState )
10328dcb2a10SAndre Fischer {
10338dcb2a10SAndre Fischer mpLbFillAttr->Disable();
10348dcb2a10SAndre Fischer mpLbFillAttr->SetNoSelection();
10358dcb2a10SAndre Fischer }
10368dcb2a10SAndre Fischer else
1037d74d90d6SArmin Le Grand {
10388dcb2a10SAndre Fischer mpLbFillAttr->SetNoSelection();
10398dcb2a10SAndre Fischer }
10408dcb2a10SAndre Fischer }
1041d74d90d6SArmin Le Grand break;
1042d74d90d6SArmin Le Grand }
1043d74d90d6SArmin Le Grand case SID_ATTR_FILL_BITMAP:
10448dcb2a10SAndre Fischer {
10458dcb2a10SAndre Fischer if(SFX_ITEM_AVAILABLE == eState)
10468dcb2a10SAndre Fischer {
10478dcb2a10SAndre Fischer mpBitmapItem.reset(pState ? (XFillBitmapItem*)pState->Clone() : 0);
10488dcb2a10SAndre Fischer }
1049d74d90d6SArmin Le Grand
1050d74d90d6SArmin Le Grand if(mpStyleItem && XFILL_BITMAP == (XFillStyle)mpStyleItem->GetValue())
10518dcb2a10SAndre Fischer {
10528dcb2a10SAndre Fischer mpLbFillAttr->Show();
10538dcb2a10SAndre Fischer mpToolBoxColor->Hide();
1054d74d90d6SArmin Le Grand
10558dcb2a10SAndre Fischer if(SFX_ITEM_AVAILABLE == eState)
10568dcb2a10SAndre Fischer {
10578dcb2a10SAndre Fischer mpLbFillAttr->Enable();
10588dcb2a10SAndre Fischer Update();
10598dcb2a10SAndre Fischer }
10608dcb2a10SAndre Fischer else if(SFX_ITEM_DISABLED == eState )
10618dcb2a10SAndre Fischer {
10628dcb2a10SAndre Fischer mpLbFillAttr->Disable();
10638dcb2a10SAndre Fischer mpLbFillAttr->SetNoSelection();
10648dcb2a10SAndre Fischer }
10658dcb2a10SAndre Fischer else
1066d74d90d6SArmin Le Grand {
10678dcb2a10SAndre Fischer mpLbFillAttr->SetNoSelection();
10688dcb2a10SAndre Fischer }
10698dcb2a10SAndre Fischer }
1070d74d90d6SArmin Le Grand break;
1071d74d90d6SArmin Le Grand }
1072d74d90d6SArmin Le Grand case SID_COLOR_TABLE:
10738dcb2a10SAndre Fischer {
10748dcb2a10SAndre Fischer if(SFX_ITEM_AVAILABLE == eState)
10758dcb2a10SAndre Fischer {
1076d74d90d6SArmin Le Grand if(mpStyleItem && XFILL_SOLID == (XFillStyle)mpStyleItem->GetValue())
10778dcb2a10SAndre Fischer {
10788dcb2a10SAndre Fischer if(mpColorItem)
10798dcb2a10SAndre Fischer {
1080d74d90d6SArmin Le Grand const Color aColor = mpColorItem->GetColorValue();
1081d74d90d6SArmin Le Grand const SfxObjectShell* pSh = SfxObjectShell::Current();
1082d74d90d6SArmin Le Grand const SvxColorTableItem aItem(*(const SvxColorTableItem*)(pSh->GetItem(SID_COLOR_TABLE)));
1083d74d90d6SArmin Le Grand
10848dcb2a10SAndre Fischer mpLbFillAttr->Clear();
10858dcb2a10SAndre Fischer mpLbFillAttr->Enable();
10868dcb2a10SAndre Fischer mpLbFillAttr->Fill(aItem.GetColorTable());
10878dcb2a10SAndre Fischer mpLbFillAttr->SelectEntry(aColor);
10888dcb2a10SAndre Fischer }
10898dcb2a10SAndre Fischer else
1090d74d90d6SArmin Le Grand {
10918dcb2a10SAndre Fischer mpLbFillAttr->SetNoSelection();
10928dcb2a10SAndre Fischer }
10938dcb2a10SAndre Fischer }
10948dcb2a10SAndre Fischer }
1095d74d90d6SArmin Le Grand break;
1096d74d90d6SArmin Le Grand }
1097d74d90d6SArmin Le Grand case SID_GRADIENT_LIST:
10988dcb2a10SAndre Fischer {
10998dcb2a10SAndre Fischer if(SFX_ITEM_AVAILABLE == eState)
11008dcb2a10SAndre Fischer {
1101d74d90d6SArmin Le Grand if(mpStyleItem && XFILL_GRADIENT == (XFillStyle)mpStyleItem->GetValue())
11028dcb2a10SAndre Fischer {
11038dcb2a10SAndre Fischer if(mpFillGradientItem)
11048dcb2a10SAndre Fischer {
1105d74d90d6SArmin Le Grand const String aString( mpFillGradientItem->GetName() );
1106d74d90d6SArmin Le Grand const SfxObjectShell* pSh = SfxObjectShell::Current();
1107d74d90d6SArmin Le Grand const SvxGradientListItem aItem( *(const SvxGradientListItem*)(pSh->GetItem(SID_GRADIENT_LIST)));
1108d74d90d6SArmin Le Grand
11098dcb2a10SAndre Fischer mpLbFillAttr->Clear();
11108dcb2a10SAndre Fischer mpLbFillAttr->Enable();
11118dcb2a10SAndre Fischer mpLbFillAttr->Fill(aItem.GetGradientList());
11128dcb2a10SAndre Fischer mpLbFillAttr->SelectEntry(aString);
11138dcb2a10SAndre Fischer }
11148dcb2a10SAndre Fischer else
1115d74d90d6SArmin Le Grand {
11168dcb2a10SAndre Fischer mpLbFillAttr->SetNoSelection();
11178dcb2a10SAndre Fischer }
11188dcb2a10SAndre Fischer }
11198dcb2a10SAndre Fischer }
1120d74d90d6SArmin Le Grand break;
1121d74d90d6SArmin Le Grand }
1122d74d90d6SArmin Le Grand case SID_HATCH_LIST:
11238dcb2a10SAndre Fischer {
11248dcb2a10SAndre Fischer if(SFX_ITEM_AVAILABLE == eState)
11258dcb2a10SAndre Fischer {
1126d74d90d6SArmin Le Grand if(mpStyleItem && XFILL_HATCH == (XFillStyle)mpStyleItem->GetValue())
11278dcb2a10SAndre Fischer {
11288dcb2a10SAndre Fischer if(mpHatchItem)
11298dcb2a10SAndre Fischer {
1130d74d90d6SArmin Le Grand const String aString( mpHatchItem->GetName() );
1131d74d90d6SArmin Le Grand const SfxObjectShell* pSh = SfxObjectShell::Current();
1132d74d90d6SArmin Le Grand const SvxHatchListItem aItem(*(const SvxHatchListItem*)(pSh->GetItem(SID_HATCH_LIST)));
1133d74d90d6SArmin Le Grand
11348dcb2a10SAndre Fischer mpLbFillAttr->Clear();
11358dcb2a10SAndre Fischer mpLbFillAttr->Enable();
11368dcb2a10SAndre Fischer mpLbFillAttr->Fill(aItem.GetHatchList());
11378dcb2a10SAndre Fischer mpLbFillAttr->SelectEntry(aString);
11388dcb2a10SAndre Fischer }
11398dcb2a10SAndre Fischer else
1140d74d90d6SArmin Le Grand {
11418dcb2a10SAndre Fischer mpLbFillAttr->SetNoSelection();
11428dcb2a10SAndre Fischer }
11438dcb2a10SAndre Fischer }
11448dcb2a10SAndre Fischer }
1145d74d90d6SArmin Le Grand break;
1146d74d90d6SArmin Le Grand }
1147d74d90d6SArmin Le Grand case SID_BITMAP_LIST:
11488dcb2a10SAndre Fischer {
11498dcb2a10SAndre Fischer if(SFX_ITEM_AVAILABLE == eState)
11508dcb2a10SAndre Fischer {
1151d74d90d6SArmin Le Grand if(mpStyleItem && XFILL_BITMAP == (XFillStyle)mpStyleItem->GetValue())
11528dcb2a10SAndre Fischer {
11538dcb2a10SAndre Fischer if(mpBitmapItem)
11548dcb2a10SAndre Fischer {
1155d74d90d6SArmin Le Grand const String aString( mpBitmapItem->GetName() );
1156d74d90d6SArmin Le Grand const SfxObjectShell* pSh = SfxObjectShell::Current();
1157d74d90d6SArmin Le Grand const SvxBitmapListItem aItem(*(const SvxBitmapListItem*)(pSh->GetItem(SID_BITMAP_LIST)));
1158d74d90d6SArmin Le Grand
11598dcb2a10SAndre Fischer mpLbFillAttr->Clear();
11608dcb2a10SAndre Fischer mpLbFillAttr->Enable();
11618dcb2a10SAndre Fischer mpLbFillAttr->Fill(aItem.GetBitmapList());
11628dcb2a10SAndre Fischer mpLbFillAttr->SelectEntry(aString);
11638dcb2a10SAndre Fischer }
11648dcb2a10SAndre Fischer else
1165d74d90d6SArmin Le Grand {
11668dcb2a10SAndre Fischer mpLbFillAttr->SetNoSelection();
11678dcb2a10SAndre Fischer }
11688dcb2a10SAndre Fischer }
11698dcb2a10SAndre Fischer }
1170d74d90d6SArmin Le Grand break;
11718dcb2a10SAndre Fischer }
1172d74d90d6SArmin Le Grand }
11736a606da0SAndre Fischer
11746a606da0SAndre Fischer maLayouter.Layout();
1175d74d90d6SArmin Le Grand }
11768dcb2a10SAndre Fischer
11778dcb2a10SAndre Fischer
117845da7d5eSAndre Fischer
GetBindings()11798dcb2a10SAndre Fischer SfxBindings* AreaPropertyPanel::GetBindings()
11808dcb2a10SAndre Fischer {
11818dcb2a10SAndre Fischer return mpBindings;
11828dcb2a10SAndre Fischer }
11838dcb2a10SAndre Fischer
11848dcb2a10SAndre Fischer
11858dcb2a10SAndre Fischer
Update()11868dcb2a10SAndre Fischer void AreaPropertyPanel::Update()
11878dcb2a10SAndre Fischer {
11888dcb2a10SAndre Fischer if(mpStyleItem)
11898dcb2a10SAndre Fischer {
1190d74d90d6SArmin Le Grand const XFillStyle eXFS = (XFillStyle)mpStyleItem->GetValue();
11918dcb2a10SAndre Fischer SfxObjectShell* pSh = SfxObjectShell::Current();
11928dcb2a10SAndre Fischer
11938dcb2a10SAndre Fischer switch( eXFS )
11948dcb2a10SAndre Fischer {
11958dcb2a10SAndre Fischer case XFILL_NONE:
11968dcb2a10SAndre Fischer {
1197d74d90d6SArmin Le Grand mpLbFillAttr->Show();
1198d74d90d6SArmin Le Grand mpToolBoxColor->Hide();
11998dcb2a10SAndre Fischer break;
1200d74d90d6SArmin Le Grand }
12018dcb2a10SAndre Fischer case XFILL_SOLID:
12028dcb2a10SAndre Fischer {
12038dcb2a10SAndre Fischer if(mpColorItem)
12048dcb2a10SAndre Fischer {
1205d74d90d6SArmin Le Grand mpLbFillAttr->Hide();
1206d74d90d6SArmin Le Grand mpToolBoxColor->Show();
12078dcb2a10SAndre Fischer mpColorUpdater->Update(mpColorItem->GetColorValue());
12088dcb2a10SAndre Fischer }
12098dcb2a10SAndre Fischer else
1210d74d90d6SArmin Le Grand {
12118dcb2a10SAndre Fischer mpColorUpdater->Update(COL_WHITE);
12128dcb2a10SAndre Fischer }
12138dcb2a10SAndre Fischer break;
1214d74d90d6SArmin Le Grand }
12158dcb2a10SAndre Fischer case XFILL_GRADIENT:
12168dcb2a10SAndre Fischer {
1217d74d90d6SArmin Le Grand mpLbFillAttr->Show();
1218d74d90d6SArmin Le Grand mpToolBoxColor->Hide();
1219d74d90d6SArmin Le Grand
12208dcb2a10SAndre Fischer if(pSh && pSh->GetItem(SID_GRADIENT_LIST))
12218dcb2a10SAndre Fischer {
1222d74d90d6SArmin Le Grand const SvxGradientListItem aItem(*(const SvxGradientListItem*)(pSh->GetItem(SID_GRADIENT_LIST)));
12238dcb2a10SAndre Fischer mpLbFillAttr->Enable();
12248dcb2a10SAndre Fischer mpLbFillAttr->Clear();
12258dcb2a10SAndre Fischer mpLbFillAttr->Fill(aItem.GetGradientList());
1226d74d90d6SArmin Le Grand
12278dcb2a10SAndre Fischer if(mpFillGradientItem)
12288dcb2a10SAndre Fischer {
1229d74d90d6SArmin Le Grand const String aString(mpFillGradientItem->GetName());
1230d74d90d6SArmin Le Grand
12318dcb2a10SAndre Fischer mpLbFillAttr->SelectEntry(aString);
12328dcb2a10SAndre Fischer }
12338dcb2a10SAndre Fischer else
1234d74d90d6SArmin Le Grand {
12358dcb2a10SAndre Fischer mpLbFillAttr->SetNoSelection();
12368dcb2a10SAndre Fischer }
1237d74d90d6SArmin Le Grand }
12388dcb2a10SAndre Fischer else
1239d74d90d6SArmin Le Grand {
12408dcb2a10SAndre Fischer mpLbFillAttr->SetNoSelection();
12418dcb2a10SAndre Fischer }
12428dcb2a10SAndre Fischer break;
1243d74d90d6SArmin Le Grand }
12448dcb2a10SAndre Fischer case XFILL_HATCH:
12458dcb2a10SAndre Fischer {
1246d74d90d6SArmin Le Grand mpLbFillAttr->Show();
1247d74d90d6SArmin Le Grand mpToolBoxColor->Hide();
1248d74d90d6SArmin Le Grand
12498dcb2a10SAndre Fischer if(pSh && pSh->GetItem(SID_HATCH_LIST))
12508dcb2a10SAndre Fischer {
1251d74d90d6SArmin Le Grand const SvxHatchListItem aItem(*(const SvxHatchListItem*)(pSh->GetItem(SID_HATCH_LIST)));
12528dcb2a10SAndre Fischer mpLbFillAttr->Enable();
12538dcb2a10SAndre Fischer mpLbFillAttr->Clear();
12548dcb2a10SAndre Fischer mpLbFillAttr->Fill(aItem.GetHatchList());
1255d74d90d6SArmin Le Grand
12568dcb2a10SAndre Fischer if(mpHatchItem)
12578dcb2a10SAndre Fischer {
1258d74d90d6SArmin Le Grand const String aString(mpHatchItem->GetName());
1259d74d90d6SArmin Le Grand
12608dcb2a10SAndre Fischer mpLbFillAttr->SelectEntry( aString );
12618dcb2a10SAndre Fischer }
12628dcb2a10SAndre Fischer else
1263d74d90d6SArmin Le Grand {
12648dcb2a10SAndre Fischer mpLbFillAttr->SetNoSelection();
12658dcb2a10SAndre Fischer }
1266d74d90d6SArmin Le Grand }
12678dcb2a10SAndre Fischer else
1268d74d90d6SArmin Le Grand {
12698dcb2a10SAndre Fischer mpLbFillAttr->SetNoSelection();
12708dcb2a10SAndre Fischer }
12718dcb2a10SAndre Fischer break;
1272d74d90d6SArmin Le Grand }
12738dcb2a10SAndre Fischer case XFILL_BITMAP:
12748dcb2a10SAndre Fischer {
1275d74d90d6SArmin Le Grand mpLbFillAttr->Show();
1276d74d90d6SArmin Le Grand mpToolBoxColor->Hide();
1277d74d90d6SArmin Le Grand
12788dcb2a10SAndre Fischer if(pSh && pSh->GetItem(SID_BITMAP_LIST))
12798dcb2a10SAndre Fischer {
1280d74d90d6SArmin Le Grand const SvxBitmapListItem aItem(*(const SvxBitmapListItem*)(pSh->GetItem(SID_BITMAP_LIST)));
12818dcb2a10SAndre Fischer mpLbFillAttr->Enable();
12828dcb2a10SAndre Fischer mpLbFillAttr->Clear();
12838dcb2a10SAndre Fischer mpLbFillAttr->Fill(aItem.GetBitmapList());
1284d74d90d6SArmin Le Grand
12858dcb2a10SAndre Fischer if(mpBitmapItem)
12868dcb2a10SAndre Fischer {
1287d74d90d6SArmin Le Grand const String aString(mpBitmapItem->GetName());
1288d74d90d6SArmin Le Grand
12898dcb2a10SAndre Fischer mpLbFillAttr->SelectEntry(aString);
12908dcb2a10SAndre Fischer }
12918dcb2a10SAndre Fischer else
1292d74d90d6SArmin Le Grand {
12938dcb2a10SAndre Fischer mpLbFillAttr->SetNoSelection();
12948dcb2a10SAndre Fischer }
1295d74d90d6SArmin Le Grand }
12968dcb2a10SAndre Fischer else
1297d74d90d6SArmin Le Grand {
12988dcb2a10SAndre Fischer mpLbFillAttr->SetNoSelection();
12998dcb2a10SAndre Fischer }
13008dcb2a10SAndre Fischer break;
1301d74d90d6SArmin Le Grand }
13028dcb2a10SAndre Fischer default:
1303d74d90d6SArmin Le Grand DBG_ERROR( "Non supported FillType (!)" );
13048dcb2a10SAndre Fischer break;
13058dcb2a10SAndre Fischer }
13068dcb2a10SAndre Fischer }
13078dcb2a10SAndre Fischer }
13088dcb2a10SAndre Fischer
13098dcb2a10SAndre Fischer
13108dcb2a10SAndre Fischer
IMPL_LINK(AreaPropertyPanel,ImplPopupModeEndHdl,FloatingWindow *,EMPTYARG)13118dcb2a10SAndre Fischer IMPL_LINK( AreaPropertyPanel, ImplPopupModeEndHdl, FloatingWindow*, EMPTYARG )
13128dcb2a10SAndre Fischer {
13138dcb2a10SAndre Fischer return 0;
13148dcb2a10SAndre Fischer }
13158dcb2a10SAndre Fischer
13168dcb2a10SAndre Fischer
13178dcb2a10SAndre Fischer
IMPL_LINK(AreaPropertyPanel,ClickTrGrHdl_Impl,ToolBox *,pToolBox)13188dcb2a10SAndre Fischer IMPL_LINK( AreaPropertyPanel, ClickTrGrHdl_Impl, ToolBox*, pToolBox )
13198dcb2a10SAndre Fischer {
13208dcb2a10SAndre Fischer maTrGrPopup.Rearrange(mpFloatTransparenceItem.get());
13218dcb2a10SAndre Fischer OSL_ASSERT(pToolBox->GetCurItemId() == TBI_BTX_GRADIENT);
13228dcb2a10SAndre Fischer maTrGrPopup.Show(*pToolBox);
13238dcb2a10SAndre Fischer
13248dcb2a10SAndre Fischer return (0L);
13258dcb2a10SAndre Fischer }
13268dcb2a10SAndre Fischer
13278dcb2a10SAndre Fischer
13288dcb2a10SAndre Fischer
IMPL_LINK(AreaPropertyPanel,ChangeTrgrTypeHdl_Impl,void *,EMPTYARG)13298dcb2a10SAndre Fischer IMPL_LINK(AreaPropertyPanel, ChangeTrgrTypeHdl_Impl, void *, EMPTYARG)
13308dcb2a10SAndre Fischer {
13318dcb2a10SAndre Fischer sal_uInt16 nSelectType = mpLBTransType->GetSelectEntryPos();
13328dcb2a10SAndre Fischer bool bGradient = false;
13338dcb2a10SAndre Fischer sal_uInt16 nTrans = 0;
13348dcb2a10SAndre Fischer
1335d74d90d6SArmin Le Grand if(!nSelectType)
13368dcb2a10SAndre Fischer {
13378dcb2a10SAndre Fischer mpBTNGradient->Hide();
13388dcb2a10SAndre Fischer mpMTRTransparent->Show();
13398dcb2a10SAndre Fischer mpMTRTransparent->Enable();
13408dcb2a10SAndre Fischer mpMTRTransparent->SetValue(0);
13418dcb2a10SAndre Fischer }
1342d74d90d6SArmin Le Grand else if(1 == nSelectType)
13438dcb2a10SAndre Fischer {
13448dcb2a10SAndre Fischer mpBTNGradient->Hide();
13458dcb2a10SAndre Fischer mpMTRTransparent->Show();
13468dcb2a10SAndre Fischer nTrans = mnLastTransSolid;
13478dcb2a10SAndre Fischer mpMTRTransparent->SetValue(nTrans);
1348d74d90d6SArmin Le Grand mpLBTransType->SelectEntryPos(1);
13498dcb2a10SAndre Fischer mpMTRTransparent->Enable();
13508dcb2a10SAndre Fischer }
13518dcb2a10SAndre Fischer else
13528dcb2a10SAndre Fischer {
13538dcb2a10SAndre Fischer mpBTNGradient->Show();
1354d74d90d6SArmin Le Grand
13558dcb2a10SAndre Fischer switch (nSelectType)
13568dcb2a10SAndre Fischer {
13578dcb2a10SAndre Fischer case 2:
1358d74d90d6SArmin Le Grand mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgLinearH : maImgLinear);
13598dcb2a10SAndre Fischer break;
13608dcb2a10SAndre Fischer case 3:
13618dcb2a10SAndre Fischer mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgAxialH : maImgAxial);
13628dcb2a10SAndre Fischer break;
13638dcb2a10SAndre Fischer case 4:
13648dcb2a10SAndre Fischer mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgRadialH : maImgRadial);
13658dcb2a10SAndre Fischer break;
13668dcb2a10SAndre Fischer case 5:
13678dcb2a10SAndre Fischer mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgElliH : maImgElli );
13688dcb2a10SAndre Fischer break;
13698dcb2a10SAndre Fischer case 6:
13708dcb2a10SAndre Fischer mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgQuadH : maImgQuad );
13718dcb2a10SAndre Fischer break;
13728dcb2a10SAndre Fischer case 7:
13738dcb2a10SAndre Fischer mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgSquareH : maImgSquare);
13748dcb2a10SAndre Fischer break;
13758dcb2a10SAndre Fischer }
1376d74d90d6SArmin Le Grand
13778dcb2a10SAndre Fischer mpMTRTransparent->Hide();
13788dcb2a10SAndre Fischer mpBTNGradient->Enable();
13798dcb2a10SAndre Fischer bGradient = true;
13808dcb2a10SAndre Fischer }
13818dcb2a10SAndre Fischer
1382d74d90d6SArmin Le Grand const XFillTransparenceItem aLinearItem(nTrans);
13838dcb2a10SAndre Fischer GetBindings()->GetDispatcher()->Execute( SID_ATTR_FILL_TRANSPARENCE, SFX_CALLMODE_RECORD, &aLinearItem, 0L );
13848dcb2a10SAndre Fischer
1385d74d90d6SArmin Le Grand if(nSelectType > 1)
1386d74d90d6SArmin Le Grand {
1387d74d90d6SArmin Le Grand nSelectType -= 2;
1388d74d90d6SArmin Le Grand }
13898dcb2a10SAndre Fischer
13908dcb2a10SAndre Fischer XGradient aTmpGradient;
13918dcb2a10SAndre Fischer
13928dcb2a10SAndre Fischer switch(nSelectType)
13938dcb2a10SAndre Fischer {
13948dcb2a10SAndre Fischer case XGRAD_LINEAR:
13958dcb2a10SAndre Fischer aTmpGradient = maGradientLinear;
13968dcb2a10SAndre Fischer break;
13978dcb2a10SAndre Fischer case XGRAD_AXIAL:
13988dcb2a10SAndre Fischer aTmpGradient = maGradientAxial;
13998dcb2a10SAndre Fischer break;
14008dcb2a10SAndre Fischer case XGRAD_RADIAL:
14018dcb2a10SAndre Fischer aTmpGradient = maGradientRadial;
14028dcb2a10SAndre Fischer break;
14038dcb2a10SAndre Fischer case XGRAD_ELLIPTICAL:
14048dcb2a10SAndre Fischer aTmpGradient = maGradientElliptical;
14058dcb2a10SAndre Fischer break;
14068dcb2a10SAndre Fischer case XGRAD_SQUARE:
14078dcb2a10SAndre Fischer aTmpGradient = maGradientSquare;
14088dcb2a10SAndre Fischer break;
14098dcb2a10SAndre Fischer case XGRAD_RECT:
14108dcb2a10SAndre Fischer aTmpGradient = maGradientRect;
14118dcb2a10SAndre Fischer break;
14128dcb2a10SAndre Fischer }
14138dcb2a10SAndre Fischer
1414d74d90d6SArmin Le Grand SfxItemPool* pPool = 0;
1415d74d90d6SArmin Le Grand const XFillFloatTransparenceItem aGradientItem(pPool, aTmpGradient, sal_Bool(bGradient));
14168dcb2a10SAndre Fischer GetBindings()->GetDispatcher()->Execute( SID_ATTR_FILL_FLOATTRANSPARENCE, SFX_CALLMODE_RECORD, &aGradientItem, 0L );
14178dcb2a10SAndre Fischer
14188dcb2a10SAndre Fischer return( 0L );
14198dcb2a10SAndre Fischer }
14208dcb2a10SAndre Fischer
14218dcb2a10SAndre Fischer
14228dcb2a10SAndre Fischer
IMPL_LINK(AreaPropertyPanel,ModifyTransparentHdl_Impl,void *,EMPTYARG)14238dcb2a10SAndre Fischer IMPL_LINK(AreaPropertyPanel, ModifyTransparentHdl_Impl, void*, EMPTYARG)
14248dcb2a10SAndre Fischer {
1425d74d90d6SArmin Le Grand const sal_uInt16 nTrans = (sal_uInt16)mpMTRTransparent->GetValue();
14268dcb2a10SAndre Fischer mnLastTransSolid = nTrans;
1427d74d90d6SArmin Le Grand const sal_uInt16 nSelectType = mpLBTransType->GetSelectEntryPos();
1428d74d90d6SArmin Le Grand
1429d74d90d6SArmin Le Grand if(nTrans && !nSelectType)
1430d74d90d6SArmin Le Grand {
14318dcb2a10SAndre Fischer mpLBTransType->SelectEntryPos(1);
1432d74d90d6SArmin Le Grand }
1433d74d90d6SArmin Le Grand
1434d74d90d6SArmin Le Grand const XFillTransparenceItem aLinearItem(nTrans);
14358dcb2a10SAndre Fischer GetBindings()->GetDispatcher()->Execute( SID_ATTR_FILL_TRANSPARENCE, SFX_CALLMODE_RECORD, &aLinearItem, 0L );
14368dcb2a10SAndre Fischer
14378dcb2a10SAndre Fischer return 0L;
14388dcb2a10SAndre Fischer }
14398dcb2a10SAndre Fischer
14408dcb2a10SAndre Fischer
GetLastColor(void) const14418dcb2a10SAndre Fischer Color AreaPropertyPanel::GetLastColor (void) const
14428dcb2a10SAndre Fischer {
14438dcb2a10SAndre Fischer return maLastColor;
14448dcb2a10SAndre Fischer }
14458dcb2a10SAndre Fischer
14468dcb2a10SAndre Fischer
14478dcb2a10SAndre Fischer
14488dcb2a10SAndre Fischer
GetGradient(const XGradientStyle eStyle) const14498dcb2a10SAndre Fischer XGradient AreaPropertyPanel::GetGradient (const XGradientStyle eStyle) const
14508dcb2a10SAndre Fischer {
14518dcb2a10SAndre Fischer switch (eStyle)
14528dcb2a10SAndre Fischer {
14538dcb2a10SAndre Fischer default:
14548dcb2a10SAndre Fischer case XGRAD_LINEAR:
14558dcb2a10SAndre Fischer return maGradientLinear;
14568dcb2a10SAndre Fischer case XGRAD_AXIAL:
14578dcb2a10SAndre Fischer return maGradientAxial;
14588dcb2a10SAndre Fischer case XGRAD_RADIAL:
14598dcb2a10SAndre Fischer return maGradientRadial;
14608dcb2a10SAndre Fischer case XGRAD_ELLIPTICAL:
14618dcb2a10SAndre Fischer return maGradientElliptical;
14628dcb2a10SAndre Fischer case XGRAD_SQUARE:
14638dcb2a10SAndre Fischer return maGradientSquare;
14648dcb2a10SAndre Fischer case XGRAD_RECT:
14658dcb2a10SAndre Fischer return maGradientRect;
14668dcb2a10SAndre Fischer }
14678dcb2a10SAndre Fischer }
14688dcb2a10SAndre Fischer
14698dcb2a10SAndre Fischer
14708dcb2a10SAndre Fischer
14718dcb2a10SAndre Fischer
SetGradient(const XGradient & rGradient)14728dcb2a10SAndre Fischer void AreaPropertyPanel::SetGradient (const XGradient& rGradient)
14738dcb2a10SAndre Fischer {
14748dcb2a10SAndre Fischer switch (rGradient.GetGradientStyle())
14758dcb2a10SAndre Fischer {
14768dcb2a10SAndre Fischer case XGRAD_LINEAR:
14778dcb2a10SAndre Fischer maGradientLinear = rGradient;
14788dcb2a10SAndre Fischer break;
14798dcb2a10SAndre Fischer case XGRAD_AXIAL:
14808dcb2a10SAndre Fischer maGradientAxial = rGradient;
14818dcb2a10SAndre Fischer break;
14828dcb2a10SAndre Fischer case XGRAD_RADIAL:
14838dcb2a10SAndre Fischer maGradientRadial = rGradient;
14848dcb2a10SAndre Fischer break;
14858dcb2a10SAndre Fischer case XGRAD_ELLIPTICAL:
14868dcb2a10SAndre Fischer maGradientElliptical = rGradient;
14878dcb2a10SAndre Fischer break;
14888dcb2a10SAndre Fischer case XGRAD_SQUARE:
14898dcb2a10SAndre Fischer maGradientSquare = rGradient;
14908dcb2a10SAndre Fischer break;
14918dcb2a10SAndre Fischer case XGRAD_RECT:
14928dcb2a10SAndre Fischer maGradientRect = rGradient;
14938dcb2a10SAndre Fischer break;
14948dcb2a10SAndre Fischer }
14958dcb2a10SAndre Fischer }
14968dcb2a10SAndre Fischer
14978dcb2a10SAndre Fischer
14988dcb2a10SAndre Fischer
14998dcb2a10SAndre Fischer
GetSelectedTransparencyTypeIndex(void) const15008dcb2a10SAndre Fischer sal_Int32 AreaPropertyPanel::GetSelectedTransparencyTypeIndex (void) const
15018dcb2a10SAndre Fischer {
15028dcb2a10SAndre Fischer return mpLBTransType->GetSelectEntryPos();
15038dcb2a10SAndre Fischer }
15048dcb2a10SAndre Fischer
15056a606da0SAndre Fischer
15066a606da0SAndre Fischer
15076a606da0SAndre Fischer
Resize(void)15086a606da0SAndre Fischer void AreaPropertyPanel::Resize (void)
15096a606da0SAndre Fischer {
15106a606da0SAndre Fischer maLayouter.Layout();
15116a606da0SAndre Fischer }
15126a606da0SAndre Fischer
15136a606da0SAndre Fischer
15146a606da0SAndre Fischer
15158dcb2a10SAndre Fischer } } // end of namespace svx::sidebar
15164e8031e0SArmin Le Grand
15174e8031e0SArmin Le Grand // eof
1518