diff options
author | Noel Grandin <noelgrandin@gmail.com> | 2022-01-30 08:34:22 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2022-01-30 16:02:18 +0100 |
commit | 026e2f437e969d75209ed05211e7f02349035b98 (patch) | |
tree | 3a567141feaf520acca03b473e571e6502dd3fa1 /chart2/source/model | |
parent | Resolves: tdf#147013 transform the control point positions too (diff) | |
download | core-026e2f437e969d75209ed05211e7f02349035b98.tar.gz core-026e2f437e969d75209ed05211e7f02349035b98.zip |
use more concrete types in chart2, RegressionCurveModel
Change-Id: Ib4a5198f425577307ba437c73c61408b88d83dc1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129160
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'chart2/source/model')
-rw-r--r-- | chart2/source/model/inc/DataSeries.hxx | 3 | ||||
-rw-r--r-- | chart2/source/model/main/DataSeries.cxx | 27 |
2 files changed, 21 insertions, 9 deletions
diff --git a/chart2/source/model/inc/DataSeries.hxx b/chart2/source/model/inc/DataSeries.hxx index eae00d7da153..a7a91325a605 100644 --- a/chart2/source/model/inc/DataSeries.hxx +++ b/chart2/source/model/inc/DataSeries.hxx @@ -42,6 +42,7 @@ namespace com::sun::star::beans { class XPropertySet; } namespace chart { +class RegressionCurveModel; namespace impl { @@ -155,7 +156,7 @@ private: tDataPointAttributeContainer m_aAttributedDataPoints; typedef - std::vector< css::uno::Reference< css::chart2::XRegressionCurve > > + std::vector< rtl::Reference< ::chart::RegressionCurveModel > > tRegressionCurveContainerType; tRegressionCurveContainerType m_aRegressionCurves; diff --git a/chart2/source/model/main/DataSeries.cxx b/chart2/source/model/main/DataSeries.cxx index d6aa5eebe3e9..509fa3423f71 100644 --- a/chart2/source/model/main/DataSeries.cxx +++ b/chart2/source/model/main/DataSeries.cxx @@ -25,6 +25,7 @@ #include "DataPoint.hxx" #include <DataSeriesHelper.hxx> #include <CloneHelper.hxx> +#include <RegressionCurveModel.hxx> #include <ModifyListenerHelper.hxx> #include <EventListenerHelper.hxx> #include <com/sun/star/container/NoSuchElementException.hpp> @@ -144,7 +145,7 @@ DataSeries::DataSeries( const DataSeries & rOther ) : ModifyListenerHelper::addListenerToAllElements( m_aDataSequences, m_xModifyEventForwarder ); } - CloneHelper::CloneRefVector< chart2::XRegressionCurve >( rOther.m_aRegressionCurves, m_aRegressionCurves ); + CloneHelper::CloneRefVector( rOther.m_aRegressionCurves, m_aRegressionCurves ); ModifyListenerHelper::addListenerToAllElements( m_aRegressionCurves, m_xModifyEventForwarder ); // add as listener to XPropertySet properties @@ -415,16 +416,18 @@ Sequence< Reference< chart2::data::XLabeledDataSequence > > SAL_CALL DataSeries: void SAL_CALL DataSeries::addRegressionCurve( const uno::Reference< chart2::XRegressionCurve >& xRegressionCurve ) { + auto pRegressionCurve = dynamic_cast<RegressionCurveModel*>(xRegressionCurve.get()); + assert(pRegressionCurve); Reference< util::XModifyListener > xModifyEventForwarder; { MutexGuard aGuard( m_aMutex ); xModifyEventForwarder = m_xModifyEventForwarder; - if( std::find( m_aRegressionCurves.begin(), m_aRegressionCurves.end(), xRegressionCurve ) + if( std::find( m_aRegressionCurves.begin(), m_aRegressionCurves.end(), pRegressionCurve ) != m_aRegressionCurves.end()) throw lang::IllegalArgumentException("curve not found", static_cast<cppu::OWeakObject*>(this), 1); - m_aRegressionCurves.push_back( xRegressionCurve ); + m_aRegressionCurves.push_back( pRegressionCurve ); } - ModifyListenerHelper::addListener( xRegressionCurve, xModifyEventForwarder ); + ModifyListenerHelper::addListener( rtl::Reference<RegressionCurveModel>(pRegressionCurve), xModifyEventForwarder ); fireModifyEvent(); } @@ -433,13 +436,15 @@ void SAL_CALL DataSeries::removeRegressionCurve( { if( !xRegressionCurve.is() ) throw container::NoSuchElementException(); + auto pRegressionCurve = dynamic_cast<RegressionCurveModel*>(xRegressionCurve.get()); + assert(pRegressionCurve); Reference< util::XModifyListener > xModifyEventForwarder; { MutexGuard aGuard( m_aMutex ); xModifyEventForwarder = m_xModifyEventForwarder; tRegressionCurveContainerType::iterator aIt( - std::find( m_aRegressionCurves.begin(), m_aRegressionCurves.end(), xRegressionCurve ) ); + std::find( m_aRegressionCurves.begin(), m_aRegressionCurves.end(), pRegressionCurve ) ); if( aIt == m_aRegressionCurves.end()) throw container::NoSuchElementException( "The given regression curve is no element of this series", @@ -447,21 +452,27 @@ void SAL_CALL DataSeries::removeRegressionCurve( m_aRegressionCurves.erase( aIt ); } - ModifyListenerHelper::removeListener( xRegressionCurve, xModifyEventForwarder ); + ModifyListenerHelper::removeListener( rtl::Reference<RegressionCurveModel>(pRegressionCurve), xModifyEventForwarder ); fireModifyEvent(); } uno::Sequence< uno::Reference< chart2::XRegressionCurve > > SAL_CALL DataSeries::getRegressionCurves() { MutexGuard aGuard( m_aMutex ); - return comphelper::containerToSequence( m_aRegressionCurves ); + return comphelper::containerToSequence<uno::Reference< chart2::XRegressionCurve >>( m_aRegressionCurves ); } void SAL_CALL DataSeries::setRegressionCurves( const Sequence< Reference< chart2::XRegressionCurve > >& aRegressionCurves ) { tRegressionCurveContainerType aOldCurves; - auto aNewCurves( comphelper::sequenceToContainer<tRegressionCurveContainerType>( aRegressionCurves ) ); + tRegressionCurveContainerType aNewCurves; + for (const auto & i : aRegressionCurves) + { + auto pRegressionCurve = dynamic_cast<RegressionCurveModel*>(i.get()); + assert(pRegressionCurve); + aNewCurves.push_back(pRegressionCurve); + } Reference< util::XModifyListener > xModifyEventForwarder; { MutexGuard aGuard( m_aMutex ); |