LCOV - code coverage report
Current view: top level - svx/source/sidebar/area - AreaPropertyPanel.cxx (source / functions) Hit Total Coverage
Test: commit e02a6cb2c3e2b23b203b422e4e0680877f232636 Lines: 0 624 0.0 %
Date: 2014-04-14 Functions: 0 32 0.0 %
Legend: Lines: hit not hit

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

Generated by: LCOV version 1.10