diff options
Diffstat (limited to 'chart2/source/tools/RangeHighlighter.cxx')
-rw-r--r-- | chart2/source/tools/RangeHighlighter.cxx | 55 |
1 files changed, 17 insertions, 38 deletions
diff --git a/chart2/source/tools/RangeHighlighter.cxx b/chart2/source/tools/RangeHighlighter.cxx index 2ea659f7b708..1b2ae9153fcd 100644 --- a/chart2/source/tools/RangeHighlighter.cxx +++ b/chart2/source/tools/RangeHighlighter.cxx @@ -19,9 +19,11 @@ #include <RangeHighlighter.hxx> #include <WeakListenerAdapter.hxx> +#include <ChartModel.hxx> #include <ChartModelHelper.hxx> #include <DataSourceHelper.hxx> #include <ObjectIdentifier.hxx> +#include <DataSeries.hxx> #include <DataSeriesHelper.hxx> #include <Diagram.hxx> @@ -29,11 +31,10 @@ #include <com/sun/star/chart2/XAxis.hpp> #include <com/sun/star/chart2/XDataSeries.hpp> #include <com/sun/star/chart/ErrorBarStyle.hpp> -#include <com/sun/star/chart2/XChartDocument.hpp> #include <com/sun/star/drawing/XShape.hpp> #include <com/sun/star/view/XSelectionSupplier.hpp> #include <comphelper/sequence.hxx> -#include <tools/diagnose_ex.h> +#include <comphelper/diagnose_ex.hxx> #include <tools/color.hxx> using namespace ::com::sun::star; @@ -69,8 +70,9 @@ namespace chart { RangeHighlighter::RangeHighlighter( - const Reference< view::XSelectionSupplier > & xSelectionSupplier ) : - m_xSelectionSupplier( xSelectionSupplier ), + const rtl::Reference< ChartModel > & xChartModel ) : + m_xSelectionSupplier(xChartModel->getCurrentController(), uno::UNO_QUERY), + m_xChartModel( xChartModel ), m_nAddedListenerCount( 0 ), m_bIncludeHiddenCells(true) { @@ -88,17 +90,14 @@ Sequence< chart2::data::HighlightedRange > SAL_CALL RangeHighlighter::getSelecte void RangeHighlighter::determineRanges() { m_aSelectedRanges.realloc( 0 ); + if( !m_xChartModel.is()) + return; if( !m_xSelectionSupplier.is()) return; try { - Reference< frame::XController > xController( m_xSelectionSupplier, uno::UNO_QUERY ); - Reference< frame::XModel > xChartModel; - if( xController.is()) - xChartModel.set( xController->getModel()); - - m_bIncludeHiddenCells = ChartModelHelper::isIncludeHiddenCells( xChartModel ); + m_bIncludeHiddenCells = ChartModelHelper::isIncludeHiddenCells( m_xChartModel ); uno::Any aSelection( m_xSelectionSupplier->getSelection()); const uno::Type& rType = aSelection.getValueType(); @@ -113,7 +112,7 @@ void RangeHighlighter::determineRanges() { ObjectType eObjectType = ObjectIdentifier::getObjectType( aCID ); sal_Int32 nIndex = ObjectIdentifier::getIndexFromParticleOrCID( aCID ); - Reference< chart2::XDataSeries > xDataSeries( ObjectIdentifier::getDataSeriesForCID( aCID, xChartModel ) ); + rtl::Reference< DataSeries > xDataSeries( ObjectIdentifier::getDataSeriesForCID( aCID, m_xChartModel ) ); if( eObjectType == OBJECTTYPE_LEGEND_ENTRY ) { OUString aParentParticel( ObjectIdentifier::getFullParentParticle( aCID ) ); @@ -135,7 +134,7 @@ void RangeHighlighter::determineRanges() { // select error bar ranges, or data series, if the style is // not set to FROM_DATA - fillRangesForErrorBars( ObjectIdentifier::getObjectPropertySet( aCID, xChartModel ), xDataSeries ); + fillRangesForErrorBars( ObjectIdentifier::getObjectPropertySet( aCID, m_xChartModel ), xDataSeries ); return; } else if( xDataSeries.is() ) @@ -147,7 +146,7 @@ void RangeHighlighter::determineRanges() else if( eObjectType == OBJECTTYPE_AXIS ) { // Axis (Categories) - Reference< chart2::XAxis > xAxis( ObjectIdentifier::getObjectPropertySet( aCID, xChartModel ), uno::UNO_QUERY ); + Reference< chart2::XAxis > xAxis( ObjectIdentifier::getObjectPropertySet( aCID, m_xChartModel ), uno::UNO_QUERY ); if( xAxis.is()) { fillRangesForCategories( xAxis ); @@ -161,7 +160,7 @@ void RangeHighlighter::determineRanges() ) { // Diagram - rtl::Reference< ::chart::Diagram > xDia( ObjectIdentifier::getDiagramForCID( aCID, xChartModel ) ); + rtl::Reference< ::chart::Diagram > xDia( ObjectIdentifier::getDiagramForCID( aCID, m_xChartModel ) ); if( xDia.is()) { fillRangesForDiagram( xDia ); @@ -183,8 +182,7 @@ void RangeHighlighter::determineRanges() else { //if nothing is selected select all ranges - Reference< chart2::XChartDocument > xChartDoc( xChartModel, uno::UNO_QUERY_THROW ); - fillRangesForDiagram( xChartDoc->getFirstDiagram() ); + fillRangesForDiagram( m_xChartModel->getFirstChartDiagram() ); return; } } @@ -194,21 +192,6 @@ void RangeHighlighter::determineRanges() } } -void RangeHighlighter::fillRangesForDiagram( const Reference< chart2::XDiagram > & xDiagram ) -{ - Sequence< OUString > aSelectedRanges( DataSourceHelper::getUsedDataRanges( xDiagram )); - m_aSelectedRanges.realloc( aSelectedRanges.getLength()); - auto pSelectedRanges = m_aSelectedRanges.getArray(); - // @todo: merge ranges - for( sal_Int32 i=0; i<aSelectedRanges.getLength(); ++i ) - { - pSelectedRanges[i].RangeRepresentation = aSelectedRanges[i]; - pSelectedRanges[i].Index = -1; - pSelectedRanges[i].PreferredColor = sal_Int32(defaultPreferredColor); - pSelectedRanges[i].AllowMerginigWithOtherRanges = true; - } -} - void RangeHighlighter::fillRangesForDiagram( const rtl::Reference< Diagram > & xDiagram ) { Sequence< OUString > aSelectedRanges( DataSourceHelper::getUsedDataRanges( xDiagram )); @@ -280,19 +263,15 @@ void RangeHighlighter::fillRangesForCategories( const Reference< chart2::XAxis > defaultPreferredColor ); } -void RangeHighlighter::fillRangesForDataPoint( const Reference< uno::XInterface > & xDataSeries, sal_Int32 nIndex ) +void RangeHighlighter::fillRangesForDataPoint( const rtl::Reference< DataSeries > & xDataSeries, sal_Int32 nIndex ) { if( !xDataSeries.is()) return; - Reference< chart2::data::XDataSource > xSource( xDataSeries, uno::UNO_QUERY ); - if( !xSource.is() ) - return; - Color nPreferredColor = defaultPreferredColor; std::vector< chart2::data::HighlightedRange > aHilightedRanges; - const Sequence< Reference< chart2::data::XLabeledDataSequence > > aLSeqSeq( xSource->getDataSequences()); - for( Reference< chart2::data::XLabeledDataSequence > const & labelDataSeq : aLSeqSeq ) + const std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > & aLSeqSeq( xDataSeries->getDataSequences2()); + for( uno::Reference< chart2::data::XLabeledDataSequence > const & labelDataSeq : aLSeqSeq ) { Reference< chart2::data::XDataSequence > xLabel( labelDataSeq->getLabel()); Reference< chart2::data::XDataSequence > xValues( labelDataSeq->getValues()); |