summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKatarina Behrens <Katarina.Behrens@cib.de>2016-05-06 18:54:18 +0200
committerKatarina Behrens <Katarina.Behrens@cib.de>2016-05-07 12:37:37 +0000
commitd7859f40b0b51c88ea78967ace3f62f76d9786c1 (patch)
tree40d5cf1c7bceb0ef3db7484355901dd6e41c02ef
parent9613b493172fe9aa8efd9c9c090f82ca2e89cf21 (diff)
tdf#89466: Switching between different fill types work now
... somehow ... Change-Id: I6a9ccc60f35a2be092a60c01db04018b736a18b7 Reviewed-on: https://gerrit.libreoffice.org/24706 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Katarina Behrens <Katarina.Behrens@cib.de>
-rw-r--r--sd/source/ui/sidebar/SlideBackground.cxx94
-rw-r--r--sd/source/ui/sidebar/SlideBackground.hxx4
-rw-r--r--sd/source/ui/view/drviews7.cxx18
3 files changed, 102 insertions, 14 deletions
diff --git a/sd/source/ui/sidebar/SlideBackground.cxx b/sd/source/ui/sidebar/SlideBackground.cxx
index 67ab9fce31f0..8a372131f124 100644
--- a/sd/source/ui/sidebar/SlideBackground.cxx
+++ b/sd/source/ui/sidebar/SlideBackground.cxx
@@ -220,7 +220,7 @@ void SlideBackground::Update()
const SvxColorListItem aItem( *static_cast<const SvxColorListItem*>(pSh->GetItem(SID_COLOR_TABLE)));
mpFillLB->Fill(aItem.GetColorList());
- const Color aColor = mpColorItem->GetColorValue();
+ const Color aColor = GetColorSetOrDefault();
mpFillLB->SelectEntry( aColor );
if(mpFillLB->GetSelectEntryCount() == 0)
@@ -241,7 +241,7 @@ void SlideBackground::Update()
mpFillLB->Fill(aItem.GetColorList());
mpFillGrad->Fill(aItem.GetColorList());
- const XGradient xGradient = mpGradientItem->GetGradientValue();
+ const XGradient xGradient = GetGradientSetOrDefault();
const Color aStartColor = xGradient.GetStartColor();
const Color aEndColor = xGradient.GetEndColor();
mpFillLB->SelectEntry( aStartColor );
@@ -270,7 +270,7 @@ void SlideBackground::Update()
mpFillAttr->Fill(aItem.GetHatchList());
mpFillGrad->Hide();
- const OUString aHatchName = mpHatchItem->GetName();
+ const OUString aHatchName = GetHatchingSetOrDefault();
mpFillAttr->SelectEntry( aHatchName );
}
break;
@@ -284,7 +284,7 @@ void SlideBackground::Update()
mpFillAttr->Fill(aItem.GetBitmapList());
mpFillGrad->Hide();
- const OUString aBitmapName = mpBitmapItem->GetName();
+ const OUString aBitmapName = GetBitmapSetOrDefault();
mpFillAttr->SelectEntry( aBitmapName );
}
break;
@@ -321,10 +321,65 @@ void SlideBackground::dispose()
PanelLayout::dispose();
}
+Color SlideBackground::GetColorSetOrDefault()
+{
+ // Tango Sky Blue 1, to be consistent w/ area fill panel (b/c COL_AUTO for slides is transparent)
+ if ( !mpColorItem )
+ mpColorItem.reset( new XFillColorItem( OUString(), Color(0x72, 0x9f, 0xcf) ) );
+
+ return mpColorItem->GetColorValue();
+}
+
+XGradient SlideBackground::GetGradientSetOrDefault()
+{
+ if( !mpGradientItem )
+ {
+ SfxObjectShell* pSh = SfxObjectShell::Current();
+ const SvxGradientListItem aGradListItem(*static_cast<const SvxGradientListItem*>(pSh->GetItem(SID_GRADIENT_LIST)));
+ const XGradient aGradient = aGradListItem.GetGradientList()->GetGradient(0)->GetGradient();
+ const OUString aGradientName = aGradListItem.GetGradientList()->GetGradient(0)->GetName();
+
+ mpGradientItem.reset( new XFillGradientItem( aGradientName, aGradient ) );
+ }
+
+ return mpGradientItem->GetGradientValue();
+}
+
+const OUString SlideBackground::GetHatchingSetOrDefault()
+{
+ if( !mpHatchItem )
+ {
+ SfxObjectShell* pSh = SfxObjectShell::Current();
+ const SvxHatchListItem aHatchListItem(*static_cast<const SvxHatchListItem*>(pSh->GetItem(SID_HATCH_LIST)));
+ const XHatch aHatch = aHatchListItem.GetHatchList()->GetHatch(0)->GetHatch();
+ const OUString aHatchName = aHatchListItem.GetHatchList()->GetHatch(0)->GetName();
+
+ mpHatchItem.reset( new XFillHatchItem( aHatchName, aHatch ) );
+ }
+
+ return mpHatchItem->GetName();
+}
+
+const OUString SlideBackground::GetBitmapSetOrDefault()
+{
+ if( !mpBitmapItem )
+ {
+ SfxObjectShell* pSh = SfxObjectShell::Current();
+ const SvxBitmapListItem aBmpListItem(*static_cast<const SvxBitmapListItem*>(pSh->GetItem(SID_BITMAP_LIST)));
+ const GraphicObject aGraphObj = aBmpListItem.GetBitmapList()->GetBitmap(0)->GetGraphicObject();
+ const OUString aBmpName = aBmpListItem.GetBitmapList()->GetBitmap(0)->GetName();
+
+ mpBitmapItem.reset( new XFillBitmapItem( aBmpName, aGraphObj ) );
+ }
+
+ return mpBitmapItem->GetName();
+}
+
void SlideBackground::DataChanged (const DataChangedEvent& /*rEvent*/)
{
}
+
void SlideBackground::NotifyItemUpdate(
const sal_uInt16 nSID,
const SfxItemState eState,
@@ -492,7 +547,33 @@ IMPL_LINK_NOARG_TYPED(SlideBackground, FillStyleModifyHdl, ListBox&, void)
const drawing::FillStyle eXFS = (drawing::FillStyle)mpFillStyle->GetSelectEntryPos();
const XFillStyleItem aXFillStyleItem(eXFS);
Update();
- GetBindings()->GetDispatcher()->ExecuteList(SID_ATTR_PAGE_FILLSTYLE, SfxCallMode::RECORD, { &aXFillStyleItem });
+
+ switch (eXFS)
+ {
+ case drawing::FillStyle_SOLID:
+ {
+ XFillColorItem aItem( OUString(), mpColorItem->GetColorValue() );
+ GetBindings()->GetDispatcher()->ExecuteList(SID_ATTR_PAGE_COLOR, SfxCallMode::RECORD, { &aItem });
+ }
+ break;
+
+ case drawing::FillStyle_GRADIENT:
+ {
+ XFillGradientItem aItem( mpGradientItem->GetName(), mpGradientItem->GetGradientValue() );
+ GetBindings()->GetDispatcher()->ExecuteList(SID_ATTR_PAGE_GRADIENT, SfxCallMode::RECORD, { &aItem });
+ }
+ break;
+
+ case drawing::FillStyle_HATCH:
+ {
+ XFillHatchItem aItem( mpHatchItem->GetName(), mpHatchItem->GetHatchValue() );
+ GetBindings()->GetDispatcher()->ExecuteList(SID_ATTR_PAGE_HATCH, SfxCallMode::RECORD, { &aItem });
+ }
+ break;
+
+ default:
+ break;
+ }
}
IMPL_LINK_NOARG_TYPED(SlideBackground, PaperSizeModifyHdl, ListBox&, void)
@@ -532,6 +613,7 @@ IMPL_LINK_NOARG_TYPED(SlideBackground, FillColorHdl, ListBox&, void)
XGradient aGradient;
aGradient.SetStartColor(mpFillLB->GetSelectEntryColor());
aGradient.SetEndColor(mpFillGrad->GetSelectEntryColor());
+
XFillGradientItem aItem(aGradient);
GetBindings()->GetDispatcher()->ExecuteList(SID_ATTR_PAGE_GRADIENT, SfxCallMode::RECORD, { &aItem });
}
@@ -554,6 +636,7 @@ IMPL_LINK_NOARG_TYPED(SlideBackground, FillBackgroundHdl, ListBox&, void)
sal_uInt16 nPos = mpFillAttr->GetSelectEntryPos();
XHatch aHatch = aHatchListItem.GetHatchList()->GetHatch(nPos)->GetHatch();
const OUString aHatchName = aHatchListItem.GetHatchList()->GetHatch(nPos)->GetName();
+
XFillHatchItem aItem(aHatchName, aHatch);
GetBindings()->GetDispatcher()->ExecuteList(SID_ATTR_PAGE_HATCH, SfxCallMode::RECORD, { &aItem });
}
@@ -565,6 +648,7 @@ IMPL_LINK_NOARG_TYPED(SlideBackground, FillBackgroundHdl, ListBox&, void)
sal_Int16 nPos = mpFillAttr->GetSelectEntryPos();
GraphicObject aBitmap = aBitmapListItem.GetBitmapList()->GetBitmap(nPos)->GetGraphicObject();
OUString aBitmapName = aBitmapListItem.GetBitmapList()->GetBitmap(nPos)->GetName();
+
XFillBitmapItem aItem(aBitmapName, aBitmap);
GetBindings()->GetDispatcher()->ExecuteList(SID_ATTR_PAGE_BITMAP, SfxCallMode::RECORD, { &aItem });
}
diff --git a/sd/source/ui/sidebar/SlideBackground.hxx b/sd/source/ui/sidebar/SlideBackground.hxx
index 89a71bad772c..1497029d181c 100644
--- a/sd/source/ui/sidebar/SlideBackground.hxx
+++ b/sd/source/ui/sidebar/SlideBackground.hxx
@@ -112,6 +112,10 @@ private:
void Initialize();
void Update();
+ Color GetColorSetOrDefault();
+ XGradient GetGradientSetOrDefault();
+ const OUString GetHatchingSetOrDefault();
+ const OUString GetBitmapSetOrDefault();
};
}}
diff --git a/sd/source/ui/view/drviews7.cxx b/sd/source/ui/view/drviews7.cxx
index fbc9ef5bb7a7..9737d9787273 100644
--- a/sd/source/ui/view/drviews7.cxx
+++ b/sd/source/ui/view/drviews7.cxx
@@ -1649,11 +1649,8 @@ void DrawViewShell::GetPageProperties( SfxItemSet &rSet )
rSet.Put(SvxSizeItem( SID_ATTR_PAGE_SIZE, pPage->GetSize() ));
rSet.Put(aPageItem);
- SfxItemSet aMergedAttr(GetDoc()->GetPool(), XATTR_FILL_FIRST, XATTR_FILL_LAST, 0);
- SdStyleSheet* pStyleSheet = pPage->getPresentationStyle(HID_PSEUDOSHEET_BACKGROUND);
- MergePageBackgroundFilling(pPage, pStyleSheet, meEditMode == EM_MASTERPAGE, aMergedAttr);
-
- drawing::FillStyle eXFS = (drawing::FillStyle) static_cast<const XFillStyleItem*>( aMergedAttr.GetItem( XATTR_FILLSTYLE ) )->GetValue();
+ const SfxItemSet &rPageAttr = pPage->getSdrPageProperties().GetItemSet();
+ drawing::FillStyle eXFS = (drawing::FillStyle) static_cast<const XFillStyleItem*>( rPageAttr.GetItem( XATTR_FILLSTYLE ) )->GetValue();
XFillStyleItem aFillStyleItem( eXFS );
aFillStyleItem.SetWhich( SID_ATTR_PAGE_FILLSTYLE );
rSet.Put(aFillStyleItem);
@@ -1662,7 +1659,7 @@ void DrawViewShell::GetPageProperties( SfxItemSet &rSet )
{
case (drawing::FillStyle_SOLID):
{
- Color aColor = static_cast<const XFillColorItem*>( aMergedAttr.GetItem( XATTR_FILLCOLOR ) )->GetColorValue();
+ Color aColor = static_cast<const XFillColorItem*>( rPageAttr.GetItem( XATTR_FILLCOLOR ) )->GetColorValue();
XFillColorItem aFillColorItem( OUString(), aColor );
aFillColorItem.SetWhich( SID_ATTR_PAGE_COLOR );
rSet.Put( aFillColorItem );
@@ -1671,26 +1668,29 @@ void DrawViewShell::GetPageProperties( SfxItemSet &rSet )
case (drawing::FillStyle_GRADIENT):
{
- const XGradient& xGradient = static_cast<const XFillGradientItem*>( aMergedAttr.GetItem( XATTR_FILLGRADIENT ) )->GetGradientValue();
+ const XGradient& xGradient = static_cast<const XFillGradientItem*>( rPageAttr.GetItem( XATTR_FILLGRADIENT ) )->GetGradientValue();
XFillGradientItem aFillGradientItem( OUString(), xGradient, SID_ATTR_PAGE_GRADIENT );
rSet.Put( aFillGradientItem );
}
+ break;
case (drawing::FillStyle_HATCH):
{
- const XFillHatchItem *pFillHatchItem( static_cast<const XFillHatchItem*>( aMergedAttr.GetItem( XATTR_FILLHATCH ) ) );
+ const XFillHatchItem *pFillHatchItem( static_cast<const XFillHatchItem*>( rPageAttr.GetItem( XATTR_FILLHATCH ) ) );
XFillHatchItem aFillHatchItem( pFillHatchItem->GetName(), pFillHatchItem->GetHatchValue());
aFillHatchItem.SetWhich( SID_ATTR_PAGE_HATCH );
rSet.Put( aFillHatchItem );
}
+ break;
case (drawing::FillStyle_BITMAP):
{
- const XFillBitmapItem *pFillBitmapItem = static_cast<const XFillBitmapItem*>( aMergedAttr.GetItem( XATTR_FILLBITMAP ) );
+ const XFillBitmapItem *pFillBitmapItem = static_cast<const XFillBitmapItem*>( rPageAttr.GetItem( XATTR_FILLBITMAP ) );
XFillBitmapItem aFillBitmapItem( pFillBitmapItem->GetName(), pFillBitmapItem->GetGraphicObject() );
aFillBitmapItem.SetWhich( SID_ATTR_PAGE_BITMAP );
rSet.Put( aFillBitmapItem );
}
+ break;
default:
break;