void CellAppearancePropertyPanel::NotifyItemUpdate()

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;
	}
}