summaryrefslogtreecommitdiff
path: root/xmloff/source/chart/SchXMLChartContext.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'xmloff/source/chart/SchXMLChartContext.cxx')
-rw-r--r--xmloff/source/chart/SchXMLChartContext.cxx63
1 files changed, 9 insertions, 54 deletions
diff --git a/xmloff/source/chart/SchXMLChartContext.cxx b/xmloff/source/chart/SchXMLChartContext.cxx
index 9df601407199..2a19d2949ff9 100644
--- a/xmloff/source/chart/SchXMLChartContext.cxx
+++ b/xmloff/source/chart/SchXMLChartContext.cxx
@@ -63,7 +63,6 @@
#include <com/sun/star/drawing/FillStyle.hpp>
#include <com/sun/star/chart2/XChartDocument.hpp>
-#include <com/sun/star/chart2/XChartTypeTemplate.hpp>
#include <com/sun/star/chart2/data/XDataSink.hpp>
#include <com/sun/star/chart2/XDataSeriesContainer.hpp>
#include <com/sun/star/chart2/XCoordinateSystemContainer.hpp>
@@ -78,48 +77,6 @@ using namespace ::SchXMLTools;
namespace
{
-uno::Reference< chart2::XChartTypeTemplate > lcl_getTemplate( const uno::Reference< chart2::XChartDocument > & xDoc )
-{
- uno::Reference< chart2::XChartTypeTemplate > xResult;
- try
- {
- if( !xDoc.is())
- return xResult;
- uno::Reference< lang::XMultiServiceFactory > xChartTypeManager( xDoc->getChartTypeManager(), uno::UNO_QUERY );
- if( !xChartTypeManager.is())
- return xResult;
- uno::Reference< chart2::XDiagram > xDiagram( xDoc->getFirstDiagram());
- if( !xDiagram.is())
- return xResult;
-
- uno::Sequence< ::rtl::OUString > aServiceNames( xChartTypeManager->getAvailableServiceNames());
- const sal_Int32 nLength = aServiceNames.getLength();
-
- for( sal_Int32 i = 0; i < nLength; ++i )
- {
- try
- {
- uno::Reference< chart2::XChartTypeTemplate > xTempl(
- xChartTypeManager->createInstance( aServiceNames[ i ] ), uno::UNO_QUERY_THROW );
-
- if( xTempl->matchesTemplate( xDiagram, sal_True ))
- {
- xResult.set( xTempl );
- break;
- }
- }
- catch( uno::Exception & )
- {
- DBG_ERROR( "Exception during determination of chart type template" );
- }
- }
- }
- catch( uno::Exception & )
- {
- DBG_ERROR( "Exception during import lcl_getTemplate" );
- }
- return xResult;
-}
void lcl_setRoleAtLabeledSequence(
const uno::Reference< chart2::data::XLabeledDataSequence > & xLSeq,
@@ -685,10 +642,6 @@ void lcl_ApplyDataFromRectangularRangeToDiagram(
if( !xNewDia.is() || !xDataProvider.is() )
return;
- uno::Reference< chart2::XChartTypeTemplate > xTemplate( lcl_getTemplate( xNewDoc ));
- if(!xTemplate.is())
- return;
-
sal_Bool bFirstCellAsLabel =
(eDataRowSource==chart::ChartDataRowSource_COLUMNS)? bRowHasLabels : bColHasLabels;
sal_Bool bHasCateories =
@@ -754,13 +707,17 @@ void lcl_ApplyDataFromRectangularRangeToDiagram(
uno::Reference< chart2::data::XDataSource > xDataSource(
xDataProvider->createDataSource( aArgs ));
- aArgs.realloc( aArgs.getLength() + 1 );
- aArgs[ aArgs.getLength() - 1 ] = beans::PropertyValue(
+ aArgs.realloc( aArgs.getLength() + 2 );
+ aArgs[ aArgs.getLength() - 2 ] = beans::PropertyValue(
::rtl::OUString::createFromAscii("HasCategories"),
-1, uno::makeAny( bHasCateories ),
beans::PropertyState_DIRECT_VALUE );
+ aArgs[ aArgs.getLength() - 1 ] = beans::PropertyValue(
+ ::rtl::OUString::createFromAscii("UseCategoriesAsX"),
+ -1, uno::makeAny( sal_False ),//categories in ODF files are not to be used as x values (independent from what is offered in our ui)
+ beans::PropertyState_DIRECT_VALUE );
- xTemplate->changeDiagramData( xNewDia, xDataSource, aArgs );
+ xNewDia->setDiagramData( xDataSource, aArgs );
}
void SchXMLChartContext::EndElement()
@@ -810,8 +767,7 @@ void SchXMLChartContext::EndElement()
// cleanup: remove empty chart type groups
lcl_removeEmptyChartTypeGroups( xNewDoc );
- // set stack mode before a potential template detection (in case we have a
- // rectangular range)
+ // set stack mode before a potential chart type detection (in case we have a rectangular range)
uno::Reference< chart::XDiagram > xDiagram( xDoc->getDiagram() );
uno::Reference< beans::XPropertySet > xDiaProp( xDiagram, uno::UNO_QUERY );
if( xDiaProp.is())
@@ -890,8 +846,7 @@ void SchXMLChartContext::EndElement()
{
//apply data from rectangular range
- // create datasource from data provider with rectangular range
- // parameters and change the diagram via template mechanism
+ // create datasource from data provider with rectangular range parameters and change the diagram setDiagramData
try
{
if( bOlderThan2_3 && xDiaProp.is() )//for older charts the hidden cells were removed by calc on the fly