in main/svx/source/sidebar/area/AreaPropertyPanel.cxx [838:1177]
void AreaPropertyPanel::NotifyItemUpdate(
sal_uInt16 nSID,
SfxItemState eState,
const SfxPoolItem* pState,
const bool bIsEnabled)
{
(void)bIsEnabled;
const bool bDisabled(SFX_ITEM_DISABLED == eState);
switch(nSID)
{
case SID_ATTR_FILL_TRANSPARENCE:
case SID_ATTR_FILL_FLOATTRANSPARENCE:
{
bool bFillTransparenceChanged(false);
if(SID_ATTR_FILL_TRANSPARENCE == nSID)
{
bFillTransparenceChanged = true;
if(eState >= SFX_ITEM_AVAILABLE)
{
const SfxUInt16Item* pItem = dynamic_cast< const SfxUInt16Item* >(pState);
if(pItem && (!mpTransparanceItem || *pItem != *mpTransparanceItem))
{
mpTransparanceItem.reset((SfxUInt16Item*)pItem->Clone());
}
else
{
mpTransparanceItem.reset();
}
}
else
{
mpTransparanceItem.reset();
}
}
else // if(SID_ATTR_FILL_FLOATTRANSPARENCE == nSID)
{
bFillTransparenceChanged = true;
if(eState >= SFX_ITEM_AVAILABLE)
{
const XFillFloatTransparenceItem* pItem = dynamic_cast< const XFillFloatTransparenceItem* >(pState);
if(pItem && (!mpFloatTransparenceItem || *pItem != *mpFloatTransparenceItem))
{
mpFloatTransparenceItem.reset((XFillFloatTransparenceItem*)pItem->Clone());
}
else
{
mpFloatTransparenceItem.reset();
}
}
else
{
mpFloatTransparenceItem.reset();
}
}
if(bFillTransparenceChanged)
{
// update transparency settings dependent of mpTransparanceItem and mpFloatTransparenceItem
ImpUpdateTransparencies();
}
break;
}
case SID_ATTR_FILL_STYLE:
{
if(bDisabled)
{
mpLbFillType->Disable();
mpColorTextFT->Disable();
mpLbFillType->SetNoSelection();
mpLbFillAttr->Show();
mpLbFillAttr->Disable();
mpLbFillAttr->SetNoSelection();
mpToolBoxColor->Hide();
meLastXFS = -1;
mpStyleItem.reset();
}
if(eState >= SFX_ITEM_AVAILABLE)
{
const XFillStyleItem* pItem = dynamic_cast< const XFillStyleItem* >(pState);
if(pItem)
{
mpStyleItem.reset(dynamic_cast< XFillStyleItem* >(pItem->Clone()));
mpLbFillType->Enable();
mpColorTextFT->Enable();
XFillStyle eXFS = (XFillStyle)mpStyleItem->GetValue();
meLastXFS = eXFS;
mpLbFillType->SelectEntryPos(sal::static_int_cast< sal_uInt16 >(eXFS));
if(XFILL_NONE == eXFS)
{
mpLbFillAttr->SetNoSelection();
mpLbFillAttr->Disable();
}
Update();
break;
}
}
mpLbFillType->SetNoSelection();
mpLbFillAttr->Show();
mpLbFillAttr->Disable();
mpLbFillAttr->SetNoSelection();
mpToolBoxColor->Hide();
meLastXFS = -1;
mpStyleItem.reset();
break;
}
case SID_ATTR_FILL_COLOR:
{
if(SFX_ITEM_AVAILABLE == eState)
{
mpColorItem.reset(pState ? (XFillColorItem*)pState->Clone() : 0);
}
if(mpStyleItem && XFILL_SOLID == (XFillStyle)mpStyleItem->GetValue())
{
mpLbFillAttr->Hide();
mpToolBoxColor->Show();
if(SFX_ITEM_AVAILABLE == eState)
{
mpToolBoxColor->Enable();
mbColorAvail = true;
//maLastColor = mpColorItem->GetColorValue();
Update();
}
else if(SFX_ITEM_DISABLED == eState)
{
mpToolBoxColor->Disable();
mbColorAvail = false;
mpColorUpdater->Update(COL_WHITE);
}
else
{
mbColorAvail = false;
mpColorUpdater->Update(COL_WHITE);
}
}
break;
}
case SID_ATTR_FILL_GRADIENT:
{
if(SFX_ITEM_AVAILABLE == eState)
{
mpFillGradientItem.reset(pState ? (XFillGradientItem*)pState->Clone() : 0);
}
if(mpStyleItem && XFILL_GRADIENT == (XFillStyle)mpStyleItem->GetValue())
{
mpLbFillAttr->Show();
mpToolBoxColor->Hide();
if(SFX_ITEM_AVAILABLE == eState)
{
mpLbFillAttr->Enable();
Update();
}
else if(SFX_ITEM_DISABLED == eState )
{
mpLbFillAttr->Disable();
mpLbFillAttr->SetNoSelection();
}
else
{
mpLbFillAttr->SetNoSelection();
}
}
break;
}
case SID_ATTR_FILL_HATCH:
{
if(SFX_ITEM_AVAILABLE == eState)
{
mpHatchItem.reset(pState ? (XFillHatchItem*)pState->Clone() : 0);
}
if(mpStyleItem && XFILL_HATCH == (XFillStyle)mpStyleItem->GetValue())
{
mpLbFillAttr->Show();
mpToolBoxColor->Hide();
if(SFX_ITEM_AVAILABLE == eState)
{
mpLbFillAttr->Enable();
Update();
}
else if(SFX_ITEM_DISABLED == eState )
{
mpLbFillAttr->Disable();
mpLbFillAttr->SetNoSelection();
}
else
{
mpLbFillAttr->SetNoSelection();
}
}
break;
}
case SID_ATTR_FILL_BITMAP:
{
if(SFX_ITEM_AVAILABLE == eState)
{
mpBitmapItem.reset(pState ? (XFillBitmapItem*)pState->Clone() : 0);
}
if(mpStyleItem && XFILL_BITMAP == (XFillStyle)mpStyleItem->GetValue())
{
mpLbFillAttr->Show();
mpToolBoxColor->Hide();
if(SFX_ITEM_AVAILABLE == eState)
{
mpLbFillAttr->Enable();
Update();
}
else if(SFX_ITEM_DISABLED == eState )
{
mpLbFillAttr->Disable();
mpLbFillAttr->SetNoSelection();
}
else
{
mpLbFillAttr->SetNoSelection();
}
}
break;
}
case SID_COLOR_TABLE:
{
if(SFX_ITEM_AVAILABLE == eState)
{
if(mpStyleItem && XFILL_SOLID == (XFillStyle)mpStyleItem->GetValue())
{
if(mpColorItem)
{
const Color aColor = mpColorItem->GetColorValue();
const SfxObjectShell* pSh = SfxObjectShell::Current();
const SvxColorTableItem aItem(*(const SvxColorTableItem*)(pSh->GetItem(SID_COLOR_TABLE)));
mpLbFillAttr->Clear();
mpLbFillAttr->Enable();
mpLbFillAttr->Fill(aItem.GetColorTable());
mpLbFillAttr->SelectEntry(aColor);
}
else
{
mpLbFillAttr->SetNoSelection();
}
}
}
break;
}
case SID_GRADIENT_LIST:
{
if(SFX_ITEM_AVAILABLE == eState)
{
if(mpStyleItem && XFILL_GRADIENT == (XFillStyle)mpStyleItem->GetValue())
{
if(mpFillGradientItem)
{
const String aString( mpFillGradientItem->GetName() );
const SfxObjectShell* pSh = SfxObjectShell::Current();
const SvxGradientListItem aItem( *(const SvxGradientListItem*)(pSh->GetItem(SID_GRADIENT_LIST)));
mpLbFillAttr->Clear();
mpLbFillAttr->Enable();
mpLbFillAttr->Fill(aItem.GetGradientList());
mpLbFillAttr->SelectEntry(aString);
}
else
{
mpLbFillAttr->SetNoSelection();
}
}
}
break;
}
case SID_HATCH_LIST:
{
if(SFX_ITEM_AVAILABLE == eState)
{
if(mpStyleItem && XFILL_HATCH == (XFillStyle)mpStyleItem->GetValue())
{
if(mpHatchItem)
{
const String aString( mpHatchItem->GetName() );
const SfxObjectShell* pSh = SfxObjectShell::Current();
const SvxHatchListItem aItem(*(const SvxHatchListItem*)(pSh->GetItem(SID_HATCH_LIST)));
mpLbFillAttr->Clear();
mpLbFillAttr->Enable();
mpLbFillAttr->Fill(aItem.GetHatchList());
mpLbFillAttr->SelectEntry(aString);
}
else
{
mpLbFillAttr->SetNoSelection();
}
}
}
break;
}
case SID_BITMAP_LIST:
{
if(SFX_ITEM_AVAILABLE == eState)
{
if(mpStyleItem && XFILL_BITMAP == (XFillStyle)mpStyleItem->GetValue())
{
if(mpBitmapItem)
{
const String aString( mpBitmapItem->GetName() );
const SfxObjectShell* pSh = SfxObjectShell::Current();
const SvxBitmapListItem aItem(*(const SvxBitmapListItem*)(pSh->GetItem(SID_BITMAP_LIST)));
mpLbFillAttr->Clear();
mpLbFillAttr->Enable();
mpLbFillAttr->Fill(aItem.GetBitmapList());
mpLbFillAttr->SelectEntry(aString);
}
else
{
mpLbFillAttr->SetNoSelection();
}
}
}
break;
}
}
maLayouter.Layout();
}