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

Generated by: LCOV version 1.11