tdf#128150 Adapt sidebar to new "use slide background" property
Change-Id: Idce049a7498f98b0079c708236cfeff7fddd6e95
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135963
Tested-by: Jenkins
Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>
diff --git a/chart2/source/controller/sidebar/ChartAreaPanel.cxx b/chart2/source/controller/sidebar/ChartAreaPanel.cxx
index b54df41e..71e978e 100644
--- a/chart2/source/controller/sidebar/ChartAreaPanel.cxx
+++ b/chart2/source/controller/sidebar/ChartAreaPanel.cxx
@@ -408,6 +408,11 @@ void ChartAreaPanel::setFillStyleAndBitmap(const XFillStyleItem* pStyleItem,
xPropSet->setPropertyValue("FillBitmapName", aBitmap);
}
void ChartAreaPanel::setFillUseBackground(const XFillStyleItem* /*pStyleItem*/,
const XFillUseSlideBackgroundItem& /*rItem*/)
{
}
void ChartAreaPanel::updateData()
{
if (!mbUpdate || !mbModelValid)
diff --git a/chart2/source/controller/sidebar/ChartAreaPanel.hxx b/chart2/source/controller/sidebar/ChartAreaPanel.hxx
index 1325134..75caf8d 100644
--- a/chart2/source/controller/sidebar/ChartAreaPanel.hxx
+++ b/chart2/source/controller/sidebar/ChartAreaPanel.hxx
@@ -57,6 +57,7 @@ public:
virtual void setFillStyleAndGradient(const XFillStyleItem* pStyleItem, const XFillGradientItem& rGradientItem) override;
virtual void setFillStyleAndHatch(const XFillStyleItem* pStyleItem, const XFillHatchItem& rHatchItem) override;
virtual void setFillStyleAndBitmap(const XFillStyleItem* pStyleItem, const XFillBitmapItem& rBitmapItem) override;
virtual void setFillUseBackground(const XFillStyleItem* pStyleItem, const XFillUseSlideBackgroundItem& rItem) override;
virtual void updateData() override;
virtual void modelInvalid() override;
diff --git a/include/svx/sidebar/AreaPropertyPanelBase.hxx b/include/svx/sidebar/AreaPropertyPanelBase.hxx
index 12fcebe..00519eed 100644
--- a/include/svx/sidebar/AreaPropertyPanelBase.hxx
+++ b/include/svx/sidebar/AreaPropertyPanelBase.hxx
@@ -24,6 +24,7 @@
#include <sfx2/sidebar/ControllerItem.hxx>
#include <svx/colorbox.hxx>
#include <svx/xgrad.hxx>
#include <svx/xfilluseslidebackgrounditem.hxx>
#include <svx/xfillit0.hxx>
#include <svx/xflclit.hxx>
#include <svx/xflgrit.hxx>
@@ -35,6 +36,7 @@
class ToolbarUnoDispatcher;
class XFillFloatTransparenceItem;
class XFillUseSlideBackgroundItem;
class XFillTransparenceItem;
class XFillStyleItem;
class XFillGradientItem;
@@ -84,6 +86,7 @@ public:
virtual void setFillStyleAndGradient(const XFillStyleItem* pStyleItem, const XFillGradientItem& aGradientItem) = 0;
virtual void setFillStyleAndHatch(const XFillStyleItem* pStyleItem, const XFillHatchItem& aHatchItem) = 0;
virtual void setFillStyleAndBitmap(const XFillStyleItem* pStyleItem, const XFillBitmapItem& aHatchItem) = 0;
virtual void setFillUseBackground(const XFillStyleItem* pStyleItem, const XFillUseSlideBackgroundItem& rItem) = 0;
void updateFillTransparence(bool bDisabled, bool bDefaultOrSet, const SfxPoolItem* pState);
void updateFillFloatTransparence(bool bDisabled, bool bDefaultOrSet, const SfxPoolItem* pState);
@@ -92,6 +95,7 @@ public:
void updateFillHatch(bool bDisabled, bool bDefaultOrSet, const SfxPoolItem* pState);
void updateFillColor(bool bDefaultOrSet, const SfxPoolItem* pState);
void updateFillBitmap(bool BDisabled, bool bDefaultOrSet, const SfxPoolItem* pState);
void updateFillUseBackground(bool BDisabled, bool bDefaultOrSet, const SfxPoolItem* pState);
private:
void Initialize();
@@ -145,6 +149,7 @@ protected:
OUString maImgLinear;
std::unique_ptr< XFillFloatTransparenceItem > mpFloatTransparenceItem;
std::unique_ptr< XFillUseSlideBackgroundItem > mpUseSlideBackgroundItem;
std::unique_ptr< SfxUInt16Item > mpTransparenceItem;
DECL_DLLPRIVATE_LINK(SelectFillTypeHdl, weld::ComboBox&, void );
diff --git a/include/svx/strings.hrc b/include/svx/strings.hrc
index 6df5838..d3e0864 100644
--- a/include/svx/strings.hrc
+++ b/include/svx/strings.hrc
@@ -543,6 +543,7 @@
#define RID_SVXSTR_GRADIENT NC_("RID_SVXSTR_GRADIENT", "Gradient")
#define RID_SVXSTR_BITMAP NC_("RID_SVXSTR_BITMAP", "Bitmap")
#define RID_SVXSTR_PATTERN NC_("RID_SVXSTR_PATTERN", "Pattern")
#define RID_SVXSTR_USE_BACKGROUND NC_("RID_SVXSTR_USE_BACKGROUND", "Use Slide Background")
#define RID_SVXSTR_PATTERN_UNTITLED NC_("RID_SVXSTR_PATTERN_UNTITLED", "Untitled Pattern")
#define RID_SVXSTR_LINESTYLE NC_("RID_SVXSTR_LINESTYLE", "Line Style")
#define RID_SVXSTR_INVISIBLE NC_("RID_SVXSTR_INVISIBLE", "None")
diff --git a/include/svx/svxids.hrc b/include/svx/svxids.hrc
index d50be07..96122a6 100644
--- a/include/svx/svxids.hrc
+++ b/include/svx/svxids.hrc
@@ -966,7 +966,7 @@ class XFillGradientItem;
#define SID_CELL_FORMAT_BORDER ( SID_SVX_START + 1132 )
#define SID_CHAR_DLG_EFFECT ( SID_SVX_START + 1133 )
#define SID_CHAR_DLG_POSITION ( SID_SVX_START + 1134 )
#define SID_ATTR_FILL_USE_SLIDE_BACKGROUND ( SID_SVX_START + 1135 )
#define FN_SVX_SET_NUMBER ( SID_SVX_START + 1136 )
#define FN_SVX_SET_BULLET ( SID_SVX_START + 1137 )
#define FN_SVX_SET_OUTLINE ( SID_SVX_START + 1138 )
diff --git a/include/svx/xfilluseslidebackgrounditem.hxx b/include/svx/xfilluseslidebackgrounditem.hxx
index 5a5cba8..86317a9 100644
--- a/include/svx/xfilluseslidebackgrounditem.hxx
+++ b/include/svx/xfilluseslidebackgrounditem.hxx
@@ -19,12 +19,11 @@ class SVXCORE_DLLPUBLIC XFillUseSlideBackgroundItem final : public SfxBoolItem
public:
XFillUseSlideBackgroundItem(bool bFill = false);
SVX_DLLPRIVATE virtual XFillUseSlideBackgroundItem* Clone(SfxItemPool* pPool
= nullptr) const override;
virtual XFillUseSlideBackgroundItem* Clone(SfxItemPool* pPool = nullptr) const override;
SVX_DLLPRIVATE virtual bool GetPresentation(SfxItemPresentation ePres, MapUnit eCoreMetric,
MapUnit ePresMetric, OUString& rText,
const IntlWrapper&) const override;
virtual bool GetPresentation(SfxItemPresentation ePres, MapUnit eCoreMetric,
MapUnit ePresMetric, OUString& rText,
const IntlWrapper&) const override;
void dumpAsXml(xmlTextWriterPtr pWriter) const override;
};
diff --git a/sd/sdi/_drvwsh.sdi b/sd/sdi/_drvwsh.sdi
index 73c2181..978866b 100644
--- a/sd/sdi/_drvwsh.sdi
+++ b/sd/sdi/_drvwsh.sdi
@@ -1402,6 +1402,11 @@ interface DrawView
ExecMethod = FuTemporary ;
StateMethod = GetAttrState ;
]
SID_ATTR_FILL_USE_SLIDE_BACKGROUND // ole : no, status : ?
[
ExecMethod = FuTemporary ;
StateMethod = GetAttrState ;
]
SID_ATTR_FILL_TRANSPARENCE // ole : no, status : ?
[
ExecMethod = FuTemporary ;
diff --git a/sd/source/ui/func/fuarea.cxx b/sd/source/ui/func/fuarea.cxx
index 4fe0d10..2e35cac 100644
--- a/sd/source/ui/func/fuarea.cxx
+++ b/sd/source/ui/func/fuarea.cxx
@@ -73,6 +73,7 @@ void FuArea::DoExecute( SfxRequest& rReq )
SID_ATTR_FILL_BITMAP,
SID_ATTR_FILL_TRANSPARENCE,
SID_ATTR_FILL_FLOATTRANSPARENCE,
SID_ATTR_FILL_USE_SLIDE_BACKGROUND,
0 };
mpViewShell->GetViewFrame()->GetBindings().Invalidate( SidArray );
diff --git a/sd/source/ui/table/tableobjectbar.cxx b/sd/source/ui/table/tableobjectbar.cxx
index d351094..62d81d9 100644
--- a/sd/source/ui/table/tableobjectbar.cxx
+++ b/sd/source/ui/table/tableobjectbar.cxx
@@ -193,6 +193,7 @@ void TableObjectBar::Execute( SfxRequest& rReq )
pBindings->Invalidate( SID_FRAME_LINECOLOR );
pBindings->Invalidate( SID_ATTR_BORDER );
pBindings->Invalidate( SID_ATTR_FILL_STYLE );
pBindings->Invalidate( SID_ATTR_FILL_USE_SLIDE_BACKGROUND );
pBindings->Invalidate( SID_ATTR_FILL_TRANSPARENCE );
pBindings->Invalidate( SID_ATTR_FILL_FLOATTRANSPARENCE );
pBindings->Invalidate( SID_TABLE_MERGE_CELLS );
diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx
index a8906ac..d7a6bc6 100644
--- a/sd/source/ui/view/drviews2.cxx
+++ b/sd/source/ui/view/drviews2.cxx
@@ -689,6 +689,7 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
case SID_ATTR_SHADOW_BLUR:
case SID_ATTR_SHADOW_XDISTANCE:
case SID_ATTR_SHADOW_YDISTANCE:
case SID_ATTR_FILL_USE_SLIDE_BACKGROUND:
case SID_ATTR_FILL_TRANSPARENCE:
case SID_ATTR_FILL_FLOATTRANSPARENCE:
@@ -727,6 +728,7 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
case SID_ATTR_FILL_GRADIENT:
case SID_ATTR_FILL_HATCH:
case SID_ATTR_FILL_BITMAP:
case SID_ATTR_FILL_USE_SLIDE_BACKGROUND:
case SID_ATTR_FILL_TRANSPARENCE:
case SID_ATTR_FILL_FLOATTRANSPARENCE:
GetViewFrame()->GetDispatcher()->Execute( SID_ATTRIBUTES_AREA, SfxCallMode::ASYNCHRON );
diff --git a/sd/source/ui/view/drviewsf.cxx b/sd/source/ui/view/drviewsf.cxx
index ae47828..8aab2c5 100644
--- a/sd/source/ui/view/drviewsf.cxx
+++ b/sd/source/ui/view/drviewsf.cxx
@@ -410,6 +410,7 @@ void DrawViewShell::GetAttrState( SfxItemSet& rSet )
case SID_ATTR_SHADOW_BLUR:
case SID_ATTR_SHADOW_XDISTANCE:
case SID_ATTR_SHADOW_YDISTANCE:
case SID_ATTR_FILL_USE_SLIDE_BACKGROUND:
case SID_ATTR_FILL_TRANSPARENCE:
case SID_ATTR_FILL_FLOATTRANSPARENCE:
case SID_ATTR_LINE_STYLE:
diff --git a/sd/source/ui/view/drviewsj.cxx b/sd/source/ui/view/drviewsj.cxx
index c034b98..a1a7d89 100644
--- a/sd/source/ui/view/drviewsj.cxx
+++ b/sd/source/ui/view/drviewsj.cxx
@@ -65,6 +65,7 @@ void DrawViewShell::GetMenuStateSel( SfxItemSet &rSet )
SfxItemState::DEFAULT == rSet.GetItemState( SID_OBJECT_TITLE_DESCRIPTION ) ||
SfxItemState::DEFAULT == rSet.GetItemState( SID_ATTR_FILL_STYLE ) ||
SfxItemState::DEFAULT == rSet.GetItemState( SID_ATTR_FILL_USE_SLIDE_BACKGROUND ) ||
SfxItemState::DEFAULT == rSet.GetItemState( SID_ATTR_FILL_TRANSPARENCE ) ||
SfxItemState::DEFAULT == rSet.GetItemState( SID_ATTR_FILL_FLOATTRANSPARENCE ) ||
SfxItemState::DEFAULT == rSet.GetItemState( SID_CHANGEBEZIER ) ||
@@ -167,6 +168,7 @@ void DrawViewShell::GetMenuStateSel( SfxItemSet &rSet )
{
//rSet.DisableItem( SID_ATTRIBUTES_AREA ); // remove again!
rSet.DisableItem( SID_ATTR_FILL_STYLE );
rSet.DisableItem( SID_ATTR_FILL_USE_SLIDE_BACKGROUND );
rSet.DisableItem( SID_ATTR_FILL_TRANSPARENCE );
rSet.DisableItem( SID_ATTR_FILL_FLOATTRANSPARENCE );
}
@@ -389,6 +391,7 @@ void DrawViewShell::GetMenuStateSel( SfxItemSet &rSet )
if( bLine && !bText && !bDrawObj &&!b3dObj)
{
rSet.DisableItem( SID_ATTR_FILL_STYLE );
rSet.DisableItem( SID_ATTR_FILL_USE_SLIDE_BACKGROUND );
rSet.DisableItem( SID_ATTR_FILL_TRANSPARENCE );
rSet.DisableItem( SID_ATTR_FILL_FLOATTRANSPARENCE );
}
diff --git a/svx/sdi/svx.sdi b/svx/sdi/svx.sdi
index de7ef99..0336b6c 100644
--- a/svx/sdi/svx.sdi
+++ b/svx/sdi/svx.sdi
@@ -11769,8 +11769,24 @@ SfxBoolItem PrepareMailExport SID_MAIL_PREPAREEXPORT
GroupId = SfxGroupId::Explorer;
]
/* TODO: SfxBoolItem or XFillUseSlideBackgroundItem ? */
SfxBoolItem FillUseSlideBackground SID_ATTR_FILL_USE_SLIDE_BACKGROUND
[
AutoUpdate = TRUE,
FastCall = FALSE,
ReadOnlyDoc = FALSE,
Toggle = FALSE,
Container = FALSE,
RecordAbsolute = FALSE,
RecordPerSet;
AccelConfig = FALSE,
MenuConfig = FALSE,
ToolBoxConfig = FALSE,
GroupId = SfxGroupId::Format;
]
SfxUInt16Item FillTransparence SID_ATTR_FILL_TRANSPARENCE
[
AutoUpdate = TRUE,
diff --git a/svx/source/sidebar/area/AreaPropertyPanel.cxx b/svx/source/sidebar/area/AreaPropertyPanel.cxx
index b4d22f6..1bcbdac 100644
--- a/svx/source/sidebar/area/AreaPropertyPanel.cxx
+++ b/svx/source/sidebar/area/AreaPropertyPanel.cxx
@@ -46,6 +46,7 @@ AreaPropertyPanel::AreaPropertyPanel(
maPatternListControl(SID_PATTERN_LIST, *pBindings, *this),
maFillTransparenceController(SID_ATTR_FILL_TRANSPARENCE, *pBindings, *this),
maFillFloatTransparenceController(SID_ATTR_FILL_FLOATTRANSPARENCE, *pBindings, *this),
maFillUseSlideBackgroundController(SID_ATTR_FILL_USE_SLIDE_BACKGROUND, *pBindings, *this),
mpBindings(pBindings)
{
}
@@ -86,6 +87,14 @@ void AreaPropertyPanel::setFillTransparence(const XFillTransparenceItem& rItem)
SfxCallMode::RECORD, { &rItem });
}
void AreaPropertyPanel::setFillUseBackground(const XFillStyleItem* pStyleItem,
const XFillUseSlideBackgroundItem& rItem)
{
GetBindings()->GetDispatcher()->ExecuteList(
SID_ATTR_FILL_USE_SLIDE_BACKGROUND, SfxCallMode::RECORD,
std::initializer_list<SfxPoolItem const*>{ &rItem, pStyleItem });
}
void AreaPropertyPanel::setFillFloatTransparence(const XFillFloatTransparenceItem& rItem)
{
GetBindings()->GetDispatcher()->ExecuteList(SID_ATTR_FILL_FLOATTRANSPARENCE,
diff --git a/svx/source/sidebar/area/AreaPropertyPanel.hxx b/svx/source/sidebar/area/AreaPropertyPanel.hxx
index ec7c122..6c398e6 100644
--- a/svx/source/sidebar/area/AreaPropertyPanel.hxx
+++ b/svx/source/sidebar/area/AreaPropertyPanel.hxx
@@ -30,6 +30,7 @@
class XFillFloatTransparenceItem;
class XFillTransparenceItem;
class XFillUseSlideBackgroundItem;
class XFillStyleItem;
class XFillGradientItem;
class XFillColorItem;
@@ -59,6 +60,7 @@ public:
virtual ~AreaPropertyPanel() override;
virtual void setFillTransparence(const XFillTransparenceItem& rItem) override;
virtual void setFillUseBackground(const XFillStyleItem* pStyleItem, const XFillUseSlideBackgroundItem& rItem) override;
virtual void setFillFloatTransparence(const XFillFloatTransparenceItem& rItem) override;
virtual void setFillStyle(const XFillStyleItem& rItem) override;
virtual void setFillStyleAndColor(const XFillStyleItem* pStyleItem, const XFillColorItem& aColorItem) override;
@@ -78,6 +80,7 @@ private:
::sfx2::sidebar::ControllerItem maPatternListControl;
::sfx2::sidebar::ControllerItem maFillTransparenceController;
::sfx2::sidebar::ControllerItem maFillFloatTransparenceController;
::sfx2::sidebar::ControllerItem maFillUseSlideBackgroundController;
SfxBindings* mpBindings;
};
diff --git a/svx/source/sidebar/area/AreaPropertyPanelBase.cxx b/svx/source/sidebar/area/AreaPropertyPanelBase.cxx
index baaf3c4..8019705 100644
--- a/svx/source/sidebar/area/AreaPropertyPanelBase.cxx
+++ b/svx/source/sidebar/area/AreaPropertyPanelBase.cxx
@@ -25,6 +25,7 @@
#include <sfx2/objsh.hxx>
#include <svx/xfltrit.hxx>
#include <svx/xflftrit.hxx>
#include <svx/xfilluseslidebackgrounditem.hxx>
#include <svx/xtable.hxx>
#include <sfx2/sidebar/Panel.hxx>
#include <sfx2/opengrf.hxx>
@@ -49,7 +50,8 @@ enum eFillStyle
GRADIENT,
HATCH,
BITMAP,
PATTERN
PATTERN,
USE_BACKGROUND
};
}
@@ -421,6 +423,22 @@ IMPL_LINK_NOARG(AreaPropertyPanelBase, SelectFillTypeHdl, weld::ComboBox&, void)
setFillStyleAndBitmap(&aXFillStyleItem, aXFillBitmapItem);
break;
}
case USE_BACKGROUND:
{
mxLbFillAttr->show();
mxLbFillGradFrom->hide();
mxLbFillGradTo->hide();
mxGradientStyle->hide();
mxMTRAngle->hide();
mxToolBoxColor->hide();
mxBmpImport->hide();
mxLbFillAttr->set_sensitive(false);
const XFillStyleItem aXFillStyleItem(drawing::FillStyle_NONE);
const XFillUseSlideBackgroundItem aXFillUseSlideBackgroundItem(true);
setFillUseBackground(&aXFillStyleItem, aXFillUseSlideBackgroundItem);
break;
}
}
meLastXFS = static_cast<sal_uInt16>(nPos);
@@ -972,6 +990,35 @@ void AreaPropertyPanelBase::updateFillBitmap(bool bDisabled, bool bDefaultOrSet,
m_pPanel->TriggerDeckLayouting();
}
void AreaPropertyPanelBase::updateFillUseBackground(bool bDisabled, bool bDefaultOrSet, const SfxPoolItem* pState)
{
if (bDisabled)
{
mpUseSlideBackgroundItem.reset();
return;
}
if (bDefaultOrSet)
{
if (pState)
{
const XFillUseSlideBackgroundItem* pItem = static_cast<const XFillUseSlideBackgroundItem*>(pState);
// When XFillUseSlideBackgroundItem is true, select "Use Background Fill". When false, select "None"
int nPos = pItem->GetValue() ? 6 : 0;
mxLbFillType->set_active(nPos);
mpUseSlideBackgroundItem.reset(pItem->Clone());
}
else
{
mpUseSlideBackgroundItem.reset();
}
}
else
{
mpUseSlideBackgroundItem.reset();
}
}
void AreaPropertyPanelBase::NotifyItemUpdate(
sal_uInt16 nSID,
SfxItemState eState,
@@ -1004,6 +1051,9 @@ void AreaPropertyPanelBase::NotifyItemUpdate(
case SID_ATTR_FILL_BITMAP:
updateFillBitmap(bDisabled, bDefaultOrSet, pState);
break;
case SID_ATTR_FILL_USE_SLIDE_BACKGROUND:
updateFillUseBackground(bDisabled, bDefaultOrSet, pState);
break;
case SID_GRADIENT_LIST:
{
if(bDefault)
diff --git a/svx/source/tbxctrls/itemwin.cxx b/svx/source/tbxctrls/itemwin.cxx
index 130fba5..1a9b6d3 100644
--- a/svx/source/tbxctrls/itemwin.cxx
+++ b/svx/source/tbxctrls/itemwin.cxx
@@ -180,6 +180,7 @@ void SvxFillTypeBox::Fill(weld::ComboBox& rListBox)
rListBox.append_text(SvxResId(RID_SVXSTR_HATCH));
rListBox.append_text(SvxResId(RID_SVXSTR_BITMAP));
rListBox.append_text(SvxResId(RID_SVXSTR_PATTERN));
rListBox.append_text(SvxResId(RID_SVXSTR_USE_BACKGROUND));
rListBox.thaw();
diff --git a/svx/source/xoutdev/xpool.cxx b/svx/source/xoutdev/xpool.cxx
index 771b79a..b3e044e 100644
--- a/svx/source/xoutdev/xpool.cxx
+++ b/svx/source/xoutdev/xpool.cxx
@@ -182,6 +182,7 @@ XOutdevItemPool::XOutdevItemPool(SfxItemPool* _pMaster)
mpLocalItemInfos[XATTR_FORMTXTHIDEFORM -XATTR_START]._nSID = SID_FORMTEXT_HIDEFORM;
// associate new slots for panels with known items
mpLocalItemInfos[XATTR_FILLUSESLIDEBACKGROUND - XATTR_START]._nSID = SID_ATTR_FILL_USE_SLIDE_BACKGROUND;
mpLocalItemInfos[XATTR_FILLTRANSPARENCE - XATTR_START]._nSID = SID_ATTR_FILL_TRANSPARENCE;
mpLocalItemInfos[XATTR_FILLFLOATTRANSPARENCE - XATTR_START]._nSID = SID_ATTR_FILL_FLOATTRANSPARENCE;
mpLocalItemInfos[XATTR_LINETRANSPARENCE - XATTR_START]._nSID = SID_ATTR_LINE_TRANSPARENCE;