chart2/source/controller/dialogs/DataBrowserModel.cxx |    4 +--
 chart2/source/inc/ExplicitCategoriesProvider.hxx      |    8 +++---
 chart2/source/tools/ExplicitCategoriesProvider.cxx    |   23 +++---------------
 chart2/source/tools/InternalDataProvider.cxx          |    4 +--
 4 files changed, 13 insertions(+), 26 deletions(-)

New commits:
commit c1c9071dd5f578c5773abc00553d2099cad30ced
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Thu Feb 10 11:24:07 2022 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Thu Feb 10 11:42:58 2022 +0100

    crashtesting ooo#ooo83229-2
    
    this reverts part of
      commit b314b5a0612c9dc7279039dae44a250d4d3ec6b1
      use more concrete types in chart2, DataSeries
    since writer uses it's own implementation of the XLabeledDataSequence
    UNO interface
    
    Change-Id: I52154dcee104ca17bfa63a3a8b11ef739cef147f
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129772
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/chart2/source/controller/dialogs/DataBrowserModel.cxx 
b/chart2/source/controller/dialogs/DataBrowserModel.cxx
index a0beacaa4955..f364bc8b8317 100644
--- a/chart2/source/controller/dialogs/DataBrowserModel.cxx
+++ b/chart2/source/controller/dialogs/DataBrowserModel.cxx
@@ -770,11 +770,11 @@ void DataBrowserModel::updateFromModel()
     {
         ExplicitCategoriesProvider aExplicitCategoriesProvider( 
ChartModelHelper::getFirstCoordinateSystem(m_xChartDocument), *m_xChartDocument 
);
 
-        const std::vector< rtl::Reference< LabeledDataSequence> >& 
rSplitCategoriesList = aExplicitCategoriesProvider.getSplitCategoriesList();
+        const std::vector< Reference< chart2::data::XLabeledDataSequence> >& 
rSplitCategoriesList = aExplicitCategoriesProvider.getSplitCategoriesList();
         sal_Int32 nLevelCount = rSplitCategoriesList.size();
         for( sal_Int32 nL = 0; nL<nLevelCount; nL++ )
         {
-            rtl::Reference< LabeledDataSequence > xCategories( 
rSplitCategoriesList[nL] );
+            Reference< chart2::data::XLabeledDataSequence > xCategories( 
rSplitCategoriesList[nL] );
             if( !xCategories.is() )
                 continue;
 
diff --git a/chart2/source/inc/ExplicitCategoriesProvider.hxx 
b/chart2/source/inc/ExplicitCategoriesProvider.hxx
index 56a637dbb91f..6b68f8d2dcc6 100644
--- a/chart2/source/inc/ExplicitCategoriesProvider.hxx
+++ b/chart2/source/inc/ExplicitCategoriesProvider.hxx
@@ -84,8 +84,8 @@ public:
     bool hasComplexCategories() const;
     sal_Int32 getCategoryLevelCount() const;
 
-    const std::vector< rtl::Reference<
-        ::chart::LabeledDataSequence> >& getSplitCategoriesList() const { 
return m_aSplitCategoriesList;}
+    const std::vector< css::uno::Reference< 
css::chart2::data::XLabeledDataSequence> >&
+            getSplitCategoriesList() const { return m_aSplitCategoriesList;}
 
     bool isDateAxis();
     const std::vector< double >&  getDateCategories();
@@ -97,12 +97,12 @@ private:
     bool volatile m_bDirty;
     unotools::WeakReference< ::chart::BaseCoordinateSystem >   m_xCooSysModel;
     ChartModel& mrModel;
-    rtl::Reference< ::chart::LabeledDataSequence> m_xOriginalCategories;
+    css::uno::Reference< css::chart2::data::XLabeledDataSequence> 
m_xOriginalCategories;
 
     bool m_bIsExplicitCategoriesInited;
     css::uno::Sequence< OUString >  m_aExplicitCategories;
     std::vector< std::vector< ComplexCategory > >   m_aComplexCats;
-    std::vector< rtl::Reference< ::chart::LabeledDataSequence> > 
m_aSplitCategoriesList;
+    std::vector< css::uno::Reference< css::chart2::data::XLabeledDataSequence> 
> m_aSplitCategoriesList;
 
     bool m_bIsDateAxis;
     bool m_bIsAutoDate;
diff --git a/chart2/source/tools/ExplicitCategoriesProvider.cxx 
b/chart2/source/tools/ExplicitCategoriesProvider.cxx
index 4f2a4aa35787..c89c91544e23 100644
--- a/chart2/source/tools/ExplicitCategoriesProvider.cxx
+++ b/chart2/source/tools/ExplicitCategoriesProvider.cxx
@@ -49,17 +49,6 @@ using ::com::sun::star::uno::Reference;
 using ::com::sun::star::uno::Sequence;
 using std::vector;
 
-static std::vector< rtl::Reference< LabeledDataSequence> > 
lcl_toLabeledDataSequence(const Sequence< Reference< 
data::XLabeledDataSequence> > & rSeq)
-{
-    std::vector<rtl::Reference< LabeledDataSequence>> aRes(rSeq.getLength());
-    for (sal_Int32 i=0; i<rSeq.getLength(); ++i)
-    {
-        aRes[i] = dynamic_cast<LabeledDataSequence*>(rSeq[i].get());
-        assert(aRes[i]);
-    }
-    return aRes;
-}
-
 ExplicitCategoriesProvider::ExplicitCategoriesProvider( const rtl::Reference< 
BaseCoordinateSystem >& xCooSysModel
                                                        , ChartModel& rModel )
     : m_bDirty(true)
@@ -78,8 +67,7 @@ ExplicitCategoriesProvider::ExplicitCategoriesProvider( const 
rtl::Reference< Ba
             if( xAxis.is() )
             {
                 ScaleData aScale( xAxis->getScaleData() );
-                m_xOriginalCategories = 
dynamic_cast<LabeledDataSequence*>(aScale.Categories.get());
-                assert(m_xOriginalCategories || !aScale.Categories);
+                m_xOriginalCategories = aScale.Categories;
                 m_bIsAutoDate = (aScale.AutoDateAxis && 
aScale.AxisType==chart2::AxisType::CATEGORY);
                 m_bIsDateAxis = (aScale.AxisType == chart2::AxisType::DATE || 
m_bIsAutoDate);
             }
@@ -128,9 +116,9 @@ ExplicitCategoriesProvider::ExplicitCategoriesProvider( 
const rtl::Reference< Ba
                                     aStringDummy, aSeqDummy, 
bSeriesUsesColumns, bDummy, bDummy );
                         }
                         if( bSeriesUsesColumns )
-                            m_aSplitCategoriesList = 
lcl_toLabeledDataSequence(aColumns);
+                            m_aSplitCategoriesList = 
comphelper::sequenceToContainer<std::vector<Reference<data::XLabeledDataSequence>>>(aColumns);
                         else
-                            m_aSplitCategoriesList = 
lcl_toLabeledDataSequence(aRows);
+                            m_aSplitCategoriesList = 
comphelper::sequenceToContainer<std::vector<Reference<data::XLabeledDataSequence>>>(aRows);
                     }
                 }
             }
@@ -237,8 +225,7 @@ class SplitCategoriesProvider_ForLabeledDataSequences : 
public SplitCategoriesPr
 public:
 
     explicit SplitCategoriesProvider_ForLabeledDataSequences(
-        const std::vector<
-            rtl::Reference< LabeledDataSequence> >& rSplitCategoriesList
+        const std::vector< Reference< data::XLabeledDataSequence> >& 
rSplitCategoriesList
         , ChartModel& rModel )
         : m_rSplitCategoriesList( rSplitCategoriesList )
         , mrModel( rModel )
@@ -248,7 +235,7 @@ public:
     virtual uno::Sequence< OUString > getStringsForLevel( sal_Int32 nIndex ) 
const override;
 
 private:
-    const std::vector< rtl::Reference< LabeledDataSequence> >& 
m_rSplitCategoriesList;
+    const std::vector< Reference< data::XLabeledDataSequence> >& 
m_rSplitCategoriesList;
 
     ChartModel& mrModel;
 };
diff --git a/chart2/source/tools/InternalDataProvider.cxx 
b/chart2/source/tools/InternalDataProvider.cxx
index 9bab0b5ddd64..ffbfebe10522 100644
--- a/chart2/source/tools/InternalDataProvider.cxx
+++ b/chart2/source/tools/InternalDataProvider.cxx
@@ -339,11 +339,11 @@ InternalDataProvider::InternalDataProvider(
                 {
                     ExplicitCategoriesProvider 
aExplicitCategoriesProvider(ChartModelHelper::getFirstCoordinateSystem(xModel), 
*xModel);
 
-                    const std::vector< rtl::Reference< LabeledDataSequence> >& 
rSplitCategoriesList( aExplicitCategoriesProvider.getSplitCategoriesList() );
+                    const std::vector< Reference< 
chart2::data::XLabeledDataSequence> >& rSplitCategoriesList( 
aExplicitCategoriesProvider.getSplitCategoriesList() );
                     sal_Int32 nLevelCount = rSplitCategoriesList.size();
                     for( sal_Int32 nL = 0; nL<nLevelCount; nL++ )
                     {
-                        rtl::Reference< LabeledDataSequence > xLDS( 
rSplitCategoriesList[nL] );
+                        Reference< chart2::data::XLabeledDataSequence > xLDS( 
rSplitCategoriesList[nL] );
                         if( !xLDS.is() )
                             continue;
                         Sequence< uno::Any > aDataSeq;

Reply via email to