LCOV - code coverage report
Current view: top level - sc/source/ui/sidebar - CellAppearancePropertyPanel.cxx (source / functions) Hit Total Coverage
Test: commit 10e77ab3ff6f4314137acd6e2702a6e5c1ce1fae Lines: 1 325 0.3 %
Date: 2014-11-03 Functions: 2 27 7.4 %
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             : 
      20             : #include <sfx2/sidebar/ResourceDefinitions.hrc>
      21             : #include <sfx2/sidebar/Theme.hxx>
      22             : #include <sfx2/sidebar/ControlFactory.hxx>
      23             : #include "CellAppearancePropertyPanel.hxx"
      24             : #include <CellAppearancePropertyPanel.hrc>
      25             : #include "sc.hrc"
      26             : #include "scresid.hxx"
      27             : #include <sfx2/bindings.hxx>
      28             : #include <sfx2/dispatch.hxx>
      29             : #include <vcl/fixed.hxx>
      30             : #include <svx/tbxcolorupdate.hxx>
      31             : #include <svl/eitem.hxx>
      32             : #include <editeng/borderline.hxx>
      33             : #include <editeng/boxitem.hxx>
      34             : #include <editeng/colritem.hxx>
      35             : #include <editeng/lineitem.hxx>
      36             : #include <vcl/svapp.hxx>
      37             : #include <vcl/settings.hxx>
      38             : #include <svx/sidebar/ColorControl.hxx>
      39             : #include <boost/bind.hpp>
      40             : #include <svx/sidebar/PopupContainer.hxx>
      41             : #include "CellLineStyleControl.hxx"
      42             : #include "CellLineStylePopup.hxx"
      43             : #include "CellBorderUpdater.hxx"
      44             : #include "CellBorderStyleControl.hxx"
      45             : #include "CellBorderStylePopup.hxx"
      46             : 
      47             : using namespace css;
      48             : using namespace css::uno;
      49             : 
      50             : const char UNO_SETBORDERSTYLE[] = ".uno:SetBorderStyle";
      51             : const char UNO_LINESTYLE[] = ".uno:LineStyle";
      52             : const char UNO_FRAMELINECOLOR[] = ".uno:FrameLineColor";
      53             : 
      54             : // helpers
      55             : 
      56             : namespace
      57             : {
      58           0 :     Color GetTransparentColor(void)
      59             :     {
      60           0 :         return COL_TRANSPARENT;
      61             :     }
      62             : } // end of anonymous namespace
      63             : 
      64             : // namespace open
      65             : 
      66             : namespace sc { namespace sidebar {
      67             : 
      68           0 : svx::sidebar::PopupControl* CellAppearancePropertyPanel::CreateLineColorPopupControl(svx::sidebar::PopupContainer* pParent)
      69             : {
      70             :     return new svx::sidebar::ColorControl(
      71             :         pParent,
      72             :         mpBindings,
      73             :         ScResId(RID_POPUPPANEL_CELLAPPEARANCE_LINECOLOR),
      74             :         ScResId(VS_LINECOLOR),
      75             :         ::boost::bind(GetTransparentColor),
      76             :         ::boost::bind(&CellAppearancePropertyPanel::SetLineColor, this, _1, _2),
      77             :         pParent,
      78           0 :         0);
      79             : }
      80             : 
      81           0 : void CellAppearancePropertyPanel::SetLineColor(
      82             :     const OUString& /*rsColorName*/,
      83             :     const Color aColor)
      84             : {
      85           0 :     const SvxColorItem aColorItem(aColor, SID_FRAME_LINECOLOR);
      86           0 :     mpBindings->GetDispatcher()->Execute(SID_FRAME_LINECOLOR, SfxCallMode::RECORD, &aColorItem, 0L);
      87           0 :     maLineColor = aColor;
      88           0 : }
      89             : 
      90           0 : svx::sidebar::PopupControl* CellAppearancePropertyPanel::CreateCellLineStylePopupControl(svx::sidebar::PopupContainer* pParent)
      91             : {
      92           0 :     return new CellLineStyleControl(pParent, *this);
      93             : }
      94             : 
      95           0 : void CellAppearancePropertyPanel::EndCellLineStylePopupMode(void)
      96             : {
      97           0 :     if(mpCellLineStylePopup.get())
      98             :     {
      99           0 :         mpCellLineStylePopup->Hide();
     100             :     }
     101           0 : }
     102             : 
     103           0 : svx::sidebar::PopupControl* CellAppearancePropertyPanel::CreateCellBorderStylePopupControl(svx::sidebar::PopupContainer* pParent)
     104             : {
     105           0 :     return new CellBorderStyleControl(pParent, *this);
     106             : }
     107             : 
     108           0 : void CellAppearancePropertyPanel::EndCellBorderStylePopupMode(void)
     109             : {
     110           0 :     if(mpCellBorderStylePopup.get())
     111             :     {
     112           0 :         mpCellBorderStylePopup->Hide();
     113             :     }
     114           0 : }
     115             : 
     116           0 : CellAppearancePropertyPanel::CellAppearancePropertyPanel(
     117             :     vcl::Window* pParent,
     118             :     const css::uno::Reference<css::frame::XFrame>& rxFrame,
     119             :     SfxBindings* pBindings)
     120             : :   PanelLayout(pParent, "CellAppearancePropertyPanel", "modules/scalc/ui/sidebarcellappearance.ui", rxFrame),
     121             : 
     122             :     maLineColorControl(SID_FRAME_LINECOLOR, *pBindings, *this),
     123             :     maLineStyleControl(SID_FRAME_LINESTYLE, *pBindings, *this),
     124             :     maBorderOuterControl(SID_ATTR_BORDER_OUTER, *pBindings, *this),
     125             :     maBorderInnerControl(SID_ATTR_BORDER_INNER, *pBindings, *this),
     126             :     maGridShowControl(FID_TAB_TOGGLE_GRID, *pBindings, *this),
     127             :     maBorderTLBRControl(SID_ATTR_BORDER_DIAG_TLBR, *pBindings, *this),
     128             :     maBorderBLTRControl(SID_ATTR_BORDER_DIAG_BLTR, *pBindings, *this),
     129             : 
     130             :     maIMGCellBorder(ScResId(IMG_CELL_BORDER)),
     131             :     maIMGLineStyle1(ScResId(IMG_LINE_STYLE1)),
     132             :     maIMGLineStyle2(ScResId(IMG_LINE_STYLE2)),
     133             :     maIMGLineStyle3(ScResId(IMG_LINE_STYLE3)),
     134             :     maIMGLineStyle4(ScResId(IMG_LINE_STYLE4)),
     135             :     maIMGLineStyle5(ScResId(IMG_LINE_STYLE5)),
     136             :     maIMGLineStyle6(ScResId(IMG_LINE_STYLE6)),
     137             :     maIMGLineStyle7(ScResId(IMG_LINE_STYLE7)),
     138             :     maIMGLineStyle8(ScResId(IMG_LINE_STYLE8)),
     139             :     maIMGLineStyle9(ScResId(IMG_LINE_STYLE9)),
     140             : 
     141             :     maLineColor(COL_BLACK),
     142             :     maTLBRColor(COL_BLACK),
     143             :     maBLTRColor(COL_BLACK),
     144             :     mnIn(0),
     145             :     mnOut(0),
     146             :     mnDis(0),
     147             :     mnTLBRIn(0),
     148             :     mnTLBROut(0),
     149             :     mnTLBRDis(0),
     150             :     mnBLTRIn(0),
     151             :     mnBLTROut(0),
     152             :     mnBLTRDis(0),
     153             :     mbLineColorAvailable(true),
     154             :     mbBorderStyleAvailable(true),
     155             :     mbLeft(false),
     156             :     mbRight(false),
     157             :     mbTop(false),
     158             :     mbBottom(false),
     159             :     mbVer(false),
     160             :     mbHor(false),
     161             :     mbOuterBorder(false),
     162             :     mbInnerBorder(false),
     163             :     mbTLBR(false),
     164             :     mbBLTR(false),
     165             : 
     166             :     maLineColorPopup(this, ::boost::bind(&CellAppearancePropertyPanel::CreateLineColorPopupControl, this, _1)),
     167             :     mpCellLineStylePopup(),
     168             :     mpCellBorderStylePopup(),
     169             : 
     170             :     mxFrame(rxFrame),
     171             :     maContext(),
     172           0 :     mpBindings(pBindings)
     173             : {
     174           0 :     get(mpTBCellBorder, "cellbordertype");
     175           0 :     get(mpTBLineStyle,  "borderlinestyle");
     176           0 :     get(mpTBLineColor,  "borderlinecolor");
     177           0 :     get(mpCBXShowGrid,  "cellgridlines");
     178             : 
     179             :     mpLineColorUpdater.reset( new ::svx::ToolboxButtonColorUpdater(SID_FRAME_LINECOLOR,
     180           0 :         mpTBLineColor->GetItemId( UNO_FRAMELINECOLOR ),
     181           0 :         mpTBLineColor) );
     182             :     mpCellBorderUpdater.reset( new CellBorderUpdater(
     183           0 :         mpTBCellBorder->GetItemId( UNO_SETBORDERSTYLE ), *mpTBCellBorder) );
     184             : 
     185           0 :     Initialize();
     186           0 : }
     187             : 
     188           0 : CellAppearancePropertyPanel::~CellAppearancePropertyPanel()
     189             : {
     190           0 : }
     191             : 
     192           0 : void CellAppearancePropertyPanel::Initialize()
     193             : {
     194           0 :     const sal_uInt16 nIdBorderType  = mpTBCellBorder->GetItemId( UNO_SETBORDERSTYLE );
     195           0 :     mpTBCellBorder->SetItemImage( nIdBorderType, maIMGCellBorder );
     196           0 :     mpTBCellBorder->SetItemBits( nIdBorderType, mpTBCellBorder->GetItemBits( nIdBorderType ) | ToolBoxItemBits::DROPDOWNONLY );
     197           0 :     Link aLink = LINK(this, CellAppearancePropertyPanel, TbxCellBorderSelectHdl);
     198           0 :     mpTBCellBorder->SetDropdownClickHdl ( aLink );
     199           0 :     mpTBCellBorder->SetSelectHdl ( aLink );
     200             : 
     201           0 :     const sal_uInt16 nIdBorderLineStyle = mpTBLineStyle->GetItemId( UNO_LINESTYLE );
     202           0 :     mpTBLineStyle->SetItemImage( nIdBorderLineStyle, maIMGLineStyle1 );
     203           0 :     mpTBLineStyle->SetItemBits( nIdBorderLineStyle, mpTBLineStyle->GetItemBits( nIdBorderLineStyle ) | ToolBoxItemBits::DROPDOWNONLY );
     204           0 :     aLink = LINK(this, CellAppearancePropertyPanel, TbxLineStyleSelectHdl);
     205           0 :     mpTBLineStyle->SetDropdownClickHdl ( aLink );
     206           0 :     mpTBLineStyle->SetSelectHdl ( aLink );
     207           0 :     mpTBLineStyle->Disable();
     208             : 
     209           0 :     const sal_uInt16 nIdBorderLinecolor = mpTBLineColor->GetItemId( UNO_FRAMELINECOLOR );
     210           0 :     mpTBLineColor->SetItemBits( nIdBorderLinecolor, mpTBLineColor->GetItemBits( nIdBorderLinecolor ) | ToolBoxItemBits::DROPDOWNONLY );
     211           0 :     aLink = LINK(this, CellAppearancePropertyPanel, TbxLineColorSelectHdl);
     212           0 :     mpTBLineColor->SetDropdownClickHdl ( aLink );
     213           0 :     mpTBLineColor->SetSelectHdl ( aLink );
     214           0 :     mpTBLineColor->Disable();
     215             : 
     216           0 :     aLink = LINK(this, CellAppearancePropertyPanel, CBOXGridShowClkHdl);
     217           0 :     mpCBXShowGrid->SetClickHdl ( aLink );
     218             : 
     219           0 :     mpTBLineColor->SetAccessibleRelationLabeledBy(mpTBLineColor);
     220           0 :     mpTBLineStyle->SetAccessibleRelationLabeledBy(mpTBLineStyle);
     221           0 : }
     222             : 
     223           0 : IMPL_LINK(CellAppearancePropertyPanel, TbxLineColorSelectHdl, ToolBox*, pToolBox)
     224             : {
     225           0 :     const OUString aCommand(pToolBox->GetItemCommand(pToolBox->GetCurItemId()));
     226             : 
     227           0 :     if(aCommand == UNO_FRAMELINECOLOR)
     228             :     {
     229           0 :         maLineColorPopup.Show(*pToolBox);
     230           0 :         maLineColorPopup.SetCurrentColor(maLineColor, mbLineColorAvailable);
     231             :     }
     232           0 :     return 0;
     233             : }
     234             : 
     235           0 : IMPL_LINK(CellAppearancePropertyPanel, TbxCellBorderSelectHdl, ToolBox*, pToolBox)
     236             : {
     237           0 :     const OUString aCommand(pToolBox->GetItemCommand(pToolBox->GetCurItemId()));
     238             : 
     239           0 :     if(aCommand == UNO_SETBORDERSTYLE)
     240             :     {
     241             :         // create popup on demand
     242           0 :         if(!mpCellBorderStylePopup.get())
     243             :         {
     244             :             mpCellBorderStylePopup.reset(
     245             :                 new CellBorderStylePopup(
     246             :                     this,
     247           0 :                     ::boost::bind(&CellAppearancePropertyPanel::CreateCellBorderStylePopupControl, this, _1)));
     248             :         }
     249             : 
     250           0 :         if(mpCellBorderStylePopup.get())
     251             :         {
     252           0 :             mpCellBorderStylePopup->Show(*pToolBox);
     253             :         }
     254             :     }
     255           0 :     return 0;
     256             : }
     257             : 
     258           0 : IMPL_LINK(CellAppearancePropertyPanel, TbxLineStyleSelectHdl, ToolBox*, pToolBox)
     259             : {
     260           0 :     const OUString aCommand(pToolBox->GetItemCommand(pToolBox->GetCurItemId()));
     261             : 
     262           0 :     if(aCommand == UNO_LINESTYLE)
     263             :     {
     264             :         // create popup on demand
     265           0 :         if(!mpCellLineStylePopup.get())
     266             :         {
     267             :             mpCellLineStylePopup.reset(
     268             :                 new CellLineStylePopup(
     269             :                     this,
     270           0 :                     ::boost::bind(&CellAppearancePropertyPanel::CreateCellLineStylePopupControl, this, _1)));
     271             :         }
     272             : 
     273           0 :         if(mpCellLineStylePopup.get())
     274             :         {
     275           0 :             mpCellLineStylePopup->SetLineStyleSelect(mnOut, mnIn, mnDis);
     276           0 :             mpCellLineStylePopup->Show(*pToolBox);
     277             :         }
     278             :     }
     279           0 :     return 0;
     280             : }
     281             : 
     282           0 : IMPL_LINK(CellAppearancePropertyPanel, CBOXGridShowClkHdl, void*, EMPTYARG)
     283             : {
     284           0 :     bool bState = mpCBXShowGrid->IsChecked();
     285           0 :     SfxBoolItem aItem( FID_TAB_TOGGLE_GRID , bState);
     286           0 :     GetBindings()->GetDispatcher()->Execute(FID_TAB_TOGGLE_GRID, SfxCallMode::RECORD, &aItem, 0L);
     287           0 :     return 0;
     288             : }
     289             : 
     290           0 : CellAppearancePropertyPanel* CellAppearancePropertyPanel::Create (
     291             :     vcl::Window* pParent,
     292             :     const css::uno::Reference<css::frame::XFrame>& rxFrame,
     293             :     SfxBindings* pBindings)
     294             : {
     295           0 :     if (pParent == NULL)
     296           0 :         throw lang::IllegalArgumentException("no parent Window given to CellAppearancePropertyPanel::Create", NULL, 0);
     297           0 :     if ( ! rxFrame.is())
     298           0 :         throw lang::IllegalArgumentException("no XFrame given to CellAppearancePropertyPanel::Create", NULL, 1);
     299           0 :     if (pBindings == NULL)
     300           0 :         throw lang::IllegalArgumentException("no SfxBindings given to CellAppearancePropertyPanel::Create", NULL, 2);
     301             : 
     302             :     return new CellAppearancePropertyPanel(
     303             :         pParent,
     304             :         rxFrame,
     305           0 :         pBindings);
     306             : }
     307             : 
     308           0 : void CellAppearancePropertyPanel::DataChanged(
     309             :     const DataChangedEvent& rEvent)
     310             : {
     311             :     (void)rEvent;
     312           0 : }
     313             : 
     314           0 : void CellAppearancePropertyPanel::HandleContextChange(
     315             :     const ::sfx2::sidebar::EnumContext aContext)
     316             : {
     317           0 :     if(maContext == aContext)
     318             :     {
     319             :         // Nothing to do.
     320           0 :         return;
     321             :     }
     322             : 
     323           0 :     maContext = aContext;
     324             : 
     325             :     // todo
     326             : }
     327             : 
     328           0 : void CellAppearancePropertyPanel::NotifyItemUpdate(
     329             :     sal_uInt16 nSID,
     330             :     SfxItemState eState,
     331             :     const SfxPoolItem* pState,
     332             :     const bool bIsEnabled)
     333             : {
     334             :     (void)bIsEnabled;
     335             : 
     336           0 :     switch(nSID)
     337             :     {
     338             :     case SID_FRAME_LINECOLOR:
     339           0 :         if( eState == SfxItemState::DONTCARE)
     340             :         {
     341           0 :             mbLineColorAvailable = true;
     342           0 :             maLineColor.SetColor( COL_TRANSPARENT );
     343           0 :             UpdateControlState();
     344           0 :             break;
     345             :         }
     346             : 
     347           0 :         if(eState >= SfxItemState::DEFAULT && pState && pState->ISA(SvxColorItem) )
     348             :         {
     349           0 :             const SvxColorItem* pSvxColorItem = dynamic_cast< const SvxColorItem* >(pState);
     350             : 
     351           0 :             if(pSvxColorItem)
     352             :             {
     353           0 :                 maLineColor = static_cast<const SvxColorItem*>(pState)->GetValue();
     354           0 :                 if(maLineColor == COL_AUTO)
     355           0 :                     mbLineColorAvailable = false;
     356             :                 else
     357             :                 {
     358           0 :                     mbLineColorAvailable = true;
     359             :                 //  mpLineColorUpdater->Update(maLineColor);
     360             :                 }
     361             : 
     362           0 :                 UpdateControlState();
     363           0 :                 break;
     364             :             }
     365             :         }
     366             : 
     367           0 :         mbLineColorAvailable = false;
     368           0 :         maLineColor.SetColor(COL_AUTO);
     369             :         //  mpLineColorUpdater->Update(maLineColor);
     370           0 :         UpdateControlState();
     371           0 :         break;
     372             :     case SID_FRAME_LINESTYLE:
     373           0 :         if( eState == SfxItemState::DONTCARE )
     374             :         {
     375           0 :             mbBorderStyleAvailable = true;
     376           0 :             mnIn = 0;
     377           0 :             mnOut = 0;
     378           0 :             mnDis = 0;
     379           0 :             SetStyleIcon();
     380           0 :             break;
     381             :         }
     382             : 
     383           0 :         if(eState >= SfxItemState::DEFAULT)
     384             :         {
     385           0 :             const SvxLineItem* pSvxLineItem = dynamic_cast< const SvxLineItem* >(pState);
     386             : 
     387           0 :             if(pSvxLineItem)
     388             :             {
     389           0 :                 const editeng::SvxBorderLine* mbLineItem = pSvxLineItem->GetLine();
     390           0 :                 mnIn = mbLineItem->GetInWidth();
     391           0 :                 mnOut = mbLineItem->GetOutWidth();
     392           0 :                 mnDis = mbLineItem->GetDistance();
     393             : 
     394           0 :                 if(mnIn == 0 && mnOut == 0 && mnDis == 0)
     395           0 :                     mbBorderStyleAvailable = false;
     396             :                 else
     397           0 :                     mbBorderStyleAvailable = true;
     398             : 
     399           0 :                 SetStyleIcon();
     400           0 :                 break;
     401             :             }
     402             :         }
     403             : 
     404           0 :         mbBorderStyleAvailable = false;
     405           0 :         SetStyleIcon();
     406           0 :         break;
     407             :     case SID_ATTR_BORDER_OUTER:
     408           0 :         if(eState >= SfxItemState::DEFAULT)
     409             :         {
     410           0 :             const SvxBoxItem* pBoxItem = dynamic_cast< const SvxBoxItem* >(pState);
     411             : 
     412           0 :             if(pBoxItem)
     413             :             {
     414           0 :                 mbLeft=false, mbRight=false, mbTop=false, mbBottom=false;
     415             : 
     416           0 :                 if(pBoxItem->GetLeft())
     417           0 :                     mbLeft = true;
     418             : 
     419           0 :                 if(pBoxItem->GetRight())
     420           0 :                     mbRight = true;
     421             : 
     422           0 :                 if(pBoxItem->GetTop())
     423           0 :                     mbTop = true;
     424             : 
     425           0 :                 if(pBoxItem->GetBottom())
     426           0 :                     mbBottom = true;
     427             : 
     428           0 :                 if(!Application::GetSettings().GetLayoutRTL())
     429           0 :                     mpCellBorderUpdater->UpdateCellBorder(mbTop, mbBottom, mbLeft, mbRight, maIMGCellBorder, mbVer, mbHor);
     430             :                 else
     431           0 :                     mpCellBorderUpdater->UpdateCellBorder(mbTop, mbBottom, mbRight, mbLeft, maIMGCellBorder, mbVer, mbHor);
     432             : 
     433           0 :                 if(mbLeft || mbRight || mbTop || mbBottom)
     434           0 :                     mbOuterBorder = true;
     435             :                 else
     436           0 :                     mbOuterBorder = false;
     437             : 
     438           0 :                 UpdateControlState();
     439             :             }
     440             :         }
     441           0 :         break;
     442             :     case SID_ATTR_BORDER_INNER:
     443           0 :         if(eState >= SfxItemState::DEFAULT)
     444             :         {
     445           0 :             const SvxBoxInfoItem* pBoxInfoItem = dynamic_cast< const SvxBoxInfoItem* >(pState);
     446             : 
     447           0 :             if(pBoxInfoItem)
     448             :             {
     449           0 :                 bool bLeft(false), bRight(false), bTop(false), bBottom(false);
     450             : 
     451           0 :                 mbVer = false, mbHor = false;
     452             : 
     453           0 :                 if(!pBoxInfoItem->IsValid( VALID_VERT )  || pBoxInfoItem->GetVert())
     454           0 :                     mbVer = true;
     455             : 
     456           0 :                 if(!pBoxInfoItem->IsValid( VALID_HORI )  || pBoxInfoItem->GetHori())
     457           0 :                     mbHor = true;
     458             : 
     459           0 :                 if(!pBoxInfoItem->IsValid( VALID_LEFT ) || mbLeft)
     460           0 :                     bLeft = true;
     461             : 
     462           0 :                 if(!pBoxInfoItem->IsValid( VALID_RIGHT ) || mbRight)
     463           0 :                     bRight = true;
     464             : 
     465           0 :                 if(!pBoxInfoItem->IsValid( VALID_TOP ) || mbTop)
     466           0 :                     bTop = true;
     467             : 
     468           0 :                 if(!pBoxInfoItem->IsValid( VALID_BOTTOM ) || mbBottom)
     469           0 :                     bBottom = true;
     470             : 
     471           0 :                 if(!Application::GetSettings().GetLayoutRTL())
     472           0 :                     mpCellBorderUpdater->UpdateCellBorder(bTop, bBottom, bLeft, bRight, maIMGCellBorder, mbVer, mbHor);
     473             :                 else
     474           0 :                     mpCellBorderUpdater->UpdateCellBorder(bTop, bBottom, bRight, bLeft, maIMGCellBorder, mbVer, mbHor);
     475             : 
     476           0 :                 if(mbVer || mbHor || bLeft || bRight || bTop || bBottom)
     477           0 :                     mbInnerBorder = true;
     478             :                 else
     479           0 :                     mbInnerBorder = false;
     480             : 
     481           0 :                 UpdateControlState();
     482             :             }
     483             :         }
     484           0 :         break;
     485             :     case SID_ATTR_BORDER_DIAG_TLBR:
     486           0 :         if( eState == SfxItemState::DONTCARE )
     487             :         {
     488           0 :             mbTLBR = true;
     489           0 :             maTLBRColor.SetColor(COL_TRANSPARENT);
     490           0 :             mnTLBRIn = mnTLBROut = mnTLBRDis = 0;
     491           0 :             UpdateControlState();
     492           0 :             break;
     493             :         }
     494             : 
     495           0 :         if(eState >= SfxItemState::DEFAULT)
     496             :         {
     497           0 :             const SvxLineItem* pItem = dynamic_cast< const SvxLineItem* >(pState);
     498             : 
     499           0 :             if(pItem)
     500             :             {
     501           0 :                 const editeng::SvxBorderLine* aLine = pItem->GetLine();
     502             : 
     503           0 :                 if(!aLine)
     504             :                 {
     505           0 :                     mbTLBR = false;
     506             :                 }
     507             :                 else
     508             :                 {
     509           0 :                     mbTLBR = true;
     510           0 :                     maTLBRColor = aLine->GetColor();
     511           0 :                     mnTLBRIn = aLine->GetInWidth();
     512           0 :                     mnTLBROut = aLine->GetOutWidth();
     513           0 :                     mnTLBRDis = aLine->GetDistance();
     514             : 
     515           0 :                     if(mnTLBRIn == 0 && mnTLBROut == 0 && mnTLBRDis == 0)
     516           0 :                         mbTLBR = false;
     517             :                 }
     518             : 
     519           0 :                 UpdateControlState();
     520           0 :                 break;
     521             :             }
     522             :         }
     523             : 
     524           0 :         mbTLBR = false;
     525           0 :         UpdateControlState();
     526           0 :         break;
     527             :     case SID_ATTR_BORDER_DIAG_BLTR:
     528           0 :         if( eState == SfxItemState::DONTCARE )
     529             :         {
     530           0 :             mbBLTR = true;
     531           0 :             maBLTRColor.SetColor( COL_TRANSPARENT );
     532           0 :             mnBLTRIn = mnBLTROut = mnBLTRDis = 0;
     533           0 :             UpdateControlState();
     534           0 :             break;
     535             :         }
     536             : 
     537           0 :         if(eState >= SfxItemState::DEFAULT)
     538             :         {
     539           0 :             const SvxLineItem* pItem = dynamic_cast< const SvxLineItem* >(pState);
     540             : 
     541           0 :             if(pItem)
     542             :             {
     543           0 :                 const editeng::SvxBorderLine* aLine = pItem->GetLine();
     544             : 
     545           0 :                 if(!aLine)
     546             :                 {
     547           0 :                     mbBLTR = false;
     548             :                 }
     549             :                 else
     550             :                 {
     551           0 :                     mbBLTR = true;
     552           0 :                     maBLTRColor = aLine->GetColor();
     553           0 :                     mnBLTRIn = aLine->GetInWidth();
     554           0 :                     mnBLTROut = aLine->GetOutWidth();
     555           0 :                     mnBLTRDis = aLine->GetDistance();
     556             : 
     557           0 :                     if(mnBLTRIn == 0 && mnBLTROut == 0 && mnBLTRDis == 0)
     558           0 :                         mbBLTR = false;
     559             :                 }
     560             : 
     561           0 :                 UpdateControlState();
     562             :             }
     563           0 :             break;
     564             :         }
     565             : 
     566           0 :         mbBLTR = false;
     567           0 :         UpdateControlState();
     568           0 :         break;
     569             :     case FID_TAB_TOGGLE_GRID:
     570           0 :         if(eState >= SfxItemState::DEFAULT)
     571             :         {
     572           0 :             const SfxBoolItem* pItem = dynamic_cast< const SfxBoolItem* >(pState);
     573             : 
     574           0 :             if(pItem)
     575             :             {
     576           0 :                 const bool bVal = pItem->GetValue();
     577             : 
     578           0 :                 if(bVal)
     579           0 :                     mpCBXShowGrid->Check(true);
     580             :                 else
     581           0 :                     mpCBXShowGrid->Check(false);
     582             :             }
     583             :         }
     584           0 :         break;
     585             :     }
     586           0 : }
     587             : 
     588           0 : void CellAppearancePropertyPanel::SetStyleIcon()
     589             : {
     590           0 :     const sal_uInt16 nIdBorderLineStyle = mpTBLineStyle->GetItemId( UNO_LINESTYLE );
     591             : 
     592             :     //FIXME: update for new line border possibilities
     593           0 :     if(mnOut == DEF_LINE_WIDTH_0 && mnIn == 0 && mnDis == 0)    //1
     594           0 :         mpTBLineStyle->SetItemImage(nIdBorderLineStyle, maIMGLineStyle1);
     595           0 :     else if(mnOut == DEF_LINE_WIDTH_2 && mnIn == 0 && mnDis == 0) //2
     596           0 :         mpTBLineStyle->SetItemImage(nIdBorderLineStyle, maIMGLineStyle2);
     597           0 :     else if(mnOut == DEF_LINE_WIDTH_3 && mnIn == 0 && mnDis == 0) //3
     598           0 :         mpTBLineStyle->SetItemImage(nIdBorderLineStyle, maIMGLineStyle3);
     599           0 :     else if(mnOut == DEF_LINE_WIDTH_4 && mnIn == 0 && mnDis == 0) //4
     600           0 :         mpTBLineStyle->SetItemImage(nIdBorderLineStyle, maIMGLineStyle4);
     601           0 :     else if(mnOut == DEF_LINE_WIDTH_0 && mnIn == DEF_LINE_WIDTH_0 && mnDis == DEF_LINE_WIDTH_1) //5
     602           0 :         mpTBLineStyle->SetItemImage(nIdBorderLineStyle, maIMGLineStyle5);
     603           0 :     else if(mnOut == DEF_LINE_WIDTH_0 && mnIn == DEF_LINE_WIDTH_0 && mnDis == DEF_LINE_WIDTH_2) //6
     604           0 :         mpTBLineStyle->SetItemImage(nIdBorderLineStyle, maIMGLineStyle6);
     605           0 :     else if(mnOut == DEF_LINE_WIDTH_1 && mnIn == DEF_LINE_WIDTH_2 && mnDis == DEF_LINE_WIDTH_1) //7
     606           0 :         mpTBLineStyle->SetItemImage(nIdBorderLineStyle, maIMGLineStyle7);
     607           0 :     else if(mnOut == DEF_LINE_WIDTH_2 && mnIn == DEF_LINE_WIDTH_0 && mnDis == DEF_LINE_WIDTH_2) //8
     608           0 :         mpTBLineStyle->SetItemImage(nIdBorderLineStyle, maIMGLineStyle8);
     609           0 :     else if(mnOut == DEF_LINE_WIDTH_2 && mnIn == DEF_LINE_WIDTH_2 && mnDis == DEF_LINE_WIDTH_2) //9
     610           0 :         mpTBLineStyle->SetItemImage(nIdBorderLineStyle, maIMGLineStyle9);
     611             :     else
     612           0 :         mpTBLineStyle->SetItemImage(nIdBorderLineStyle, maIMGLineStyle1);
     613           0 : }
     614             : 
     615           0 : void CellAppearancePropertyPanel::UpdateControlState()
     616             : {
     617           0 :     if(mbOuterBorder || mbInnerBorder || mbTLBR || mbBLTR)
     618             :     {
     619           0 :         mpTBLineColor->Enable();
     620           0 :         mpTBLineStyle->Enable();
     621             : 
     622             :         //set line color state
     623           0 :         if( mbLineColorAvailable && !mbTLBR && !mbBLTR )
     624           0 :             mpLineColorUpdater->Update(maLineColor);
     625           0 :         else if( !mbLineColorAvailable && mbTLBR && !mbBLTR )
     626           0 :             mpLineColorUpdater->Update(maTLBRColor);
     627           0 :         else if ( !mbLineColorAvailable && !mbTLBR && mbBLTR )
     628           0 :             mpLineColorUpdater->Update(maBLTRColor);
     629           0 :         else if( !mbLineColorAvailable && mbTLBR && mbBLTR)
     630             :         {
     631           0 :             if( maTLBRColor == maBLTRColor)
     632           0 :                 mpLineColorUpdater->Update(maBLTRColor);
     633             :             else
     634           0 :                 mpLineColorUpdater->Update(COL_TRANSPARENT);
     635             :         }
     636           0 :         else if( mbLineColorAvailable && mbTLBR && !mbBLTR )
     637             :         {
     638           0 :             if( maTLBRColor == maLineColor)
     639           0 :                 mpLineColorUpdater->Update(maLineColor);
     640             :             else
     641           0 :                 mpLineColorUpdater->Update(COL_TRANSPARENT);
     642             :         }
     643           0 :         else if( mbLineColorAvailable && !mbTLBR && mbBLTR )
     644             :         {
     645           0 :             if( maBLTRColor == maLineColor)
     646           0 :                 mpLineColorUpdater->Update(maLineColor);
     647             :             else
     648           0 :                 mpLineColorUpdater->Update(COL_TRANSPARENT);
     649             :         }
     650             :         else
     651           0 :             mpLineColorUpdater->Update(COL_TRANSPARENT);
     652             : 
     653             :         //set line style state
     654           0 :         if( mbBorderStyleAvailable && !mbTLBR && !mbBLTR )
     655             :         {
     656             :         }
     657           0 :         else if( !mbBorderStyleAvailable && mbTLBR && !mbBLTR )
     658             :         {
     659           0 :             mnIn = mnTLBRIn;
     660           0 :             mnOut = mnTLBROut;
     661           0 :             mnDis = mnTLBRDis;
     662             :         }
     663           0 :         else if ( !mbBorderStyleAvailable && !mbTLBR && mbBLTR )
     664             :         {
     665           0 :             mnIn = mnBLTRIn;
     666           0 :             mnOut = mnBLTROut;
     667           0 :             mnDis = mnBLTRDis;
     668             :         }
     669           0 :         else if( !mbBorderStyleAvailable && mbTLBR && mbBLTR)
     670             :         {
     671           0 :             if( mnTLBRIn == mnBLTRIn && mnTLBROut == mnBLTROut && mnTLBRDis == mnBLTRDis)
     672             :             {
     673           0 :                 mnIn = mnTLBRIn;
     674           0 :                 mnOut = mnTLBROut;
     675           0 :                 mnDis = mnTLBRDis;
     676             :             }
     677             :             else
     678             :             {
     679           0 :                 mnIn = 0;
     680           0 :                 mnOut = 0;
     681           0 :                 mnDis = 0;
     682             :             }
     683             :         }
     684           0 :         else if( mbBorderStyleAvailable && mbTLBR && !mbBLTR )
     685             :         {
     686           0 :             if( mnTLBRIn != mnIn || mnTLBROut != mnOut || mnTLBRDis != mnDis)
     687             :             {
     688           0 :                 mnIn = 0;
     689           0 :                 mnOut = 0;
     690           0 :                 mnDis = 0;
     691             :             }
     692             :         }
     693           0 :         else if( mbBorderStyleAvailable && !mbTLBR && mbBLTR )
     694             :         {
     695           0 :             if(  mnBLTRIn != mnIn || mnBLTROut != mnOut || mnBLTRDis != mnDis )
     696             :             {
     697           0 :                 mnIn = 0;
     698           0 :                 mnOut = 0;
     699           0 :                 mnDis = 0;
     700             :             }
     701             :         }
     702             :         else
     703             :         {
     704           0 :             mnIn = 0;
     705           0 :             mnOut = 0;
     706           0 :             mnDis = 0;
     707             :         }
     708           0 :         SetStyleIcon();
     709             :     }
     710             :     else
     711             :     {
     712           0 :         mpTBLineColor->Disable();
     713           0 :         mpTBLineStyle->Disable();
     714             :     }
     715           0 : }
     716             : 
     717             : // namespace close
     718             : 
     719         228 : }} // end of namespace ::sc::sidebar
     720             : 
     721             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10