LCOV - code coverage report
Current view: top level - svx/source/sidebar/area - AreaPropertyPanel.cxx (source / functions) Hit Total Coverage
Test: commit 10e77ab3ff6f4314137acd6e2702a6e5c1ce1fae Lines: 1 569 0.2 %
Date: 2014-11-03 Functions: 2 26 7.7 %
Legend: Lines: hit not hit

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

Generated by: LCOV version 1.10