void AreaPropertyPanel::NotifyItemUpdate()

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