summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoel Grandin <noelgrandin@gmail.com>2022-01-30 08:34:22 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2022-01-30 16:02:18 +0100
commit026e2f437e969d75209ed05211e7f02349035b98 (patch)
tree3a567141feaf520acca03b473e571e6502dd3fa1
parent85cc59ba11f9334e0ed5f277607f5d9d63302856 (diff)
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>
-rw-r--r--chart2/source/inc/CloneHelper.hxx11
-rw-r--r--chart2/source/inc/ModifyListenerHelper.hxx22
-rw-r--r--chart2/source/inc/RegressionCurveModel.hxx (renamed from chart2/source/tools/RegressionCurveModel.hxx)6
-rw-r--r--chart2/source/model/inc/DataSeries.hxx3
-rw-r--r--chart2/source/model/main/DataSeries.cxx27
-rw-r--r--chart2/source/tools/RegressionCurveHelper.cxx2
-rw-r--r--chart2/source/tools/RegressionCurveModel.cxx2
-rw-r--r--solenv/clang-format/excludelist2
8 files changed, 60 insertions, 15 deletions
diff --git a/chart2/source/inc/CloneHelper.hxx b/chart2/source/inc/CloneHelper.hxx
index d9771a2681f2..c0896efb5c7b 100644
--- a/chart2/source/inc/CloneHelper.hxx
+++ b/chart2/source/inc/CloneHelper.hxx
@@ -19,7 +19,7 @@
#pragma once
#include <com/sun/star/util/XCloneable.hpp>
-
+#include <rtl/ref.hxx>
#include <algorithm>
#include <iterator>
#include <vector>
@@ -54,6 +54,15 @@ template< class Interface >
CreateRefClone< Interface >());
}
+template< class T >
+ void CloneRefVector(
+ const std::vector< rtl::Reference< T > > & rSource,
+ std::vector< rtl::Reference< T > > & rDestination )
+{
+ for (const auto & rSourceItem : rSource)
+ rDestination.push_back(static_cast<T*>(rSourceItem->createClone().get()));
+}
+
/// clones a UNO-sequence of UNO-References
template< class Interface >
void CloneRefSequence(
diff --git a/chart2/source/inc/ModifyListenerHelper.hxx b/chart2/source/inc/ModifyListenerHelper.hxx
index abee24032bae..de407f2ba137 100644
--- a/chart2/source/inc/ModifyListenerHelper.hxx
+++ b/chart2/source/inc/ModifyListenerHelper.hxx
@@ -176,6 +176,17 @@ void addListenerToAllElements(
impl::addListenerFunctor< typename Container::value_type >( xListener ));
}
+template< class T >
+void addListenerToAllElements(
+ const std::vector<rtl::Reference<T>> & rContainer,
+ const css::uno::Reference< css::util::XModifyListener > & xListener )
+{
+ if( !xListener )
+ return;
+ for (auto const & i : rContainer)
+ i->addModifyListener(xListener);
+}
+
template< class Container >
void addListenerToAllMapElements(
const Container & rContainer,
@@ -227,6 +238,17 @@ void removeListenerFromAllElements(
impl::removeListenerFunctor< typename Container::value_type >( xListener ));
}
+template< class T >
+void removeListenerFromAllElements(
+ const std::vector<rtl::Reference<T>> & rContainer,
+ const css::uno::Reference< css::util::XModifyListener > & xListener )
+{
+ if( !xListener )
+ return;
+ for (auto const & i : rContainer)
+ i->removeModifyListener(xListener);
+}
+
template< class Container >
void removeListenerFromAllMapElements(
const Container & rContainer,
diff --git a/chart2/source/tools/RegressionCurveModel.hxx b/chart2/source/inc/RegressionCurveModel.hxx
index 73c2439f01e7..5c32ae5e6215 100644
--- a/chart2/source/tools/RegressionCurveModel.hxx
+++ b/chart2/source/inc/RegressionCurveModel.hxx
@@ -18,7 +18,7 @@
*/
#pragma once
-#include <OPropertySet.hxx>
+#include "OPropertySet.hxx"
#include <cppuhelper/basemutex.hxx>
#include <cppuhelper/implbase.hxx>
@@ -29,7 +29,7 @@
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/lang/XServiceName.hpp>
#include <com/sun/star/util/XCloneable.hpp>
-#include <ModifyListenerHelper.hxx>
+#include "ModifyListenerHelper.hxx"
namespace chart
{
@@ -83,6 +83,7 @@ protected:
virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL
getPropertySetInfo() override;
+public:
// ____ XRegressionCurve ____
virtual css::uno::Reference< css::chart2::XRegressionCurveCalculator > SAL_CALL getCalculator() override;
virtual css::uno::Reference< css::beans::XPropertySet > SAL_CALL getEquationProperties() override;
@@ -98,6 +99,7 @@ protected:
virtual void SAL_CALL removeModifyListener(
const css::uno::Reference< css::util::XModifyListener >& aListener ) override;
+protected:
// ____ XModifyListener ____
virtual void SAL_CALL modified(
const css::lang::EventObject& aEvent ) override;
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 );
diff --git a/chart2/source/tools/RegressionCurveHelper.cxx b/chart2/source/tools/RegressionCurveHelper.cxx
index 00e846105c7f..77ffcf2391a5 100644
--- a/chart2/source/tools/RegressionCurveHelper.cxx
+++ b/chart2/source/tools/RegressionCurveHelper.cxx
@@ -26,7 +26,7 @@
#include <ExponentialRegressionCurveCalculator.hxx>
#include <PotentialRegressionCurveCalculator.hxx>
#include <CommonConverters.hxx>
-#include "RegressionCurveModel.hxx"
+#include <RegressionCurveModel.hxx>
#include <ChartTypeHelper.hxx>
#include <ChartType.hxx>
#include <ChartModel.hxx>
diff --git a/chart2/source/tools/RegressionCurveModel.cxx b/chart2/source/tools/RegressionCurveModel.cxx
index d6cef7c2c8d8..8ea03805865c 100644
--- a/chart2/source/tools/RegressionCurveModel.cxx
+++ b/chart2/source/tools/RegressionCurveModel.cxx
@@ -17,7 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#include "RegressionCurveModel.hxx"
+#include <RegressionCurveModel.hxx>
#include <LinePropertiesHelper.hxx>
#include <RegressionCurveHelper.hxx>
#include "RegressionEquation.hxx"
diff --git a/solenv/clang-format/excludelist b/solenv/clang-format/excludelist
index 1d2c635eed62..670cd0542dab 100644
--- a/solenv/clang-format/excludelist
+++ b/solenv/clang-format/excludelist
@@ -1058,6 +1058,7 @@ chart2/source/inc/ReferenceSizeProvider.hxx
chart2/source/inc/RegressionCalculationHelper.hxx
chart2/source/inc/RegressionCurveCalculator.hxx
chart2/source/inc/RegressionCurveHelper.hxx
+chart2/source/inc/RegressionCurveModel.hxx
chart2/source/inc/RelativePositionHelper.hxx
chart2/source/inc/RelativeSizeHelper.hxx
chart2/source/inc/Scaling.hxx
@@ -1203,7 +1204,6 @@ chart2/source/tools/ReferenceSizeProvider.cxx
chart2/source/tools/RegressionCurveCalculator.cxx
chart2/source/tools/RegressionCurveHelper.cxx
chart2/source/tools/RegressionCurveModel.cxx
-chart2/source/tools/RegressionCurveModel.hxx
chart2/source/tools/RegressionEquation.cxx
chart2/source/tools/RegressionEquation.hxx
chart2/source/tools/RelativePositionHelper.cxx