summaryrefslogtreecommitdiff
path: root/chart2
diff options
context:
space:
mode:
authorKatarina Behrens <Katarina.Behrens@cib.de>2019-07-16 09:48:12 +0200
committerAron Budea <aron.budea@collabora.com>2020-09-23 13:00:35 +0200
commitce520a95c246769ab41a83f8a0fc5e48c5352466 (patch)
treecc707917c0b581d7f39218d542edfcf3cabcb0dc /chart2
parentc3997a03d41b5bd92b52cfc852dac56c6175c735 (diff)
tdf#94300: custom gradients apply also from chart sidebar
Change-Id: Id6ba90b404ad97cdfc4091bcb4028677f1600fa2 Reviewed-on: https://gerrit.libreoffice.org/75693 Tested-by: Jenkins Reviewed-by: Katarina Behrens <Katarina.Behrens@cib.de> (cherry picked from commit 0e15fb798a0d1fc8cc221ae2334411fac144f173) Reviewed-on: https://gerrit.libreoffice.org/77035 Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de> (cherry picked from commit dda72e5088a20360ebf18900e608994311fa0f5c) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103233 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Aron Budea <aron.budea@collabora.com>
Diffstat (limited to 'chart2')
-rw-r--r--chart2/source/controller/sidebar/ChartAreaPanel.cxx52
1 files changed, 26 insertions, 26 deletions
diff --git a/chart2/source/controller/sidebar/ChartAreaPanel.cxx b/chart2/source/controller/sidebar/ChartAreaPanel.cxx
index 023d14127922..959ba2657675 100644
--- a/chart2/source/controller/sidebar/ChartAreaPanel.cxx
+++ b/chart2/source/controller/sidebar/ChartAreaPanel.cxx
@@ -101,30 +101,26 @@ DrawModelWrapper* getDrawModelWrapper(const css::uno::Reference<css::frame::XMod
return pController->GetDrawModelWrapper();
}
-XGradient getXGradientForName(const css::uno::Reference<css::frame::XModel>& xModel,
+XFillGradientItem getXGradientForName(const css::uno::Reference<css::frame::XModel>& xModel,
const OUString& rName)
{
- try
- {
- ViewElementListProvider aProvider = getViewElementListProvider(xModel);
- XGradientListRef aRef = aProvider.GetGradientList();
- size_t n = aRef->Count();
- for (size_t i = 0; i < n; ++i)
- {
- const XGradientEntry* pGradient = aRef->GetGradient(i);
- if (!pGradient)
- continue;
+ css::uno::Reference<css::lang::XMultiServiceFactory> xFact(xModel, css::uno::UNO_QUERY);
+ css::uno::Reference<css::container::XNameAccess> xNameAccess(
+ xFact->createInstance("com.sun.star.drawing.GradientTable"), css::uno::UNO_QUERY);
+ if (!xNameAccess.is())
+ return XFillGradientItem();
- if (pGradient->GetName() == rName)
- return pGradient->GetGradient();
- }
- }
- catch (...)
- {
- // ignore exception
- }
+ if (!xNameAccess->hasByName(rName))
+ return XFillGradientItem();
+
+ css::uno::Any aAny = xNameAccess->getByName(rName);
+
+ XFillGradientItem aItem;
+ aItem.SetName(rName);
+ aItem.PutValue(aAny, MID_FILLGRADIENT);
+
+ return aItem;
- return XGradient();
}
XFillFloatTransparenceItem getXTransparencyGradientForName(const css::uno::Reference<css::frame::XModel>& xModel,
@@ -370,7 +366,12 @@ void ChartAreaPanel::setFillStyleAndGradient(const XFillStyleItem* pStyleItem,
if (pStyleItem)
xPropSet->setPropertyValue("FillStyle", css::uno::Any(pStyleItem->GetValue()));
- xPropSet->setPropertyValue("FillGradientName", css::uno::Any(rGradientItem.GetValue()));
+
+ const OUString& aName = rGradientItem.GetName();
+ css::uno::Any aGradientVal;
+ rGradientItem.QueryValue(aGradientVal, MID_FILLGRADIENT);
+ OUString aNewName = PropertyHelper::addGradientUniqueNameToTable(aGradientVal, css::uno::Reference<css::lang::XMultiServiceFactory>(mxModel, css::uno::UNO_QUERY_THROW), aName);
+ xPropSet->setPropertyValue("FillGradientName", css::uno::Any(aNewName));
}
void ChartAreaPanel::setFillStyleAndHatch(const XFillStyleItem* pStyleItem,
@@ -436,11 +437,10 @@ void ChartAreaPanel::updateData()
if (xInfo->hasPropertyByName("FillGradientName"))
{
- OUString aGradientName;
- xPropSet->getPropertyValue("FillGradientName") >>= aGradientName;
- XGradient aGradient = getXGradientForName(mxModel, aGradientName);
- XFillGradientItem aGradientItem(aGradientName, aGradient);
- updateFillGradient(false, true, &aGradientItem);
+ OUString aGradientName;
+ xPropSet->getPropertyValue("FillGradientName") >>= aGradientName;
+ XFillGradientItem aGradientItem = getXGradientForName(mxModel, aGradientName);
+ updateFillGradient(false, true, &aGradientItem);
}
if (xInfo->hasPropertyByName("FillHatchName"))