summaryrefslogtreecommitdiff
path: root/chart2/source/tools/DataSourceHelper.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'chart2/source/tools/DataSourceHelper.cxx')
-rw-r--r--chart2/source/tools/DataSourceHelper.cxx28
1 files changed, 27 insertions, 1 deletions
diff --git a/chart2/source/tools/DataSourceHelper.cxx b/chart2/source/tools/DataSourceHelper.cxx
index 4c9690fc6054..ccbbc286b142 100644
--- a/chart2/source/tools/DataSourceHelper.cxx
+++ b/chart2/source/tools/DataSourceHelper.cxx
@@ -327,6 +327,32 @@ uno::Reference< chart2::data::XDataSource > DataSourceHelper::getUsedData(
new DataSource( ContainerHelper::ContainerToSequence( aResult )));
}
+uno::Reference< chart2::data::XDataSource > DataSourceHelper::getUsedData(
+ ChartModel& rModel )
+{
+ ::std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > aResult;
+
+ uno::Reference< XDiagram > xDiagram( rModel.getFirstDiagram() );
+ uno::Reference< data::XLabeledDataSequence > xCategories( DiagramHelper::getCategoriesFromDiagram( xDiagram ) );
+ if( xCategories.is() )
+ aResult.push_back( xCategories );
+
+ ::std::vector< uno::Reference< XDataSeries > > aSeriesVector( ChartModelHelper::getDataSeries( rModel ) );
+ for( ::std::vector< uno::Reference< XDataSeries > >::const_iterator aSeriesIt( aSeriesVector.begin() )
+ ; aSeriesIt != aSeriesVector.end(); ++aSeriesIt )
+ {
+ uno::Reference< data::XDataSource > xDataSource( *aSeriesIt, uno::UNO_QUERY );
+ if( !xDataSource.is() )
+ continue;
+ uno::Sequence< uno::Reference< data::XLabeledDataSequence > > aDataSequences( xDataSource->getDataSequences() );
+ ::std::copy( aDataSequences.getConstArray(), aDataSequences.getConstArray() + aDataSequences.getLength(),
+ ::std::back_inserter( aResult ));
+ }
+
+ return uno::Reference< chart2::data::XDataSource >(
+ new DataSource( ContainerHelper::ContainerToSequence( aResult )));
+}
+
bool DataSourceHelper::detectRangeSegmentation(
const uno::Reference<
frame::XModel >& xChartModel
@@ -445,7 +471,7 @@ void DataSourceHelper::setRangeSegmentation(
if( !xDataSource.is() )
return;
- ControllerLockGuard aCtrlLockGuard( xChartModel );
+ ControllerLockGuardUNO aCtrlLockGuard( xChartModel );
xDiagram->setDiagramData( xDataSource, aArguments );
}