in main/sc/source/ui/sidebar/CellAppearancePropertyPanel.cxx [467:743]
void CellAppearancePropertyPanel::NotifyItemUpdate(
sal_uInt16 nSID,
SfxItemState eState,
const SfxPoolItem* pState,
const bool bIsEnabled)
{
(void)bIsEnabled;
switch(nSID)
{
case SID_BACKGROUND_COLOR:
if(eState >= SFX_ITEM_DEFAULT)
{
const SvxColorItem* pSvxColorItem = dynamic_cast< const SvxColorItem* >(pState);
if(pSvxColorItem)
{
maBackColor = ((const SvxColorItem*)pState)->GetValue();
mbBackColorAvailable = true;
mpFillColorUpdater->Update(maBackColor);
break;
}
}
mbBackColorAvailable = false;
maBackColor.SetColor(COL_TRANSPARENT);
mpFillColorUpdater->Update(COL_TRANSPARENT);
break;
case SID_FRAME_LINECOLOR:
if( eState == SFX_ITEM_DONTCARE)
{
mbLineColorAvailable = true;
maLineColor.SetColor( COL_TRANSPARENT );
UpdateControlState();
break;
}
if(eState >= SFX_ITEM_DEFAULT && pState && pState->ISA(SvxColorItem) )
{
const SvxColorItem* pSvxColorItem = dynamic_cast< const SvxColorItem* >(pState);
if(pSvxColorItem)
{
maLineColor = ((const SvxColorItem*)pState)->GetValue();
if(maLineColor == COL_AUTO)
mbLineColorAvailable = false;
else
{
mbLineColorAvailable = true;
// mpLineColorUpdater->Update(maLineColor);
}
UpdateControlState();
break;
}
}
mbLineColorAvailable = false;
maLineColor.SetColor(COL_AUTO);
// mpLineColorUpdater->Update(maLineColor);
UpdateControlState();
break;
case SID_FRAME_LINESTYLE:
if( eState == SFX_ITEM_DONTCARE )
{
mbBorderStyleAvailable = true;
mnIn = 0;
mnOut = 0;
mnDis = 0;
SetStyleIcon();
break;
}
if(eState >= SFX_ITEM_DEFAULT)
{
const SvxLineItem* pSvxLineItem = dynamic_cast< const SvxLineItem* >(pState);
if(pSvxLineItem)
{
const SvxBorderLine* mbLineItem = pSvxLineItem->GetLine();
mnIn = mbLineItem->GetInWidth();
mnOut = mbLineItem->GetOutWidth();
mnDis = mbLineItem->GetDistance();
if(mnIn == 0 && mnOut == 0 && mnDis == 0)
mbBorderStyleAvailable = false;
else
mbBorderStyleAvailable = true;
SetStyleIcon();
break;
}
}
mbBorderStyleAvailable = false;
SetStyleIcon();
break;
case SID_ATTR_BORDER_OUTER:
if(eState >= SFX_ITEM_DEFAULT)
{
const SvxBoxItem* pBoxItem = dynamic_cast< const SvxBoxItem* >(pState);
if(pBoxItem)
{
mbLeft=false, mbRight=false, mbTop=false, mbBottom=false;
if(pBoxItem->GetLeft())
mbLeft = true;
if(pBoxItem->GetRight())
mbRight = true;
if(pBoxItem->GetTop())
mbTop = true;
if(pBoxItem->GetBottom())
mbBottom = true;
if(!Application::GetSettings().GetLayoutRTL())
mpCellBorderUpdater->UpdateCellBorder(mbTop, mbBottom, mbLeft, mbRight, maIMGCellBorder, mbVer, mbHor);
else
mpCellBorderUpdater->UpdateCellBorder(mbTop, mbBottom, mbRight, mbLeft, maIMGCellBorder, mbVer, mbHor);
if(mbLeft || mbRight || mbTop || mbBottom)
mbOuterBorder = true;
else
mbOuterBorder = false;
UpdateControlState();
}
}
break;
case SID_ATTR_BORDER_INNER:
if(eState >= SFX_ITEM_DEFAULT)
{
const SvxBoxInfoItem* pBoxInfoItem = dynamic_cast< const SvxBoxInfoItem* >(pState);
if(pBoxInfoItem)
{
bool bLeft(false), bRight(false), bTop(false), bBottom(false);
mbVer = false, mbHor = false;
if(!pBoxInfoItem->IsValid( VALID_VERT ) || pBoxInfoItem->GetVert())
mbVer = true;
if(!pBoxInfoItem->IsValid( VALID_HORI ) || pBoxInfoItem->GetHori())
mbHor = true;
if(!pBoxInfoItem->IsValid( VALID_LEFT ) || mbLeft)
bLeft = true;
if(!pBoxInfoItem->IsValid( VALID_RIGHT ) || mbRight)
bRight = true;
if(!pBoxInfoItem->IsValid( VALID_TOP ) || mbTop)
bTop = true;
if(!pBoxInfoItem->IsValid( VALID_BOTTOM ) || mbBottom)
bBottom = true;
if(!Application::GetSettings().GetLayoutRTL())
mpCellBorderUpdater->UpdateCellBorder(bTop, bBottom, bLeft, bRight, maIMGCellBorder, mbVer, mbHor);
else
mpCellBorderUpdater->UpdateCellBorder(bTop, bBottom, bRight, bLeft, maIMGCellBorder, mbVer, mbHor);
if(mbVer || mbHor || bLeft || bRight || bTop || bBottom)
mbInnerBorder = true;
else
mbInnerBorder = false;
UpdateControlState();
}
}
break;
case SID_ATTR_BORDER_DIAG_TLBR:
if( eState == SFX_ITEM_DONTCARE )
{
mbTLBR = true;
maTLBRColor.SetColor(COL_TRANSPARENT);
mnTLBRIn = mnTLBROut = mnTLBRDis = 0;
UpdateControlState();
break;
}
if(eState >= SFX_ITEM_DEFAULT)
{
const SvxLineItem* pItem = dynamic_cast< const SvxLineItem* >(pState);
if(pItem)
{
const SvxBorderLine* aLine = pItem->GetLine();
if(!aLine)
{
mbTLBR = false;
}
else
{
mbTLBR = true;
maTLBRColor = aLine->GetColor();
mnTLBRIn = aLine->GetInWidth();
mnTLBROut = aLine->GetOutWidth();
mnTLBRDis = aLine->GetDistance();
if(mnTLBRIn == 0 && mnTLBROut == 0 && mnTLBRDis == 0)
mbTLBR = false;
}
UpdateControlState();
break;
}
}
mbTLBR = false;
UpdateControlState();
break;
case SID_ATTR_BORDER_DIAG_BLTR:
if( eState == SFX_ITEM_DONTCARE )
{
mbBLTR = true;
maBLTRColor.SetColor( COL_TRANSPARENT );
mnBLTRIn = mnBLTROut = mnBLTRDis = 0;
UpdateControlState();
break;
}
if(eState >= SFX_ITEM_DEFAULT)
{
const SvxLineItem* pItem = dynamic_cast< const SvxLineItem* >(pState);
if(pItem)
{
const SvxBorderLine* aLine = pItem->GetLine();
if(!aLine)
{
mbBLTR = false;
}
else
{
mbBLTR = true;
maBLTRColor = aLine->GetColor();
mnBLTRIn = aLine->GetInWidth();
mnBLTROut = aLine->GetOutWidth();
mnBLTRDis = aLine->GetDistance();
if(mnBLTRIn == 0 && mnBLTROut == 0 && mnBLTRDis == 0)
mbBLTR = false;
}
UpdateControlState();
}
break;
}
mbBLTR = false;
UpdateControlState();
break;
case SID_SCGRIDSHOW:
if(eState >= SFX_ITEM_DEFAULT)
{
const SfxBoolItem* pItem = dynamic_cast< const SfxBoolItem* >(pState);
if(pItem)
{
const bool bVal = pItem->GetValue();
if(bVal)
mpCBXShowGrid->Check(true);
else
mpCBXShowGrid->Check(false);
}
}
break;
}
}