summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Mohrhard <markus.mohrhard@googlemail.com>2019-08-10 01:19:23 +0800
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2019-08-10 01:19:48 +0800
commit3ff4ac00a7bdee0e7cecaf5c35bc8056bc3f1d41 (patch)
treefd9d526a0243d6101dc97a30e9cae484f1cdf85b
parentd63f1346a6c5767d995c787fe2bb36b023a64788 (diff)
add initial code to apply style to chart
Change-Id: I33207f95236f4102f8ae5620465494b3384fbbbb
-rw-r--r--chart2/source/inc/ChartStyle.hxx3
-rw-r--r--chart2/source/model/main/ChartModel.cxx2
-rw-r--r--chart2/source/model/main/ChartModel_Persistence.cxx6
-rw-r--r--chart2/source/tools/ChartStyle.cxx14
-rw-r--r--offapi/com/sun/star/chart2/XChartStyle.idl3
5 files changed, 28 insertions, 0 deletions
diff --git a/chart2/source/inc/ChartStyle.hxx b/chart2/source/inc/ChartStyle.hxx
index 2c1fb3d9e7f8..c12441e1cd76 100644
--- a/chart2/source/inc/ChartStyle.hxx
+++ b/chart2/source/inc/ChartStyle.hxx
@@ -91,6 +91,9 @@ public:
virtual css::uno::Reference<css::beans::XPropertySet>
SAL_CALL getStyleForObject(const sal_Int16 nChartObjectType) override;
+ virtual void SAL_CALL
+ applyStyleToDiagram(const css::uno::Reference<css::chart2::XDiagram>& xDiagram);
+
private:
sal_Int16 m_nNumObjects;
diff --git a/chart2/source/model/main/ChartModel.cxx b/chart2/source/model/main/ChartModel.cxx
index 262070310591..ba5a5d399445 100644
--- a/chart2/source/model/main/ChartModel.cxx
+++ b/chart2/source/model/main/ChartModel.cxx
@@ -687,6 +687,8 @@ void SAL_CALL ChartModel::setFirstDiagram( const uno::Reference< chart2::XDiagra
ModifyListenerHelper::removeListener( xOldDiagram, xListener );
ModifyListenerHelper::addListener( xDiagram, xListener );
setModified( true );
+
+ m_xChartStyle->applyStyleToDiagram(xDiagram);
}
Reference< chart2::data::XDataSource > ChartModel::impl_createDefaultData()
diff --git a/chart2/source/model/main/ChartModel_Persistence.cxx b/chart2/source/model/main/ChartModel_Persistence.cxx
index 642aceb626ae..87a0a742b7d9 100644
--- a/chart2/source/model/main/ChartModel_Persistence.cxx
+++ b/chart2/source/model/main/ChartModel_Persistence.cxx
@@ -732,6 +732,12 @@ void SAL_CALL ChartModel::modified( const lang::EventObject& rEvenObject)
}
unlockControllers();
}
+ uno::Reference<chart2::XDiagram> xDiagram(rEvenObject.Source, uno::UNO_QUERY);
+ if (xDiagram.is())
+ {
+ if (m_xChartStyle.is())
+ m_xChartStyle->applyStyleToDiagram(xDiagram);
+ }
if (m_nInLoad == 0)
setModified(true);
diff --git a/chart2/source/tools/ChartStyle.cxx b/chart2/source/tools/ChartStyle.cxx
index 7ec585b330f3..8aac449dcf90 100644
--- a/chart2/source/tools/ChartStyle.cxx
+++ b/chart2/source/tools/ChartStyle.cxx
@@ -121,6 +121,20 @@ css::uno::Sequence<OUString> SAL_CALL ChartStyle::getSupportedServiceNames()
{
return { "com.sun.star.chart2.ChartStyle" };
}
+
+void SAL_CALL
+ChartStyle::applyStyleToDiagram(const css::uno::Reference<css::chart2::XDiagram>& xDiagram)
+{
+ css::uno::Reference<css::style::XStyleSupplier> xLegendStyle(xDiagram->getLegend(),
+ css::uno::UNO_QUERY);
+ if (xLegendStyle.is())
+ {
+ xLegendStyle->setStyle(css::uno::Reference<css::style::XStyle>(
+ m_xChartStyle.find(css::chart2::ChartObjectType::LEGEND)->second,
+ css::uno::UNO_QUERY_THROW));
+ }
+}
+
//
// needed by MSC compiler
using impl::ChartObjectStyle_Base;
diff --git a/offapi/com/sun/star/chart2/XChartStyle.idl b/offapi/com/sun/star/chart2/XChartStyle.idl
index a072d6f2c833..3293f94f130a 100644
--- a/offapi/com/sun/star/chart2/XChartStyle.idl
+++ b/offapi/com/sun/star/chart2/XChartStyle.idl
@@ -13,12 +13,15 @@
#include <com/sun/star/uno/XInterface.idl>
#include <com/sun/star/beans/XPropertySet.idl>
#include <com/sun/star/chart2/ChartObjectType.idl>
+#include <com/sun/star/chart2/XDiagram.idl>
module com { module sun { module star { module chart2 {
interface XChartStyle : ::com::sun::star::uno::XInterface
{
com::sun::star::beans::XPropertySet getStyleForObject([in] short chartObjectType);
+
+ void applyStyleToDiagram([in] XDiagram chartDiagram);
};
}; }; }; };