summaryrefslogtreecommitdiff
path: root/chart2/source/model
diff options
context:
space:
mode:
authorNoel Grandin <noelgrandin@gmail.com>2022-01-30 12:27:56 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2022-01-30 20:48:02 +0100
commitc496412631c950f081d7696867db907fa313653a (patch)
treee0014ec35bbccc3499497eced2828666e8a52e72 /chart2/source/model
parentc5ab758bc3e1227e9ab3013d2fba4c2cd387e296 (diff)
use more concrete types in chart2, DataSeries
Change-Id: Ida984d1701e2426958127845418365f6645a9043 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129161 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.hxx168
-rw-r--r--chart2/source/model/template/ChartType.cxx39
2 files changed, 32 insertions, 175 deletions
diff --git a/chart2/source/model/inc/DataSeries.hxx b/chart2/source/model/inc/DataSeries.hxx
deleted file mode 100644
index a7a91325a605..000000000000
--- a/chart2/source/model/inc/DataSeries.hxx
+++ /dev/null
@@ -1,168 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-#pragma once
-
-// UNO types
-#include <com/sun/star/chart2/XDataSeries.hpp>
-#include <com/sun/star/chart2/data/XDataSink.hpp>
-#include <com/sun/star/chart2/data/XDataSource.hpp>
-#include <com/sun/star/chart2/XRegressionCurveContainer.hpp>
-#include <com/sun/star/util/XCloneable.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-
-// helper classes
-#include <cppuhelper/basemutex.hxx>
-#include <cppuhelper/implbase.hxx>
-#include <comphelper/uno3.hxx>
-#include <ModifyListenerHelper.hxx>
-
-// STL
-#include <vector>
-#include <map>
-
-#include <OPropertySet.hxx>
-
-namespace com::sun::star::beans { class XPropertySet; }
-
-namespace chart
-{
-class RegressionCurveModel;
-
-namespace impl
-{
-typedef ::cppu::WeakImplHelper<
- css::chart2::XDataSeries,
- css::chart2::data::XDataSink,
- css::chart2::data::XDataSource,
- css::lang::XServiceInfo,
- css::chart2::XRegressionCurveContainer,
- css::util::XCloneable,
- css::util::XModifyBroadcaster,
- css::util::XModifyListener >
- DataSeries_Base;
-}
-
-class DataSeries final :
- public cppu::BaseMutex,
- public impl::DataSeries_Base,
- public ::property::OPropertySet
-{
-public:
- explicit DataSeries();
- virtual ~DataSeries() override;
-
- /// XServiceInfo declarations
- virtual OUString SAL_CALL getImplementationName() override;
- virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override;
- virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override;
-
- /// merge XInterface implementations
- DECLARE_XINTERFACE()
- /// merge XTypeProvider implementations
- DECLARE_XTYPEPROVIDER()
-
-private:
- explicit DataSeries( const DataSeries & rOther );
-
- // late initialization to call after copy-constructing
- void Init( const DataSeries & rOther );
-
- // ____ XDataSeries ____
- /// @see css::chart2::XDataSeries
- virtual css::uno::Reference< css::beans::XPropertySet >
- SAL_CALL getDataPointByIndex( sal_Int32 nIndex ) override;
- virtual void SAL_CALL resetDataPoint( sal_Int32 nIndex ) override;
- virtual void SAL_CALL resetAllDataPoints() override;
-
- // ____ XDataSink ____
- /// @see css::chart2::data::XDataSink
- virtual void SAL_CALL setData( const css::uno::Sequence< css::uno::Reference< css::chart2::data::XLabeledDataSequence > >& aData ) override;
-
- // ____ XDataSource ____
- /// @see css::chart2::data::XDataSource
- virtual css::uno::Sequence< css::uno::Reference< css::chart2::data::XLabeledDataSequence > > SAL_CALL getDataSequences() override;
-
- // ____ OPropertySet ____
- virtual void GetDefaultValue( sal_Int32 nHandle, css::uno::Any& rAny ) const override;
- virtual void SAL_CALL getFastPropertyValue( css::uno::Any& rValue, sal_Int32 nHandle ) const override;
- virtual void SAL_CALL setFastPropertyValue_NoBroadcast
- ( sal_Int32 nHandle,
- const css::uno::Any& rValue ) override;
-
- virtual ::cppu::IPropertyArrayHelper & SAL_CALL getInfoHelper() override;
-
- // ____ XPropertySet ____
- /// @see css::beans::XPropertySet
- virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL
- getPropertySetInfo() override;
-
- /// make original interface function visible again
- using ::com::sun::star::beans::XFastPropertySet::getFastPropertyValue;
-
- // ____ XRegressionCurveContainer ____
- /// @see css::chart2::XRegressionCurveContainer
- virtual void SAL_CALL addRegressionCurve(
- const css::uno::Reference< css::chart2::XRegressionCurve >& aRegressionCurve ) override;
- virtual void SAL_CALL removeRegressionCurve(
- const css::uno::Reference< css::chart2::XRegressionCurve >& aRegressionCurve ) override;
- virtual css::uno::Sequence< css::uno::Reference< css::chart2::XRegressionCurve > > SAL_CALL getRegressionCurves() override;
- virtual void SAL_CALL setRegressionCurves(
- const css::uno::Sequence< css::uno::Reference< css::chart2::XRegressionCurve > >& aRegressionCurves ) override;
-
- // ____ XCloneable ____
- virtual css::uno::Reference< css::util::XCloneable > SAL_CALL createClone() override;
-
- // ____ XModifyBroadcaster ____
- virtual void SAL_CALL addModifyListener(
- const css::uno::Reference< css::util::XModifyListener >& aListener ) override;
- virtual void SAL_CALL removeModifyListener(
- const css::uno::Reference< css::util::XModifyListener >& aListener ) override;
-
- // ____ XModifyListener ____
- virtual void SAL_CALL modified(
- const css::lang::EventObject& aEvent ) override;
-
- // ____ XEventListener (base of XModifyListener) ____
- virtual void SAL_CALL disposing(
- const css::lang::EventObject& Source ) override;
-
- // ____ OPropertySet ____
- virtual void firePropertyChangeEvent() override;
- using OPropertySet::disposing;
-
- void fireModifyEvent();
-
- typedef std::vector< css::uno::Reference< css::chart2::data::XLabeledDataSequence > > tDataSequenceContainer;
- tDataSequenceContainer m_aDataSequences;
-
- typedef std::map< sal_Int32,
- css::uno::Reference< css::beans::XPropertySet > > tDataPointAttributeContainer;
- tDataPointAttributeContainer m_aAttributedDataPoints;
-
- typedef
- std::vector< rtl::Reference< ::chart::RegressionCurveModel > >
- tRegressionCurveContainerType;
- tRegressionCurveContainerType m_aRegressionCurves;
-
- rtl::Reference<ModifyEventForwarder> m_xModifyEventForwarder;
-};
-
-} // namespace chart
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/source/model/template/ChartType.cxx b/chart2/source/model/template/ChartType.cxx
index 96273874643e..588b3fa653e9 100644
--- a/chart2/source/model/template/ChartType.cxx
+++ b/chart2/source/model/template/ChartType.cxx
@@ -23,6 +23,7 @@
#include <CloneHelper.hxx>
#include <AxisIndexDefines.hxx>
#include <ModifyListenerHelper.hxx>
+#include <DataSeries.hxx>
#include <vcl/svapp.hxx>
#include <com/sun/star/chart2/AxisType.hpp>
#include <com/sun/star/container/NoSuchElementException.hpp>
@@ -51,7 +52,7 @@ ChartType::ChartType( const ChartType & rOther ) :
{
{
SolarMutexGuard g; // access to rOther.m_aDataSeries
- CloneHelper::CloneRefVector<css::chart2::XDataSeries>(
+ CloneHelper::CloneRefVector(
rOther.m_aDataSeries, m_aDataSeries);
}
ModifyListenerHelper::addListenerToAllElements( m_aDataSeries, m_xModifyEventForwarder );
@@ -117,7 +118,7 @@ OUString SAL_CALL ChartType::getRoleOfSequenceForSeriesLabel()
}
void ChartType::impl_addDataSeriesWithoutNotification(
- const Reference< chart2::XDataSeries >& xDataSeries )
+ const rtl::Reference< DataSeries >& xDataSeries )
{
if( std::find( m_aDataSeries.begin(), m_aDataSeries.end(), xDataSeries )
!= m_aDataSeries.end())
@@ -130,6 +131,13 @@ void ChartType::impl_addDataSeriesWithoutNotification(
// ____ XDataSeriesContainer ____
void SAL_CALL ChartType::addDataSeries( const Reference< chart2::XDataSeries >& xDataSeries )
{
+ rtl::Reference<DataSeries> xTmp = dynamic_cast<DataSeries*>(xDataSeries.get());
+ assert(xTmp);
+ addDataSeries(xTmp);
+}
+
+void ChartType::addDataSeries( const rtl::Reference< DataSeries >& xDataSeries )
+{
SolarMutexGuard g;
impl_addDataSeriesWithoutNotification( xDataSeries );
@@ -138,13 +146,19 @@ void SAL_CALL ChartType::addDataSeries( const Reference< chart2::XDataSeries >&
void SAL_CALL ChartType::removeDataSeries( const Reference< chart2::XDataSeries >& xDataSeries )
{
+ rtl::Reference<DataSeries> xTmp = dynamic_cast<DataSeries*>(xDataSeries.get());
+ assert(xTmp);
+ removeDataSeries(xTmp);
+}
+
+void ChartType::removeDataSeries( const rtl::Reference< DataSeries >& xDataSeries )
+{
if( !xDataSeries.is())
throw container::NoSuchElementException();
SolarMutexGuard g;
- tDataSeriesContainerType::iterator aIt(
- std::find( m_aDataSeries.begin(), m_aDataSeries.end(), xDataSeries ) );
+ auto aIt = std::find( m_aDataSeries.begin(), m_aDataSeries.end(), xDataSeries );
if( aIt == m_aDataSeries.end())
throw container::NoSuchElementException(
@@ -160,18 +174,29 @@ Sequence< Reference< chart2::XDataSeries > > SAL_CALL ChartType::getDataSeries()
{
SolarMutexGuard g;
- return comphelper::containerToSequence( m_aDataSeries );
+ return comphelper::containerToSequence< Reference< chart2::XDataSeries > >( m_aDataSeries );
}
void SAL_CALL ChartType::setDataSeries( const Sequence< Reference< chart2::XDataSeries > >& aDataSeries )
{
+ std::vector< rtl::Reference<DataSeries> > aTmp;
+ for (auto const & i : aDataSeries)
+ {
+ auto p = dynamic_cast<DataSeries*>(i.get());
+ assert(p);
+ aTmp.push_back(p);
+ }
+ setDataSeries(aTmp);
+}
+
+void ChartType::setDataSeries( const std::vector< rtl::Reference< DataSeries > >& aDataSeries )
+{
SolarMutexGuard g;
m_bNotifyChanges = false;
try
{
- const Sequence< Reference< chart2::XDataSeries > > aOldSeries( getDataSeries() );
- for( auto const & i : aOldSeries )
+ for( auto const & i : m_aDataSeries )
ModifyListenerHelper::removeListener( i, m_xModifyEventForwarder );
m_aDataSeries.clear();